As a web user, you type in a URL in the address bar and click “enter.” The website you wanted appears, and you begin to read. Simple, right? You click on a few items, add them to a shopping cart, and then pay with a credit card. Gosh, it’s all so easy.
The systems we design online seem basic on the outside, but behind the scenes, they are anything but simple. Many people have no idea how interconnected web systems and technologies are.
Our Web Systems
In this case, a system is an interdependent group of services working together as a whole. For example, many websites use a single server and database to manage the information. Many line-of-business applications have a single server and database, too. However, these web systems and technologies are fragile and require a large number of hours to maintain.
A single server system is simple: it is one computer serving multiple users. However, what if that number of users is many thousands or even millions? Then, the single server is insufficient. The server will become bogged down with requests and eventually stop working.
Now, what is there are only a few users, but the server has other problems? In that case, users are no longer able to access the service. They might visit a website only to find it “down.”
This is why modern software is developed to be distributed. Programs consist of multiple servers, databases, third-party API’s, and interfaces. By creating a system of systems, one can support more users. More importantly, one can have redundancy so that the failure of one component does not stop the system.
This reminds us of the history of the Internet. As you may have learned in school, the idea was to spread out the system so that it wouldn’t have one central location to target. We find this in other areas as well, such as electrical power. A hospital relies on electricity, but has backup generators in case of failure.
How it Works – a Simple Explanation
Modern websites consist of a group of servers behind a load balancer. When a request comes in, it goes to the load balancer. The balancer determines which of the servers has the most resources available and directs the request to that server. This web server connects to a database or, in some instances, a cache layer that is a copy of the actual database. To load all the images, the web server has to access a separate server or service that contains static images and is cached between many servers across a diverse geographic range. This way users in Japan see images stored closest to them while those in New York view images loaded from a server closer to their home.
Now, let’s add payment processing. Now your website must access a third-party API (Application Programming Interface), which is a complex system obscured by a set of endpoints and simple instructions to make things happen.
Does your website need a search function? You need another set of servers designed to crawl and access data based upon search requests. These servers must also include algorithms designed to know someone’s intent.
Next, we need to ensure the system remains functioning in the face of a near-infinite set of circumstances. In the past, companies had web servers sitting on a desk in the office. If the power went out, then the website went down. Today, most companies use a third-party hosting provider so that the webserver has battery and generator backup. Now many are going even further and copy their website over a dispersed geographic area so that even regional disaster does not stop their website from working.
Failure is Inevitable
The idea behind these complex systems is to prevent collapse. But this often gives people a false sense of security. Sooner or later, any system will fail in one way or another. The very layers that assure us create more points at which we can experience problems. However, these layers also tend to cover up problems. In such systems, there is not one single thing that brings the system down. Rather, it’s a slow build of small, seemingly little failures over time that leads to a problem. In some cases, you can even experience cascading failures, when one system’s problem causes other problems.
Why Business Owners Care
Anyone whose business operates on these systems must realize the inevitable and create a backup plan for failure. Remember practicing fire drills in school? You do that so when the real deal happens, everyone knows how to respond.
As one blogger puts it, “complacency is the enemy of resilience.” If your business relies on a series of systems:
- Know your risk
- Know how much risk you’re willing to tolerate
- Implement strong monitoring systems {Natalia – link to our Continuity post on this if possible}
- Create a plan for every failure you can think of (this won’t cover them all, but it’s a start)
- Create an action plan both for management and your team so that people know what to do when things go wrong
- Be mentally prepared for failure
Talk to us about your systems and how to create a backup plan.
Book A Consultation
Book a meeting with one of our team members and we will help you plan out your next steps. You can also use our calculator tool to receive a rough estimate on your project.