This page lists down different aspects which can be considered by solution architects / technical architects / application architects on how to calculate service availability time. Given that microservices architecture style / cloud-native is adopted in modern age applications development, it would be good to know this piece of information.
Service availability is commonly defined as the percentage of time that an application is operating normally.
Availability = Normal operation time / Total Time
The following are different techniques which can be used to calculate service availability:
- Availability as function of MTBF and MTTR
- Availability with hard dependencies
- Availability with redundant components / services
Service Availability as a function of MTBF and MTTR
Service availability can be calculated based on mean-time-between-failure (MTBF) and mean-time-to-recover (MTTR). The following is the formula to calculate service availability:
Service Availability = MTBF / (MTBF + MTTR)
The above can also be used to calculate service availability of downstream services to calculate overall service availability.
Service Availability with Hard Dependencies
Consider the scenario where a service (upstream) depends upon external / downstream services (say, microservices) deployed on different systems. In cases where the downtime of upstream service does depend upon downtime of downstream services, the availability of upstream service is calculated as following:
Upstream service availability = Product of downstream services availability
For example, lets say there are two downstream services A and B on which the upstream service depends. Each of the dependent service A and B has an availability of 99.99%. Given this, the upstream service, theoritically speaking, can no longer achieve availability better than 99.97%. The following is how it is calculated:
99.99% x 99.99%
Service Availability with Redundant Components
If the service makes use of redundant / independent components, the service availability is calculated as following:
100% - (Product of Redundant Component Failure Rates) Component failure rate = 100% - Components' availability
Based on above formulae, if the service depends upon two independent / redundant service having availability of 99.99%, the service availability will be calculated as the following:
100% - (0.01 X 0.01) = 99.9999%
Hope it helps you in calculating service availability. Please feel free to suggest additional points.