Most SLO implementations live in operations. The SRE team defines the SLOs, builds the dashboards, owns the error budget, and alerts the product team when the budget is burning. Product teams learn about their SLO status when the SRE sends a report. This is better than no SLOs, but it misses the most powerful use of the framework: making reliability a first-class input to product decisions before code ships, not a report card after it does.
SLO-driven engineering takes the error budget concept and moves it upstream — into sprint planning, feature design, code review, and release decisions. Here's what that looks like in practice.
The Error Budget as a Development Resource
The conventional framing of the error budget is defensive: you have X% of budget, don't burn it all, or we freeze releases. This framing positions SREs as reliability police and product teams as the ones being policed. It breeds resentment and doesn't actually improve reliability — it just creates negotiation dynamics around who gets to spend the budget.
The better framing: the error budget is a shared resource that both the product team and SRE team are jointly responsible for managing. How you spend it is a product decision with tradeoffs:
- Spending budget on ambitious releases that have higher failure rates means faster feature delivery
- Saving budget (by releasing conservatively) means margin for infrastructure work, unexpected incidents, and future risky releases
- Investing budget in reliability improvements (by slowing down releases to do reliability work) increases future budget
When product teams own their error budget rather than just receiving reports about it, they make different decisions. A PM who knows they've burned 40% of this month's budget in the first week will naturally push back on a risky release scheduled for week two. Not because SRE said so, but because they understand the math.
Defining SLOs That Product Teams Actually Care About
The technical SLO (API error rate below 0.1%) is not the metric a product team connects with emotionally. The business SLO (checkout success rate above 99.5%, search returning results in under 800ms) is. The two are related but not identical, and the translation matters for organizational alignment.
SLO definition principles that produce business alignment:
Start with user journeys, not service boundaries. A user trying to complete a purchase touches 5-10 microservices. An SLO on each service doesn't tell you whether the user was able to buy. A user journey SLO — the end-to-end success rate of the purchase flow — does.
Make the cost of failure concrete. "Error rate exceeded SLO" is abstract. "3,200 users received errors during checkout between 14:00 and 15:00, resulting in an estimated $180K in abandoned carts" is concrete. When you can convert SLO burn into business impact, reliability conversations change.
Define failure from the user's perspective. A request that returns in 10 seconds is technically successful (non-5xx) but functionally a failure for any use case with a human waiting. SLOs that only count HTTP errors miss the large category of "technically up but unusably slow."
# SLO definition: User-journey focused, business-connected
slo:
name: checkout-completion-rate
description: "Users who successfully complete a purchase after starting checkout"
# What teams are measuring
indicator:
type: ratio
numerator: |
sum(rate(purchase_completed_total[5m]))
denominator: |
sum(rate(checkout_started_total[5m]))
# Target
target: 0.994 # 99.4% of checkout attempts result in purchase
window: 30d
# Business translation
business_impact:
per_percent_of_burn: "$45,000 estimated revenue"
notification_threshold: 20% # Alert when 20% of monthly budget consumedReliability in the Pull Request Review
The most upstream intervention point is code review. If reliability concerns are only raised after a deploy causes an incident, you've lost the cheapest opportunity to catch them.
What reliability review in a PR looks like in practice:
SLO impact labeling. For PRs that touch code in the critical path of an SLO (checkout, authentication, payment processing), a label triggers an extended review checklist that includes reliability questions.
Latency budget awareness. If a feature adds a new synchronous external API call to a critical path, the reviewer should ask: what's the P99 latency of this call? What happens when it times out? Is there a fallback? Is the timeout configured correctly? These questions catch a large category of latency regressions before they ship.
Failure mode documentation. For changes to stateful systems (database schema changes, new queue consumers, caching layer changes), the PR should document: what does this look like when it fails? Can it fail partially? Is the failure loud or silent?
Error budget estimation. For high-risk releases, the SRE and PM together estimate expected error budget impact. "This feature touches the payment path, which has historically shown 2-3x elevated error rates in the first hour after deploy. We estimate teams can burn 5-10% of the monthly budget on the release." With that estimate on the table, the team can decide whether to release on Monday (budget full) or Thursday (budget already at 30%), whether to use a canary, and whether to have SRE on-call during the deploy.
The Error Budget Policy Document
Every team with an SLO should have an error budget policy: a documented agreement about what behavior is triggered at different budget burn levels. Without this, teams negotiate the same questions repeatedly during incidents.
A practical policy structure:
Error Budget Policy: Payment Service
Budget State: FULL (0-25% burned)
- Full release velocity
- Standard code review process
- No release restrictions
Budget State: CAUTION (25-50% burned)
- SRE review required for any release touching payment critical path
- High-risk releases scheduled for off-peak hours
- Weekly budget review with product and SRE leads
Budget State: WARNING (50-75% burned)
- No new feature releases to payment critical path
- Reliability improvement work prioritized in sprint
- Daily budget review
Budget State: CRITICAL (75-100% burned)
- Feature release freeze
- SRE and product lead review required for any production change
- Active reliability incident: identify and fix root causes
Budget State: EXHAUSTED (100%+ burned)
- All releases require VP Engineering approval
- Formal reliability review before any production change
- SLO renegotiation if structural limits are identifiedThis document answers the question "what do we do when the budget is burning?" before you're in the middle of burning it.
Measuring the Right Things in Monitoring
SLO-driven engineering requires monitoring that surfaces the metrics that matter for the SLO, not just the metrics that are easy to collect.
The gap I see most often: teams monitor infrastructure metrics (CPU, memory, disk) and HTTP error rates, but not the user journey metrics that their SLOs are defined against. A dashboard showing "API error rate: 0.02%" doesn't tell you whether the checkout SLO is healthy if the checkout flow has a silent failure mode that doesn't produce HTTP 5xx errors.
Building SLO-aligned monitoring:
Synthetic transactions. Run automated transactions through your critical user journeys continuously. A synthetic that completes a checkout end-to-end every 5 minutes, from multiple geographic locations, tells you whether the checkout flow is working even if your HTTP error rates look clean.
Real user monitoring (RUM). Instrument your frontend to report user journey completion rates directly. Did users who started checkout actually complete it? This is the ground truth for your checkout SLO, unfiltered by server-side metrics.
SLO burn rate alerting. Alert on error budget burn rate, not just absolute values. A burn rate of 5x your target means you'll exhaust ythe monthly budget in 6 days. That's a different urgency than a burn rate of 0.5x. Alerting frameworks like Sloth (Prometheus-based) and commercial SLO platforms can compute burn rates automatically.
The Quarterly SLO Review
SLOs should be revisited on a cadence. The questions to ask:
- Did we breach the SLO this quarter? If yes, what caused it?
- Is the SLO target still the right target? (Too tight if teams are always burning budget; too loose if we never get close)
- Are there new user journeys that need SLOs?
- Have any service ownership changes affected who owns which SLO?
- Is the error budget policy still appropriate?
The quarterly review is also when you can have the "teams are structurally unable to meet this SLO with the current architecture" conversation, which leads to actual investment in reliability infrastructure. Without the SLO data to back that conversation, it's engineers asking for reliability work based on intuition. With the data, it's a business case.
*Zak Hassan is a Staff SRE specializing in SLO frameworks, AI-powered operations, and data platform reliability. Find him at zakhassan.com or on LinkedIn.*
Topic Paths