diff --git a/README.md b/README.md index 54edffa1..5e068e7d 100644 --- a/README.md +++ b/README.md @@ -112,6 +112,7 @@ Review the [Contributing Guidelines](CONTRIBUTING.md). * [Availability patterns](#availability-patterns) * [Fail-over](#fail-over) * [Replication](#replication) + * [Availability in numbers](#availability-in-numbers) * [Domain name system](#domain-name-system) * [Content delivery network](#content-delivery-network) * [Push CDNs](#push-cdns) @@ -527,6 +528,52 @@ This topic is further discussed in the [Database](#database) section: * [Master-slave replication](#master-slave-replication) * [Master-master replication](#master-master-replication) +### Availability in numbers + +Availability is often quantified by uptime (or downtime) as a percentage of time the service is available. Availability is generally measured in number of 9s--a service with 99.99% availability is described as having four 9s. + +#### 99.9% availability - three 9s + +| Duration | Acceptable downtime| +|---------------------|--------------------| +| Downtime per year | 8h 45min 57s | +| Downtime per month | 43m 49.7s | +| Downtime per week | 10m 4.8s | +| Downtime per day | 1m 26.4s | + +#### 99.99% availability - four 9s + +| Duration | Acceptable downtime| +|---------------------|--------------------| +| Downtime per year | 52min 35.7s | +| Downtime per month | 4m 23s | +| Downtime per week | 1m 5s | +| Downtime per day | 8.6s | + +#### Availability in parallel vs in sequence + +If a service consists of multiple components prone to failure, the service's overall availability depends on whether the components are in sequence or in parallel. + +###### In sequence + +Overall availability decreases when two components with availability < 100% are in sequence: + +``` +Availability (Total) = Availability (Foo) * Availability (Bar) +``` + +If both `Foo` and `Bar` each had 99.9% availability, their total availability in sequence would be 99.8%. + +###### In parallel + +Overall availability increases when two components with availability < 100% are in parallel: + +``` +Availability (Total) = 1 - (1 - Availability (Foo)) * (1 - Availability (Bar)) +``` + +If both `Foo` and `Bar` each had 99.9% availability, their total availability in parallel would be 99.9999%. + ## Domain name system