High availability is a software design approach and implementation that ensures a prearranged level of operational performance will be met during a contractual measurement period.
Attributes of high availability (HA):
- Maximum uptime
- Online maintenance - With little or no service interruption.
- Simplicity - Complexity is an enemy of reliability, and encourages operator error, and so it is best avoided (e.g., Does a particular use-case really require the burden of implementing HA?).
Approaches that increase availability:
- Fault-tolerance: Duplicate services waiting to take over should the primary fail or become unreachable.
- Active/Active +Enables load-balancing -More complicated
- Active/Passive +Simpler -Does not increase load capacity.
- Replication:
- Synchronous +Safer -Slow over longer distances.
- The "C" in CAP Theorem.
- Asynchronous +Faster -Possibility of data loss
- The "A" in CAP Theorem.
- Synchronous +Safer -Slow over longer distances.
- Graceful degradation: Rate limiting and client throttling.