Utilities

Composite Availability Calculator

Calculate the compound availability of a service that depends on multiple upstream services. Model serial dependency chains and redundant copies. See the worst offender and what it would take to hit your SLA target.

Dependencies

NameAvailabilityRedundancyEffective
%
99.950%
%
99.900%
%
99.990%
%
99.990%
%
99.500%

Compound availability

99.3309%

Yearly downtime: 2d 10h 36m
Monthly downtime: 4h 49m
Daily downtime: 9m
Short by 0.569% — not achievable with current dependency graph

Worst offender

Feature-flag service (99.500%) is dragging your compound availability down the most.

Removing or fully eliminating this dependency would lift compound availability from 99.3309% to 99.8301% — a gain of 0.4992%.

In practice you usually cannot remove a dependency. Options: add redundancy (set the column above to 2× or 3×), build a fallback that lets you degrade gracefully when it's down, or push for a stronger SLA from the upstream provider.

Automate your incident response

Reduce MTTR by 90% with AI-powered root cause analysis. Free to start.

Try Uptimes.ai Free

The hidden cost of every new dependency

It is one of the most surprising results in reliability engineering: even if every individual service in your stack is "three nines or better," your real SLA ceiling can be dramatically lower. A service that depends on five upstream services each at 99.9% has a compound availability of about 99.5% — roughly 44 hours of allowed downtime per year, not 8 hours 45 minutes.

This is not a bug in the math. It is the math. Availability multiplies in series, and the more you stack, the worse the compound number gets. Tools like this one make the cost visible — which usually changes the architecture conversation.

When redundancy helps and when it doesn't

Redundancy is the standard answer: if one copy is at 99%, two independent copies are at 99.99%. The word doing the work is "independent." In practice, redundancy fails when failures are correlated:

  • Two replicas in the same availability zone share zone-level outages
  • Multi-region deploys still share the same control plane, the same DNS, the same shared upstream (Stripe, Auth0, etc.)
  • Same code on every replica means the same bug brings them down at the same time
  • Shared identity provider, shared CI/CD pipeline, shared deploy script — all create correlation

For the calculator above, set redundancy 2× or 3× when failures are genuinely independent. For correlated failure modes, model the shared upstream as a separate row.

Graceful degradation: the third option

The most powerful technique is often to make a dependency optional. If your feature-flag service goes down and the application defaults to the last-known-good values, that dependency does not multiply into your availability. The rule of thumb: design every dependency call site with an explicit answer to "what should we do if this is unavailable?". Often the answer is "use a cached value," "return a sensible default," or "skip the step." Each of those moves the dependency off your critical path.

Why dependency-aware reasoning matters in incidents

Knowing your dependency graph is half of fast incident response. When a symptom appears in your service, the actual root cause is often upstream — and identifying which upstream is what slows down most investigations. Uptimes.ai builds and continuously updates a real-time service dependency graph from eBPF kernel data, then uses it during automated root cause analysis to follow the failure backwards through your stack. The same graph you mapped out in this calculator is what our AI SRE agent reasons over during a real incident.

Frequently Asked Questions

How is compound availability calculated?+
For services in series (you need ALL of them up), availabilities multiply: A_total = A1 × A2 × ... × An. For redundant copies of the same service (you need ANY one up), the math is A = 1 - (1-a)^N where a is the per-copy availability and N is the number of redundant copies. The calculator combines both: each row's effective availability accounts for its redundancy, then all rows are multiplied together.
Why is my compound availability so much worse than my dependencies?+
Because availability multiplies. Five dependencies each at 99.9% gives a compound availability of 99.9%^5 = 99.5%, not 99.9%. Each "nine" you stack costs you proportionally — adding one more 99.9% dependency to a chain takes another 0.1% off the top. This is why architects fight to reduce critical-path dependencies, even when the alternative is more code complexity.
How does redundancy actually help?+
Redundancy works because the probability that ALL N copies are down simultaneously is (1-a)^N, which gets very small fast. Two 99% copies give you 1 - 0.01^2 = 99.99% — going from two nines to four nines just by doubling the deployment, assuming failures are independent. The catch is that "independent failures" is a strong assumption; correlated failures (shared dependency, same bug, same region outage) defeat redundancy entirely.
What if my dependencies are not all on the critical path?+
If a dependency only affects some requests (e.g., feature-flag service used only on logged-in pages), it does not multiply into your overall availability — it multiplies into the availability of that subset of traffic. Model each user journey separately if you have asymmetric dependency graphs. Or model the worst-case journey, which is what most teams care about for SLA purposes.
My SLA target is not achievable. What now?+
Three real options: (1) Add redundancy on the worst offender — change its row to 2× or 3× and watch the compound improve. (2) Make the dependency optional with graceful degradation, so its outages do not count against your availability. (3) Push for a higher SLA from the upstream provider, or pick a different provider. The fourth option, "lower your SLA target," is sometimes the right business answer.