parent: Systems Design


Availability: The guarantee that the system always runs well, regardless of what happens to the nodes behind the scenes.

Availability = system uptime

The formula for availability is actual uptime / expected uptime.

expected uptime = 24*operationaldays
availability% = (uptime - downtime) / expected uptime

The golden standard for availability in the industry is “The five 9’s” which is 99.999% availability (only 5m downtime/year!). Achieving this number should be the goal for all architects creating a highly available system.

Other availability numbers: Four 9’s (99.99%) = 52m downtime/year Three 9’s (99.9%) = 8h 45m downtime/year

although not all systems should have availablity as their main goal, read CAP Theorem

You create a highly available system by implementing redundancy, fail-overs, or graceful degradation. The point being, any degradation of individual nodes in a system should not compromise the system in its entirety.

You can achieve high availability by implementing the following principles:

  1. Faul-tolerance
  2. Reliability
  3. System Resiliency Learn more in Availability Patterns

Systems Design High Level Tradeoffs

Resources:

System Design Concepts Course and Interview Prep