When designing any system for high availability, a number of questions/concerns are typically addressed, such as the following:
- What types of failures should a system be able to sustain?
- How many failures should a system be able to sustain?
- What steps (manual or automatic) need to be executed to ensure availability?
- What systems or processes can we put in place to avoid interruptions in the first place?
These types of questions speak to the concept of dependability. A dependable system is one that is available to service a request and is able to continue serving requests despite failures of the component architecture (such as a server or network device) or supporting services (such as electricity). Dependability has six core attributes:
- Availability: Measures the system's readiness to accept and respond to new requests for service
- Reliability: Measures how a system can continue to operate after an unexpected event
- Safety: Measures a system&apos...