Mustaque Nadim Academy
Part 4 · Reliability

Availability & SLAs

Adda promises its users it will always be there. Mou joins the night uptime becomes a real job — and the first thing she does is turn that promise into a number.

The problem

Adda went dark for 20 minutes last Tuesday. In the incident review, someone finally asks the only question that matters: "Was that bad?" Marketing thinks any downtime at all is a catastrophe — millions of people now open Adda the way they open a light switch. Tanvir, who caught the 3am page, thinks 20 minutes to recover a wedged database is honestly a miracle. Fahim, still user #1, just wants to know if it'll happen again tonight. Nobody can agree, because nobody ever wrote down what "good enough" means.

That's the night Ria hires Mou — Adda's first real SRE. Mou listens to the whole argument, then says the thing that reframes the room: without a number, every outage is just a shouting match. You can't tell whether to spend six months making Adda bulletproof or whether you're already gold-plating. Reliability work has no finish line until someone draws one — and drawing it is now Mou's job.

A first attempt

The room's instinct is "let's aim for 100% uptime." It sounds responsible. Mou has seen it burn a team before.

The last stretch of reliability is astronomically expensive. Going from Adda's one server to two doubled availability cheaply. Going from 99.9% to 99.99% means redundant data centers, automatic failover, chaos testing, and a follow-the-sun on-call rotation covering every timezone Adda now lives in. Each extra "nine" roughly multiplies cost and complexity while removing an order of magnitude less downtime. Chasing 100% spends infinite money to erase a finite, shrinking risk — and no budget on Earth stops a backhoe from cutting a fiber line outside the data center.

So "as available as possible" isn't a target Mou will accept. It's a way to burn Adda's runway forever.

The insight

Availability is a business decision expressed as a number, not an engineering ideal. Mou's rule: pick a target that matches what Adda's users actually need, promise it, measure it, and spend exactly enough to hit it — not one taka more.

That number is usually written in "nines." Here is what each nine buys you, as allowed downtime:

AvailabilityDowntime / yearDowntime / monthRough feel
99% (two nines)3.65 days7.2 hoursHobby project
99.9% (three nines)8.76 hours43 minTypical SaaS
99.99% (four nines)52.6 min4.3 minSerious platform
99.999% (five nines)5.26 min26 secTelco / payments

Notice the jump Mou circles on the whiteboard: three nines gives Adda 43 minutes a month to deploy, restart, and recover. Four nines gives barely 4 minutes — a single bad deploy blows the whole budget.

How it works

Mou introduces three acronyms that turn the target into something the team can operate against.

Define the SLI (what you measure)

A Service Level Indicator is the raw metric. Mou picks something Adda's users actually feel: the fraction of HTTP requests that return successfully in under 300ms, measured at the load balancer Tanvir set up back in Part 1. Availability that users can't perceive isn't worth paying for.

Set the SLO (your internal goal)

A Service Level Objective is the target for that SLI — "99.9% of requests succeed over a rolling 30 days." The SLO is stricter than anything Adda promises outsiders — it's the line that pages Mou's team before Fahim ever tweets that the app is down.

Sign the SLA (the external promise)

A Service Level Agreement is the contract with customers — Adda's business partners and, later, paying teams — with penalties attached (usually service credits). If the SLO is 99.95%, the SLA might be 99.9%: Adda keeps a safety margin so it breaks its internal goal long before it owes anyone money.

Spend the error budget

100% minus the SLO is Adda's error budget — the downtime it's allowed to spend. At 99.9% that's 43 minutes a month to burn on risky deploys, migrations, and experiments. Budget left over? Ship faster. Budget gone? Freeze features and stabilize.

The relationship between the three, and where the error budget sits:

        stricter  ──────────────────────────►  looser
        SLI target        SLO           SLA
   e.g. 99.95% measured │ 99.9% goal │ 99.5% promised
        │               │            │
   ─────┴───────────────┴────────────┴──────────── 100%
        └─ engineering ─┘└─ margin ──┘

        error budget = 100% − SLO = 43 min / month

Adda's real numbers

Adda's API now does 10,000 requests per second. That's about 25.9 billion requests a month passing through Mou's watch.

  • A 99.9% SLO means Adda is allowed to fail 0.1% of them: ~25.9 million failed requests, or about 43 minutes of total outage-equivalent.
  • Tighten to 99.99% and that budget shrinks 10x to ~4.3 minutes. One 6-minute deploy hiccup and the month is already broken.
  • A single dependency at 99.9% caps Adda's ceiling: chain three independent services at 99.9% each and the theoretical max is 0.999³ ≈ 99.7%. Dependencies multiply, so Adda's own target must account for everyone it calls — the payment provider, the notification service, all of it.

When to use it

More nines is not always better

Every extra nine roughly multiplies cost and slows delivery. A three-nines internal admin tool that's cheap and ships weekly may serve Adda far better than a gold-plated four-nines version that freezes for months. Mou matches the target to the blast radius, not to engineering pride.

Error budgets align dev and ops

The error budget resolves the classic fight Mou walked into on night one: developers (Shuvo, Nabila) want to ship, operators want stability. She frames it as a shared bank account. Budget remaining means the team has earned the right to take risks. Budget spent means everyone stops and stabilizes — no politics, just the number.

Practice

Recap

  • Availability is a business number, not an ideal — Mou picks a target that matches user need and stops there.
  • SLI = what you measure, SLO = your stricter internal goal, SLA = the looser external promise with penalties.
  • The error budget (100% − SLO) is downtime you're allowed to spend; it turns "ship vs. stabilize" into a math problem instead of an argument.

In an interview

Don't say "I'll make it highly available." Say "I'll target 99.9%, measured as successful requests under 300ms at the edge, which gives us a 43-minute monthly error budget." Then use that budget to justify each design choice — a single region if three nines is enough, multi-region only when the target demands it. Interviewers want to see you trade cost against a stated number, not chase nines blindly.

How is this guide?

Last updated on

On this page