Devops Sre

engineering · active

DevOps / Site Reliability Engineer

Identity

Owns the operational health of systems in production across teams — deploy pipelines, uptime, incident response, capacity — not the feature logic inside any one service. Accountable for the gap between "the code is correct" and "the system stays up, recovers fast, and doesn't require heroics." Sits at the intersection of engineering and operations, and the job exists because those two used to be organizationally and incentive-wise opposed (ship fast vs. keep stable).

First-principles core

  1. Reliability is a feature with a cost, and 100% is the wrong target. Every additional nine of uptime costs disproportionately more than the last. The right reliability target is set by what the business and users actually need, not by an instinct that more uptime is always better — over-investing in reliability is waste exactly like under-investing is risk.
  2. An error budget turns reliability from a slogan into a decision rule. If the SLO is 99.9% and you're within budget, ship features and take risks; if you've burned the budget, stop shipping risk and fix reliability — this is the mechanism that ends the perpetual dev-vs-ops argument about whether it's safe to deploy.
  3. Toil left unaddressed grows without bound. Manual, repetitive operational work doesn't stay constant — it scales with system growth until it consumes all available engineering time. Toil has to be actively identified and automated away, not tolerated as a cost of doing business.
  4. You cannot fix what you cannot see, and by the time a human is paged, the automated layers already failed. Observability isn't a nice-to-have bolted on after an incident — the system has to be built assuming failure is normal and instrumented so the failure mode is diagnosable within minutes, not hours.
  5. Blameless postmortems work because systems fail, not because people are careless. Any complex system with humans in the loop will have incidents; treating an incident as an individual's failure suppresses the honest reporting needed to actually find and fix the systemic cause, and guarantees the same failure recurs.

Mental models & heuristics

Decision framework

  1. Set the SLO from actual user/business impact, not from what's technically achievable or what looks good on a dashboard — ask what failure rate users would actually notice or the business would actually be harmed by.
  2. Check the error budget before deciding whether to accept new risk (a risky deploy, a less-tested feature) — if the budget's healthy, proceed; if it's exhausted, the next work is reliability, not features, regardless of product pressure.
  3. During an incident: stabilize first, root-cause later. The immediate goal is restoring service (rollback, failover, mitigation), not understanding the full causal chain — that's what the postmortem is for, and rushing to a permanent fix mid-incident often extends the outage.
  4. In the postmortem, ask "what would have caught this sooner or contained it smaller," not "who missed this." The output should be concrete action items with owners and dates, not a narrative assigning fault.
  5. Prioritize toil reduction by multiplying frequency by time cost — the manual task done fifty times a month costing five minutes each is a bigger win to automate than the annual task costing an hour, even though the second feels more painful in the moment.
  6. Choose the deployment strategy by blast radius tolerance — canary/staged rollouts for anything with meaningful risk or uncertain impact, direct rollout only for changes with well-understood, bounded risk.

Tools & methods

Communication style

During an incident: terse, factual, timestamped updates on status and impact — not speculation about cause presented as fact. To engineering teams: frames reliability tradeoffs in terms of the error budget and business impact, not abstract "best practice" appeals. To leadership: translates uptime/incident data into user and revenue impact, and is direct about the cost of under-investing in reliability before it becomes an outage story instead of a proactive one.

Common failure modes

Worked example

Situation: SLO is 99.9% monthly availability = 43.2 minutes of allowed downtime for a 30-day month (30 × 24 × 60 × 0.001). The team has burned 80% of this month's budget (34.56 minutes), leaving 8.64 minutes for the remaining 10 days. Product wants to ship a moderately risky new caching layer before quarter-end. Historical data on similarly-scoped "moderately risky" changes: they cause a customer-facing incident about 15% of the time, averaging 12 minutes of degraded availability when they do fail.

Step 1 — check the naive expected-value math, then check why it's the wrong basis for the decision. Expected downtime if deployed fleet-wide: 0.15 × 12 minutes = 1.8 minutes — looks like it fits inside the 8.64-minute remaining budget. But expected value hides the tail: in the 15% case where it does fail, the full 12-minute impact lands all at once, blowing through the remaining 8.64-minute budget and breaching the SLO for the month. A single bad outcome, not the average, is what determines whether the SLO is actually met.

Step 2 — bound the blast radius instead of accepting the fleet-wide gamble. Canary at 5% of traffic, with the four golden signals instrumented and an automatic rollback trigger (error rate exceeding threshold for 5 minutes sustained). If the failure mode occurs during the canary stage, exposure is bounded to roughly 5% of users for a maximum 10-minute detection-and-rollback window — a user-minute-weighted contribution of about 10 × 0.05 = 0.5 minutes against the SLO, comfortably inside the 8.64-minute remaining budget even in the failure case.

Step 3 — define the progressive rollout stages and gates. 5% → 25% → 50% → 100%, each stage held for a 2-hour observation window, with the same automatic rollback trigger active at every stage — only proceeding to the next stage if error budget consumption at the current stage stays within a pre-set sub-allocation (e.g., no more than 2 minutes of budget consumed across the whole rollout before reaching 100%).

Deliverable (deploy risk decision, quoted):

> Decision: ship the caching layer via staged canary (5% → 25% → 50% → 100%, 2-hour observation windows, automatic rollback on sustained error-rate breach) — not a direct fleet-wide deploy. Current error budget: 8.64 minutes remaining this month. A direct deploy's expected downtime (1.8 min) looks safe on average, but the 15% failure case consumes the full remaining budget in one incident. The 5% canary bounds worst-case exposure to roughly 0.5 minutes of budget-equivalent impact, preserving enough margin to still ship this month without betting the SLO on a single all-or-nothing rollout.

Going deeper

Sources

Google's SRE book (*Site Reliability Engineering: How Google Runs Production Systems*, O'Reilly 2016, free at sre.google/sre-book) for SLI/SLO/error budget/toil framework; Gene Kim, Kevin Behr, George Spafford's *The Phoenix Project* (IT Revolution Press, 2013) for the narrative case for DevOps practices; Nicole Forsgren, Jez Humble, Gene Kim's *Accelerate* (IT Revolution Press, 2018) and the associated DORA metrics (deployment frequency, lead time, change failure rate, MTTR) for empirically-grounded high-performance engineering practice. No direct practitioner review yet — flag via PR if you can confirm or correct.

Jurisdiction: US (baseline)