As customers of a web hosting company, we expect our websites to be constantly available 24 hours per day, 7 days per week, 365 days per year. Our website visitors expect this too - especially if they're paying customers.
Availability is one of the biggest challenges for hosting providers. In an ideal world, all websites would be available 100% of the time. There would be no downtime - ever.
In reality, 100% availability is a big ask for any hosting provider. There's always a small chance something could go wrong. Hosting providers rely on many factors - some of which may be out of their control. A good hosting provider will spend millions of dollars on their attempts to provide availability, but even then, they may still only be able to offer say, 99.999% availability.
Lets look at some of the things that could impact on availability:
- Hardware failure (for example, faulty RAM)
- Software failure
- Virus infection
- Denial of Service (DOS) attack
- Network security is compromised (for example, an unauthorised hacker has gained access and decides to do some damage)
- Internet backbone link becomes unavailable
- Power outage
- Natural disaster (for example, earthquake, flood, hurricane)
- Terroist attack
- Customer's code is inefficient (or just plain wrong!)
- And plenty more...
A good hosting provider will have systems in place to mitigate these risks.
For example, they will have multiple sources of power, from multiple suppliers. They will also have diesel generators in place, just in case all suppliers have a problem. They may even have backup diesel generators, just in case the first ones fail. They will ensure that they have many days/weeks worth of diesel. And, they will have an arrangement with a local diesel supplier, just in case they run out of diesel!
The above scenario is an example of fault tolerance. Fault tolerance means to ensure the availability of a network resource even when there's a major problem. A power outage is just one of the many things that can go wrong.
Hosting providers achieve fault tolerance through redundancy. Redundancy generally refers to having an exact replica of a network resource, ready to go in case the other one fails. Furthermore, there can be no downtime between the first one failing and the second one coming online. For example, a website could be hosted across two servers - each being mirrors of the other. If one server becomes unavailable, a load balancer will detect this and switch all traffic to the other server. The website users won't even know it happened.
In a hosting environment, there are many network devices. There are DNS servers, routers, firewalls, load balancers and more. A good hosting provider will ensure that there are at least two of each of these.
This is fine, but what if you are renting a dedicated server? To provide redundancy, you would need to rent two dedicated servers instead of one. This would effectively double your costs. And how would you ensure content is exactly the same on both computers? You would need some form of replication to keep them in synch. And how would the system know which computer to direct the traffic to? You would need a load balancer - or should we make that two load balancers? And what if you had a dedicated database server...?
So you can see that providing availability can get very expensive. At some point, you need to weigh up the impact of occasional downtime with the cost of availability.
You might decide to wear the risk and verify that your hosting provider has processes in place to get your website back online ASAP in the event of downtime.
Most hosting providers guarantee a certain level of availability. For example, one provider might guarantee 99.8% and another one might guarantee 99.999%. Whether they can keep to their promise is another thing.
A good hosting provider will compensate its customers if it drops below the agreed availability.
You should hold your hosting provider accountable for keeping their availability promise, whether its 99.8% or 99.999% availability. If availability drops below the promised percentage, you should make sure you receive compensation. This might be in the form of re-imbursement, or a credit against your account. If you don't receive compensation, consider taking your business elsewhere.
Of course, availability and compensation needs to be agreed in advance between you and your hosting provider. A good hosting provider will have all this outlined in their standard hosting agreement. However, depending on the size of your business, you might require a separate agreement.
You should be proactive in monitoring your hosting provider's performance. Don't just let them tell you how well they did, find out for yourself.
Now, by saying this, I'm not suggesting that you sit at your computer 24/7, hitting the refresh button, waiting for your website to go down! There are other, more efficient, ways of monitoring your website's availability.
The next lesson explains a better way of monitoring your website.