Save products you love by clicking the heart icon.
We use privacy-friendly analytics (Plausible + Umami) to understand how visitors use this site. No analytics are loaded without your consent. Privacy Policy
A deep technical comparison of NetworkPolicy enforcement between eBPF-based CNIs (Cilium) and iptables-based CNIs (Calico). Covers implementation internals, real performance benchmarks at scale, L7 policy trade-offs, migration strategies, and production debugging patterns.
Site Reliability Engineering (SRE) is what happens when you treat operations as a software engineering problem. In 2026, as self-hosted infrastructure becomes more common and distributed systems grow more complex, SRE practices are no longer optional — they are the foundation of production reliability.
This guide covers the core SRE practices that apply whether you are running a three-node Kubernetes cluster or a multi-region fleet of 500 servers.
The fundamental contract of SRE is the Service Level Objective (SLO), measured by Service Level Indicators (SLIs).
Good SLIs measure what users experience, not internal infrastructure metrics:
| Service Type | Primary SLI | Target |
|---|---|---|
| HTTP API | Request latency p99 | < 500ms |
| Database | Query duration p95 | < 100ms |
| Message queue | End-to-end delivery latency | < 5s |
| Web application | Page load time p75 | < 2s |
| Batch job | Completion rate | > 99.9% |
An SLO is the target value for an SLI over a rolling window (typically 30 days):
slo:
name: api-latency
sli: http_request_duration_seconds
aggregation: p99
window: 30d
target: 0.5 # 500ms
compliance: 99.9
The error budget is 100% minus the SLO. With a 99.9% SLO, you have 0.1% budget for errors — approximately 43 minutes of downtime per 30-day window.
The error budget determines release velocity. When the budget is exhausted, all feature releases stop until reliability is restored:
error_budget_policy:
exhaustion_action: freeze-deployments
exhaustion_condition: budget < 10%
notify:
- on-call-engineer
- team-leads
top-level: require-approval
This creates a direct feedback loop: if reliability drops, engineering velocity drops. Teams are incentivized to both ship features and maintain reliability.
Define clear severity levels so the right people respond with the right urgency:
| Level | Label | Response Time | Example |
|---|---|---|---|
| SEV1 | Critical | 15 minutes | Complete service outage, data loss |
| SEV2 | High | 30 minutes | Degraded performance for subset of users |
| SEV3 | Medium | 4 hours | Feature broken for small percentage of users |
| SEV4 | Low | Next business day | Cosmetic issues, documentation errors |
Establish a communication channel per incident. Use a status page for external communication. Update every 30 minutes during ongoing incidents, even if there is no new information.
A blameless postmortem is the most important reliability practice. Every SEV1 and SEV2 incident requires a postmortem within 5 business days:
## Postmortem: API Latency Spike on 2026-07-15
### Summary
p99 latency increased from 200ms to 4500ms for 23 minutes, affecting 12% of traffic.
### Timeline
- 14:23 — Alert fired (p99 > 1000ms)
- 14:25 — Engineer acknowledged
- 14:28 — Identified database connection pool exhaustion
- 14:32 — Scaled connection pool from 50 to 200
- 14:46 — Latency returned to baseline
### Root Cause
A deployment at 14:00 increased per-request database connections from 2 to 8 without corresponding pool adjustment.
### Action Items
- [ ] Add connection pool utilization dashboard to standard deploy checklist
- [ ] Implement connection pool saturation alert
- [ ] Add pool size assertion to deployment pipeline
The key principle: the root cause is never the person who pushed the button. The root cause is always a process gap, a missing test, or a design oversight.
The SRE team's primary investment should be automation that prevents incidents, shortens response time, and eliminates toil:
| Metric | Target |
|---|---|
| Mean Time to Detection (MTTD) | < 5 minutes |
| Mean Time to Mitigation (MTTM) | < 15 minutes |
| Mean Time to Resolution (MTTR) | < 60 minutes |
| Change Failure Rate | < 5% |
| Deployment Frequency | Multiple times per day |
| Toil Percentage | < 50% of time |
The ultimate SRE metric is not uptime. It is whether the team can sleep at night knowing their systems are observable, remediable, and understood.