
Understanding high availability
High availability is an architectural design approach and associated service implementation that is used to guarantee the reliability of a service. Availability is directly associated with the uptime and usability of a service. This means that the downtime should be reduced to achieve an agreement on that service.
We can distinguish between two kinds of downtimes:
To distinguish between scheduled downtimes, we can include:
- System patching
- Hardware expansion or hardware replacement
- Software maintenance
- All that is normally a planned maintenance task
Unfortunately, all these downtimes will interrupt your service, but you have to agree that they can be planned into a maintenance window that is agreed upon.
The unexpected downtime normally arises from a failure, and it can be caused by one of the following reasons:
- Human error
- Hardware failure
- Software failure
- Physical events
Unscheduled downtimes also include power outages and high-temperature shutdown, and all these are not planned; however, they cause an outage. Hardware and software failure are quite easy to understand, whereas a physical event is an external event that produces an outage on our infrastructure. A practical example can be an outage that can be caused by lightning or a flood that leads to the breakdown of the electrical line with consequences on our infrastructure. The availability of a service is considered from the service user's point of view; for example, if we are monitoring a web application, we need to consider this application from the web user's point of view. This means that if all your servers are up and running, but a firewall is cutting connections and the service is not accessible, this service cannot be considered available.