Skip to main content

How to Set SLOs and Error Budgets for a Team of Five

6 min read
Set our SLOs and budgets

We pick one or two objectives your customers notice and turn them into an error budget.

Reliability targets written for a company of a thousand do not survive contact with a team of five. This guide keeps the arithmetic and drops the ceremony, working through how to pick one or two objectives a customer would actually notice, how to turn a percentage into minutes and into a count of failed requests, and how to use the remaining budget to settle the argument about whether to ship the feature or fix the bug. Every calculation is shown so you can check it against your own numbers.

Reliability practice was written down by companies with hundreds of engineers, and most of what they publish assumes that scale. The arithmetic underneath it does not. A team of five can get most of the value from two numbers and one page of policy, and the value shows up in the argument you stop having every sprint about whether to ship the feature or fix the bug.

Pick the journey your customers would complain about

Start from what a customer does, not from your service diagram. Checkout, sign in, search, publish. One journey, at most two, and stop there. The SRE workbook recommends a small number of indicator types, five or fewer, covering the functionality that matters most to customers. For five people, one or two is the honest version of that.

Measure it as close to the customer as you reasonably can. A load balancer or edge log sees what the customer got. An internal service metric sees what one component believed it returned, and those two disagree in exactly the situations you care about.

Turn the journey into a ratio

Express the indicator as good events divided by valid events, times one hundred. Availability counts requests that did not fail. Latency counts requests served faster than a threshold you choose, so "99 percent of checkout requests complete in under 400 milliseconds" is a counting exercise rather than a percentile.

The threshold is a product decision and it belongs to whoever answers to customers, not to whoever owns the dashboard.

Do the minutes arithmetic before you pick a number

Choose the window first. Thirty days is easy for everyone to picture, and the workbook found a four week rolling window a good general purpose interval, which is the same arithmetic with 40,320 minutes in place of 43,200.

Thirty days is 30 times 24 times 60, which is 43,200 minutes. The error budget is what the objective leaves over.

ObjectiveBudgetMinutes per 30 days
99%1%43,200 x 0.01 = 432 (7 h 12 m)
99.5%0.5%43,200 x 0.005 = 216 (3 h 36 m)
99.9%0.1%43,200 x 0.001 = 43.2
99.95%0.05%43,200 x 0.0005 = 21.6
99.99%0.01%43,200 x 0.0001 = 4.32

Read the 99.9 percent row as a team of five rather than as a target. Forty three minutes for the whole month means a single incident that takes you fifty minutes to notice, diagnose and fix has spent the entire budget on its own. If nobody is awake between midnight and seven, and something can break at one in the morning, then 99.9 percent is not an objective, it is a wish.

That is the calculation most small teams skip, and it is the one that decides whether the rest of the exercise is real.

The same budget in requests

Time is the intuitive unit and requests are the useful one, because that is what you can count.

Suppose the checkout journey serves 3,000,000 valid requests in the window and the objective is 99.9 percent. The budget is 3,000,000 x 0.001, which is 3,000 failed requests. Halfway through the month you have had 1,200 failures, so you have spent 1,200 divided by 3,000, which is 40 percent of the budget with 50 percent of the window gone. You are slightly ahead, and nothing needs to change.

Burn rate is the same figure per unit of time. Divide the observed failure ratio by the budget ratio. A sustained 0.5 percent failure rate against a 99.9 percent objective is 0.005 divided by 0.001, a burn rate of 5, which empties a thirty day budget in 30 divided by 5, or 6 days. A burn rate of 1 lasts exactly the window, by definition.

That single number is what belongs on the wall. It answers the only question anyone actually asks, which is whether the current state of things is fine or not.

Do not set the target to the number you already hit

There is a strong pull toward measuring last month, rounding it, and calling it the objective. The workbook advises against choosing a target from current performance, since it commits you to whatever you happen to be doing now, including the parts that were luck.

Two failure modes bracket the right answer. A target you always miss teaches everyone to ignore it within two months. A target you have never once come close to missing is not constraining any decision, which means it is decoration. Aim for one you meet most months and occasionally sweat.

The policy is two rules and it fits on one page

An objective changes nothing until it decides something.

  • Budget healthy. Ship. Deploy on Fridays if you want, take the risk, the numbers say you have room.
  • Budget exhausted. Feature work on that journey stops, and the next cycle goes on reliability until the budget recovers.

Write it down and get whoever prioritises the roadmap to agree to it while nothing is on fire. Its whole value is that it was agreed in advance, so the conversation during the next bad week is a lookup rather than a negotiation between the person who wants the feature and the person who was up at 3am.

When the budget does run out, resist raising the objective so the problem disappears from the chart. Find what spent it, fix that with owned actions and dates, and only revisit the target if the evidence says it was wrong in the first place.

Review it monthly, in fifteen minutes

Once a month, look at three things. Where the budget ended, what spent the largest single piece of it, and whether the objective still matches what customers expect. Tighten it if you have not been near the edge in a quarter. Loosen it only with a reason you would be willing to tell a customer.

That is the whole practice at this size. Two numbers, one page, fifteen minutes a month, and an argument you stop having.

If you would rather have the first objectives defined and instrumented with you than derived from scratch, that is our SRE service, built on top of the monitoring and observability you already run. For the wider practice around it, including incident process and postmortems, see how to start doing SRE with SLOs and error budgets.

Frequently asked questions

How many SLOs should a small engineering team start with?

Start with one customer journey, two at most, such as checkout, sign in, search or publish. The SRE workbook recommends five or fewer indicator types covering the functionality that matters most to customers, and for a team of five, one or two is the honest version of that. Measure as close to the customer as possible, for example from a load balancer or edge log, because an internal service metric only shows what one component believed it returned.

How much downtime does a 99.9 percent SLO allow per month?

A 99.9 percent objective over thirty days allows 43.2 minutes, since thirty days is 43,200 minutes and the budget is 0.1 percent of that. For comparison, 99 percent allows 432 minutes (7 h 12 m), 99.5 percent allows 216 (3 h 36 m), 99.95 percent allows 21.6 and 99.99 percent allows 4.32. A four week rolling window uses the same arithmetic with 40,320 minutes in place of 43,200.

Is a 99.9 percent SLO realistic for a team of five?

A 99.9 percent objective over thirty days leaves about forty three minutes of budget, so one incident that takes fifty minutes to notice, diagnose and fix spends all of it on its own. If nobody is awake between midnight and seven and something can break at one in the morning, 99.9 percent is a wish and not an objective. Do this arithmetic before picking a number, since it decides whether the rest of the exercise is real.

How do I calculate an error budget in failed requests?

Multiply the valid requests in the window by the budget ratio. With 3,000,000 checkout requests and a 99.9 percent objective, the budget is 3,000,000 x 0.001, or 3,000 failed requests. If 1,200 failures have happened halfway through the month, 40 percent of the budget is spent with 50 percent of the window gone, which is slightly ahead and needs no change.

How do I calculate error budget burn rate?

Divide the observed failure ratio by the budget ratio. A sustained 0.5 percent failure rate against a 99.9 percent objective is 0.005 divided by 0.001, a burn rate of 5, which empties a thirty day budget in 6 days. A burn rate of 1 lasts exactly the window by definition. That one figure answers whether the current state of things is fine or not.

Should an SLO target be set from current performance?

No, the SRE workbook advises against choosing a target from current performance, because that commits the team to whatever it happens to be doing now, including the parts that were luck. A target that is always missed gets ignored within two months, and one that has never come close to being missed constrains no decision. Aim for an objective that is met most months and occasionally makes the team sweat.

What should an error budget policy for a small team say?

Two rules are enough. While the budget is healthy, ship, Friday deploys included if the team wants them. Once the budget is exhausted, feature work on that journey stops and the next cycle goes to reliability until the budget recovers. Get whoever prioritises the roadmap to agree to the policy while nothing is on fire, so the conversation in the next bad week is a lookup and not a negotiation.

How often should a small team review its SLOs?

Once a month, in about fifteen minutes. Look at where the budget ended, what spent the largest single piece of it, and whether the objective still matches what customers expect. Tighten the objective after a quarter without coming near the edge, and loosen it only with a reason that could be told to a customer. When the budget runs out, find what spent it, fix that with owned actions and dates, and revisit the target only if the evidence says it was wrong.

Read how we handle it in DevOps as a Service.