From bb7ccc6bc051923f203e1c703b27f3f2bc47ac20 Mon Sep 17 00:00:00 2001 From: minhaz Date: Sun, 25 Nov 2018 05:08:04 +0530 Subject: [PATCH 1/9] Added information about availability, quantification and sequence vs parallel changes --- README.md | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/README.md b/README.md index dca795543ec..f6834bbc0bb 100644 --- a/README.md +++ b/README.md @@ -527,6 +527,53 @@ 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 generally quanitifed with terms like uptime and downtime as percentage of time the service guarenteed was available or not respectively. This is popularly measured in number of 9s, for example as 99.9% or 99.99% availability is described as three 9s of availability and 4 9s respectively. + +Here's what the numer transaltes to with respect to uptime: + +#### 99.9% Availability - 3 Nines +| 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 - 4 Nines +| 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 sequence +If your service consists of multiple entites prone to failure your composite availability changes depending upon if they are connected in sequence or parallel. + +![Sequence vs Parallel](https://imgur.com/a/RjaSUvX) + +#### Connected in Sequence +The overall availability decreases when two components with availability < 100% are connected in sequence. For two components `Foo` and `Bar` connected in sequence, the total availability comes out to be: + +``` +Availability (Total) = Availability (Foo) * Availability (Bar) +``` + +Given that Foo and Bar are independent, it's their probablity to be up together. + +For two components with `99.9%` availability, total availability in sequence comes out to be `99.8%`. + +#### Connected in Parallel +The overall availability increases when two components with availability < 100% are connected in parallel. For two components `Foo` and `Bar` connected in parallel, the total availability comes out to be: + +``` +Availability (Total) = (1 - Availability (Foo)) * (1- Availability (Bar)) +``` + +Given that Foo and Bar are independent, it's the probablity atlease one of them to be available at any given moment of time. + +For two components with `99.9%` availability, total availability in parallel comes out to be `99.9999%`. + + ## Domain name system

From 19d0c6c753c1fb9d2d6067e814625f7f31d510ad Mon Sep 17 00:00:00 2001 From: minhaz Date: Sun, 25 Nov 2018 08:17:38 +0530 Subject: [PATCH 2/9] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f6834bbc0bb..cf344357c7e 100644 --- a/README.md +++ b/README.md @@ -549,7 +549,7 @@ Here's what the numer transaltes to with respect to uptime: ### Availability in parallel vs sequence If your service consists of multiple entites prone to failure your composite availability changes depending upon if they are connected in sequence or parallel. -![Sequence vs Parallel](https://imgur.com/a/RjaSUvX) +![Sequence vs Parallel](https://i.imgur.com/ZHNo49M.png) #### Connected in Sequence The overall availability decreases when two components with availability < 100% are connected in sequence. For two components `Foo` and `Bar` connected in sequence, the total availability comes out to be: From d8b17805a4501af30bc7c0b2d0014b379cbc5987 Mon Sep 17 00:00:00 2001 From: minhaz Date: Sun, 6 Jan 2019 19:17:03 +0530 Subject: [PATCH 3/9] Math corrected on availability in parallel as per PR comment --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cf344357c7e..16a0846e581 100644 --- a/README.md +++ b/README.md @@ -566,7 +566,7 @@ For two components with `99.9%` availability, total availability in sequence com The overall availability increases when two components with availability < 100% are connected in parallel. For two components `Foo` and `Bar` connected in parallel, the total availability comes out to be: ``` -Availability (Total) = (1 - Availability (Foo)) * (1- Availability (Bar)) +Availability (Total) = 1 - (1 - Availability (Foo)) * (1- Availability (Bar)) ``` Given that Foo and Bar are independent, it's the probablity atlease one of them to be available at any given moment of time. From 413f97c177694d57a6744d3936bf886e12140654 Mon Sep 17 00:00:00 2001 From: minhaz Date: Tue, 12 Mar 2019 19:05:53 +0530 Subject: [PATCH 4/9] typo fixes as suggested in PR --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 16a0846e581..fe1451ffe25 100644 --- a/README.md +++ b/README.md @@ -528,9 +528,9 @@ This topic is further discussed in the [Database](#database) section: * [Master-master replication](#master-master-replication) ### Availability in numbers -Availability is generally quanitifed with terms like uptime and downtime as percentage of time the service guarenteed was available or not respectively. This is popularly measured in number of 9s, for example as 99.9% or 99.99% availability is described as three 9s of availability and 4 9s respectively. +Availability is generally quantifed with terms like uptime and downtime as percentage of time the service guarenteed was available or not respectively. This is popularly measured in number of 9s, for example as 99.9% or 99.99% availability is described as three 9s of availability and 4 9s respectively. -Here's what the numer transaltes to with respect to uptime: +Here's what the numbers translate to with respect to uptime: #### 99.9% Availability - 3 Nines | Downtime Per year | 8h 45min 57s | From ec298e3de41b161985c929745529e9d7de917cb8 Mon Sep 17 00:00:00 2001 From: minhaz Date: Tue, 12 Mar 2019 19:09:23 +0530 Subject: [PATCH 5/9] typo fix, and header added to table --- README.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index fe1451ffe25..48954c734cf 100644 --- a/README.md +++ b/README.md @@ -528,20 +528,22 @@ This topic is further discussed in the [Database](#database) section: * [Master-master replication](#master-master-replication) ### Availability in numbers -Availability is generally quantifed with terms like uptime and downtime as percentage of time the service guarenteed was available or not respectively. This is popularly measured in number of 9s, for example as 99.9% or 99.99% availability is described as three 9s of availability and 4 9s respectively. +Availability is generally quantified with terms like uptime and downtime as percentage of time the service guarenteed was available or not respectively. This is popularly measured in number of 9s, for example as 99.9% or 99.99% availability is described as three 9s of availability and 4 9s respectively. Here's what the numbers translate to with respect to uptime: #### 99.9% Availability - 3 Nines -| Downtime Per year | 8h 45min 57s | +| 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 - 4 Nines -| Downtime Per year | 52min 35.7s | +| Duration | Acceptable Downtime| |---------------------|---------------| +| Downtime Per year | 52min 35.7s | | Downtime Per month | 4m 23s | | Downtime Per week | 1m 5s | | Downtime Per day | 8.6s | From 080a7544069112ccfff5cb22c64863064d6af635 Mon Sep 17 00:00:00 2001 From: Donne Martin Date: Sun, 12 May 2019 07:04:22 -0400 Subject: [PATCH 6/9] Update README.md --- README.md | 66 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 34 insertions(+), 32 deletions(-) diff --git a/README.md b/README.md index 48954c734cf..d4f8f9a915c 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) @@ -399,7 +400,9 @@ Next, we'll look at high-level trade-offs: * **Performance** vs **scalability** * **Latency** vs **throughput** -* **Availability** vs **consistency** +* ** + +bility** vs **consistency** Keep in mind that **everything is a trade-off**. @@ -528,53 +531,52 @@ This topic is further discussed in the [Database](#database) section: * [Master-master replication](#master-master-replication) ### Availability in numbers -Availability is generally quantified with terms like uptime and downtime as percentage of time the service guarenteed was available or not respectively. This is popularly measured in number of 9s, for example as 99.9% or 99.99% availability is described as three 9s of availability and 4 9s respectively. - -Here's what the numbers translate to with respect to uptime: - -#### 99.9% Availability - 3 Nines -| 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 - 4 Nines -| 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 is generally quantified by uptime (or downtime) as a percentage of time the service is guaranteed to be available. Availability is often 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 sequence -If your service consists of multiple entites prone to failure your composite availability changes depending upon if they are connected in sequence or parallel. + +If a service consists of multiple components prone to failure, the service's overall availability depends on whether the components are connected in sequence or in parallel. ![Sequence vs Parallel](https://i.imgur.com/ZHNo49M.png) -#### Connected in Sequence -The overall availability decreases when two components with availability < 100% are connected in sequence. For two components `Foo` and `Bar` connected in sequence, the total availability comes out to be: +##### Connected in Sequence + +Overall availability decreases when two components with availability < 100% are connected in sequence: ``` Availability (Total) = Availability (Foo) * Availability (Bar) ``` -Given that Foo and Bar are independent, it's their probablity to be up together. +If both `Foo` and `Bar` each had 99.9% availability, their total availability in sequence would be 99.8%. -For two components with `99.9%` availability, total availability in sequence comes out to be `99.8%`. +##### Connected in Parallel -#### Connected in Parallel -The overall availability increases when two components with availability < 100% are connected in parallel. For two components `Foo` and `Bar` connected in parallel, the total availability comes out to be: +Overall availability increases when two components with availability < 100% are connected in parallel: ``` -Availability (Total) = 1 - (1 - Availability (Foo)) * (1- Availability (Bar)) +Availability (Total) = 1 - (1 - Availability (Foo)) * (1 - Availability (Bar)) ``` -Given that Foo and Bar are independent, it's the probablity atlease one of them to be available at any given moment of time. - -For two components with `99.9%` availability, total availability in parallel comes out to be `99.9999%`. - +If both `Foo` and `Bar` each had 99.9% availability, their total availability in parallel would be 99.9999%. ## Domain name system From d1ed682915e534c827058959e1df919888953b26 Mon Sep 17 00:00:00 2001 From: Donne Martin Date: Sun, 12 May 2019 07:12:33 -0400 Subject: [PATCH 7/9] Update README.md --- README.md | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index d4f8f9a915c..0b6ff3224af 100644 --- a/README.md +++ b/README.md @@ -400,9 +400,7 @@ Next, we'll look at high-level trade-offs: * **Performance** vs **scalability** * **Latency** vs **throughput** -* ** - -bility** vs **consistency** +* **Availability** vs **consistency** Keep in mind that **everything is a trade-off**. @@ -532,7 +530,7 @@ This topic is further discussed in the [Database](#database) section: ### Availability in numbers -Availability is generally quantified by uptime (or downtime) as a percentage of time the service is guaranteed to be available. Availability is often measured in number of 9s. A service with 99.99% availability is described as having four 9s. +Availability is generally quantified by uptime (or downtime) as a percentage of time the service is available. Availability is often measured in number of 9s--a service with 99.99% availability is described as having four 9s. #### 99.9% availability - three 9s @@ -552,13 +550,11 @@ Availability is generally quantified by uptime (or downtime) as a percentage of | Downtime per week | 1m 5s | | Downtime per day | 8.6s | -### Availability in parallel vs sequence +#### 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 connected in sequence or in parallel. -![Sequence vs Parallel](https://i.imgur.com/ZHNo49M.png) - -##### Connected in Sequence +###### Connected in Sequence Overall availability decreases when two components with availability < 100% are connected in sequence: @@ -568,7 +564,7 @@ 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%. -##### Connected in Parallel +###### Connected in Parallel Overall availability increases when two components with availability < 100% are connected in parallel: From eee63ed1e157f89f5c27b9c5df03a3aee6f52902 Mon Sep 17 00:00:00 2001 From: Donne Martin Date: Sun, 12 May 2019 07:14:32 -0400 Subject: [PATCH 8/9] Update README.md --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 0b6ff3224af..01537b94df7 100644 --- a/README.md +++ b/README.md @@ -552,11 +552,11 @@ Availability is generally quantified by uptime (or downtime) as a percentage of #### 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 connected in sequence or in parallel. +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. -###### Connected in Sequence +###### In Sequence -Overall availability decreases when two components with availability < 100% are connected in sequence: +Overall availability decreases when two components with availability < 100% are in sequence: ``` Availability (Total) = Availability (Foo) * Availability (Bar) @@ -564,9 +564,9 @@ 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%. -###### Connected in Parallel +###### In Parallel -Overall availability increases when two components with availability < 100% are connected in parallel: +Overall availability increases when two components with availability < 100% are in parallel: ``` Availability (Total) = 1 - (1 - Availability (Foo)) * (1 - Availability (Bar)) From 2567f1cb437b7e5e222d835cc6f15b6e1ea836d9 Mon Sep 17 00:00:00 2001 From: Donne Martin Date: Sun, 12 May 2019 07:16:51 -0400 Subject: [PATCH 9/9] Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 01537b94df7..32d70a2aed9 100644 --- a/README.md +++ b/README.md @@ -530,7 +530,7 @@ This topic is further discussed in the [Database](#database) section: ### Availability in numbers -Availability is generally quantified by uptime (or downtime) as a percentage of time the service is available. Availability is often measured in number of 9s--a service with 99.99% availability is described as having four 9s. +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 @@ -554,7 +554,7 @@ Availability is generally quantified by uptime (or downtime) as a percentage of 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 +###### In sequence Overall availability decreases when two components with availability < 100% are in sequence: @@ -564,7 +564,7 @@ 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 +###### In parallel Overall availability increases when two components with availability < 100% are in parallel: