Overview
In modern software engineering, the relationship between SRE (Site Reliability Engineering) and development teams is one of the most critical and delicate aspects. Development pursues “fast delivery of new features,” while SRE pursues “stable system operation” — these two goals are inherently in tension. If the collaboration model is poorly designed, the result ranges from inefficiency and finger-pointing to frequent production incidents and collapsed trust between teams.
The Google SRE Book contains a classic observation: “The central SRE contradiction is that we need to simultaneously allow development teams to move quickly while maintaining the reliability of the system.” This statement remains as accurate today as ever. The core issue is not “whether to collaborate” — the answer is obvious — but rather how to collaborate: what organizational model, process mechanisms, and tooling support can make these two goals not conflict, but mutually reinforce each other.
This article systematically covers common collaboration models between SRE and development teams, root causes of conflict, engineering solutions, and the evolution toward new trends such as Platform Engineering. The content draws on authoritative sources including the Google SRE Book and Team Topologies, combined with frontline production experience.
Root Causes of Conflict: Why SRE and Development Are Naturally in Tension
Misaligned Incentives
The deepest root cause of SRE-development conflict is the natural misalignment of their incentive structures:
| Dimension | Development Team | SRE Team |
|---|---|---|
| Core Goal | Feature delivery speed | System stability |
| Success Criteria | Release frequency, story points completed | SLA achievement, incident count |
| Risk Appetite | Willing to accept some risk for speed | Conservative, reducing change risk |
| Time Horizon | Short-term (current sprint/quarter) | Long-term (full system lifecycle) |
| Attitude Toward Change | Change is the source of value | Change is the source of incidents |
This misalignment is not a matter of “who is right or wrong” — it is a structural contradiction arising from organizational division of labor. The SRE model pioneered by Google is fundamentally an attempt to reconcile this tension through engineering practices.
Common Collaboration Failure Modes
In practice, the following failure patterns recur:
Pattern 1: SRE Reduced to “Ops Labor”
Development throws code over the wall; SRE handles deployment, monitoring, on-call, and cleanup. SRE has no time or energy for engineering improvements, degenerating into senior operations. This is the most common degeneration pattern.
Pattern 2: SRE as the “Release Gatekeeper”
SRE holds production environment gatekeeping power but lacks the engineering capability to help development improve quality. They can only “block releases” to reduce risk. The result: development sees SRE as an obstacle, SRE sees development as unreliable, and trust continues to erode.
Pattern 3: Ambiguous “Shared Ownership”
Everyone is “collectively responsible” for system reliability, which means no one is actually responsible. When incidents occur, teams blame each other; when improvements are needed, no one takes the lead.
Pattern 4: Complete Isolation Between SRE and Development
The SRE team operates as a silo with almost no daily interaction with development. SRE lacks business context understanding, making architecture decisions disconnected from reality; development doesn’t understand SRE’s work and cannot effectively cooperate.
Five Typical Collaboration Models
Depending on organizational scale, business stage, and technical maturity, SRE-development collaboration models vary. Here are five proven models.
Model 1: Embedded SRE
Description: SRE engineers are embedded into specific product development teams as team members, participating in daily development work. Typically, a product team is assigned 1-2 SREs.
Applicable Scenarios:
- Mid-to-large organizations with sufficient SRE talent
- Core business systems with high reliability requirements
- Microservices architecture with relatively independent services
Advantages:
- SRE has deep understanding of business context
- Fast response without cross-team coordination
- Reliability requirements naturally integrated into the development process
- Strong trust within the team
Disadvantages:
- SRE can be assimilated by development, gradually abandoning the reliability stance
- Difficult to establish unified SRE practice standards
- SRE is isolated in small teams, lacking technical growth and exchange
- Suboptimal personnel utilization (SRE workload may be low at certain periods)
Practical Recommendations:
# Organizational Structure Example for Embedded SRE
Product Team A
├── Development Engineers × 6
├── QA Engineers × 2
├── Product Manager × 1
└── Embedded SRE × 1 (50%-100% commitment)
Product Team B
├── Development Engineers × 4
├── QA Engineers × 1
├── Product Manager × 1
└── Embedded SRE × 1 (50%-100% commitment)
SRE Center of Excellence (CoE)
├── SRE Technical Lead
├── Platform SRE (tooling and platform development)
└── Dotted-line management of all embedded SREs
Key practice: Even embedded SREs should maintain a dotted-line reporting relationship with the central SRE team to ensure unified technical standards and career development.
Model 2: Centralized SRE
Description: SRE exists as an independent team, providing reliability support to multiple development teams as a “service.” Collaboration is driven by tickets, projects, or SLAs.
Applicable Scenarios:
- Limited SRE team size needing to serve multiple product lines
- Organization in early stages of SRE practice, needing to build capabilities centrally
- Clear platform/infrastructure layer
Advantages:
- Unified SRE practice standards
- Sufficient career development and technical exchange
- Can concentrate efforts on critical problems
- Flexible resource allocation
Disadvantages:
- Insufficient business understanding
- Response speed limited by queues and scheduling
- Tendency toward “over-the-wall” collaboration
- Development teams lack a sense of active participation in reliability
Practical Recommendations:
A centralized SRE team should establish a clear service catalog and SLA to avoid becoming a disorderly “order-taking” team:
| Service Type | Description | Response SLA | Example |
|---|---|---|---|
| L2 Incident Support | Production incident technical support | 15 min response | Database failover, traffic shifting |
| Architecture Review | Reliability design review | 3 business days | Pre-launch review for new services |
| SLO Definition | Assist in defining and implementing SLOs | 5 business days | SLI/SLO design for new services |
| Platform Onboarding | Monitoring/alerting/deployment platform access | 2 business days | Prometheus monitoring integration |
| Emergency Change Review | High-risk change review | 1 hour | Database schema changes |
Model 3: Hub and Spoke Model
Description: A central SRE team (Hub) is responsible for platform, tooling, and standards, while embedded SREs (Spoke) are deployed to product teams. The Hub provides technical support, training, and quality assurance; Spoke SREs deeply engage with business execution.
Applicable Scenarios:
- Large organizations with multiple product lines
- Moderate SRE maturity, needing to scale practices
- Clear platform engineering strategy
Advantages:
- Balances depth (business embedding) and breadth (unified standards)
- Clear career development path for SREs
- Knowledge and best practices spread efficiently
- Hub team focuses on platform building, avoiding daily operations drag
Disadvantages:
- High organizational complexity and management cost
- Potential priority conflicts between Hub and Spoke
- Requires mature personnel rotation mechanisms
- Not suitable for small organizations
Practical Recommendations:
# Hub and Spoke RACI Matrix
| Responsibility | Hub SRE | Spoke SRE | Dev Team | Product Manager |
|---------------|---------|-----------|----------|-----------------|
| SLO Definition | A (standard setting) | R (execution) | C (business input) | I |
| Monitoring & Alerting | R (platform) | R (business rules) | C | I |
| Incident Response | C (L2 support) | R (L1 response) | R (dev participation) | I |
| Postmortem | C (quality assurance) | A (facilitation) | R (root cause) | I |
| Capacity Planning | C (tooling) | R (execution) | C | C |
| Automation Tools | R (platform dev) | C (requirements) | C | I |
R = Responsible, A = Accountable, C = Consulted, I = Informed
Model 4: Platform Engineering Model
Description: The SRE team transforms into an internal platform team, building self-service platforms (Golden Path / Paved Road). Development teams consume platform services to achieve reliability goals without directly interacting with SRE.
This is the most prominent evolution direction in recent years. The book Team Topologies defines this as the relationship between a “Platform Team” and “Stream-aligned Teams.”
Core Philosophy:
# Traditional Model vs Platform Engineering Model
## Traditional Model
Dev → submit request → SRE executes → Dev waits → SRE delivers
(repeated each time, bottleneck at SRE)
## Platform Engineering Model
Dev → use self-service platform → complete autonomously → consult as needed
(one-time investment, long-term benefit)
Applicable Scenarios:
- Organizations with high technical maturity
- Ability to invest in internal developer platforms
- Desire to scale SRE practices
- Development teams willing and able to use self-service tools
Advantages:
- Eliminates SRE bottleneck, supports scaling
- High development autonomy, fast delivery
- Reliability built into the platform, not imposed as constraints
- SRE shifts from “manual assurance” to “tooling assurance”
Disadvantages:
- Large upfront investment in platform building
- Requires product thinking that many SRE teams lack
- When platform coverage is incomplete, developers still need SRE
- The platform itself needs maintenance and evolution
Practical Recommendations — Golden Path Design Principles:
# Golden Path Example: Microservice Standard Template
service_template:
# Code scaffold
scaffold:
language: go
framework: gin
grpc: true
# CI/CD auto-configuration
cicd:
pipeline: github-actions
auto_deploy: staging # main branch auto-deploys to staging
prod_requires: manual_approval
# Observability auto-injection
observability:
metrics: prometheus # auto-expose /metrics
tracing: opentelemetry # auto-inject trace
logging: loki # structured logs auto-collected
# SLO auto-generation
slo:
availability: 99.9%
latency_p99: 200ms
error_budget_policy: auto # auto-pause deploys when budget exhausted
# Security baseline
security:
image_scan: true
secret_scan: true
rbac: least-privilege
Model 5: Consulting SRE Model
Description: The SRE team does not directly handle operational tasks. Instead, it provides expertise, tools, and best practices as consultants, helping development teams take on operational responsibilities themselves.
Applicable Scenarios:
- Development teams willing and able to self-operate (You build it, you run it)
- Small SRE team that cannot cover all products
- Organization with some DevOps maturity
Advantages:
- Development teams have full ownership
- SRE focuses on high-value engineering improvements
- Suitable for organization-wide rollout
- Flat organization, no hierarchical barriers
Disadvantages:
- High demands on development teams
- Lacks enforcement power; practices depend on persuasion
- May lack timely support during critical periods
- Difficult to ensure consistency
Engineering Mechanisms for Collaboration
Organizational models solve “who does what,” but effective collaboration requires concrete engineering mechanisms.
Shared Error Budget Governance
The error budget is SRE’s core tool for coordinating development and stability. However, many organizations treat it as SRE’s “weapon” — used to block development releases — which fundamentally misunderstands its design intent.
Correct Use of Error Budgets:
The error budget is not SRE’s unilateral tool; it is a shared decision framework between development and SRE.
#!/usr/bin/env python3
"""
Error Budget Consumption Monitoring and Automated Decision Framework
Automatically triggers corresponding actions when budget consumption exceeds thresholds
"""
import datetime
from dataclasses import dataclass
from enum import Enum
class BudgetAction(Enum):
GREEN = "Normal releases"
YELLOW = "Releases require SRE review"
ORANGE = "Only fix releases allowed"
RED = "Freeze all non-fix releases"
@dataclass
class ErrorBudget:
slo_target: float # SLO target, e.g. 99.9%
window_days: int # Error budget window, e.g. 30 days
total_requests: int # Total requests in window
error_requests: int # Error requests in window
@property
def availability(self) -> float:
"""Current availability"""
if self.total_requests == 0:
return 100.0
return (1 - self.error_requests / self.total_requests) * 100
@property
def total_budget(self) -> float:
"""Total error budget (allowed error requests)"""
allowed_error_rate = 100 - self.slo_target
return self.total_requests * allowed_error_rate / 100
@property
def budget_consumed(self) -> float:
"""Percentage of error budget consumed"""
if self.total_budget == 0:
return 0
return min(self.error_requests / self.total_budget * 100, 100)
@property
def budget_remaining(self) -> float:
"""Remaining error budget percentage"""
return max(100 - self.budget_consumed, 0)
def get_action(self) -> BudgetAction:
"""Return action recommendation based on budget consumption"""
consumed = self.budget_consumed
if consumed < 50:
return BudgetAction.GREEN
elif consumed < 75:
return BudgetAction.YELLOW
elif consumed < 100:
return BudgetAction.ORANGE
else:
return BudgetAction.RED
def summary(self) -> str:
"""Generate error budget summary report"""
action = self.get_action()
return (
f"=== Error Budget Report ===\n"
f"SLO Target: {self.slo_target}%\n"
f"Current Availability: {self.availability:.3f}%\n"
f"Budget Consumed: {self.budget_consumed:.1f}%\n"
f"Budget Remaining: {self.budget_remaining:.1f}%\n"
f"Current Action: {action.value}\n"
f"Window: Last {self.window_days} days\n"
f"Total Requests: {self.total_requests:,}\n"
f"Error Requests: {self.error_requests:,}"
)
# Example usage
if __name__ == "__main__":
budget = ErrorBudget(
slo_target=99.9,
window_days=30,
total_requests=10_000_000,
error_requests=8_000
)
print(budget.summary())
print()
# Simulate near-exhausted budget
budget2 = ErrorBudget(
slo_target=99.9,
window_days=30,
total_requests=10_000_000,
error_requests=9_500
)
print(budget2.summary())
Sample output:
=== Error Budget Report ===
SLO Target: 99.9%
Current Availability: 99.920%
Budget Consumed: 80.0%
Budget Remaining: 20.0%
Current Action: Only fix releases allowed
Window: Last 30 days
Total Requests: 10,000,000
Error Requests: 8,000
=== Error Budget Report ===
SLO Target: 99.9%
Current Availability: 99.905%
Budget Consumed: 95.0%
Budget Remaining: 5.0%
Current Action: Only fix releases allowed
Window: Last 30 days
Total Requests: 10,000,000
Error Requests: 9,500
Key Principles:
- Error budget decisions are automated, not subject to SRE discretion
- Both development and SRE see the same budget data
- When budget is exhausted, restricting releases is rule-based, not discretionary
- When budget is sufficient, SRE should not impede rapid iteration
Production Readiness Review (PRR)
The Production Readiness Review is a key quality gate for SRE-development collaboration. It is not a “release-blocking” checkpoint, but an engineering process that helps development teams systematically improve service quality.
# Production Readiness Review Checklist
## 1. Architecture & Design
- [ ] Service architecture diagram is clear, dependencies are explicit
- [ ] Single points of failure identified with elimination plans
- [ ] Capacity assessment completed, bottlenecks annotated
- [ ] Failure domain analysis completed
## 2. Capacity & Elasticity
- [ ] Autoscaling configured correctly
- [ ] Degradation strategies defined and tested
- [ ] Circuit breaker and rate limiting in place
- [ ] Backpressure mechanism implemented (if applicable)
## 3. Observability
- [ ] Golden signals (latency, traffic, errors, saturation) instrumented
- [ ] Key business metrics have dedicated dashboards
- [ ] Alerting rules configured and validated
- [ ] Distributed tracing integrated
- [ ] Log format standardized, centrally collected
## 4. Change Management
- [ ] CI/CD pipeline covers test → canary → production
- [ ] Canary deployment strategy configured
- [ ] Rollback mechanism validated (≤5 minutes)
- [ ] Change approval process is clear
## 5. Incident Response
- [ ] Runbook written and validated in practice
- [ ] On-call rotation arranged
- [ ] Escalation path is clear
- [ ] On-call tooling is ready
## 6. Data & State
- [ ] Data backup strategy implemented
- [ ] Data recovery rehearsed
- [ ] Data consistency mechanism in place
- [ ] Cache invalidation strategy is reasonable
## 7. Security
- [ ] Authentication and authorization in place
- [ ] Sensitive data encrypted at rest
- [ ] Dependency vulnerabilities scanned regularly
- [ ] Container image security scanning
## 8. SLO Definition
- [ ] SLIs defined and aligned with business
- [ ] SLO targets confirmed with stakeholders
- [ ] Error budget policy is active
- [ ] Action plan for budget exhaustion agreed upon
Knowledge Sharing and Collaborative Documentation
Knowledge silos between SRE and development teams are often the direct cause of collaboration barriers. Establishing sustainable knowledge sharing mechanisms is critical.
Practical Recommendations:
Co-author Runbooks: Runbooks should not be SRE-written for SRE only. Development teams should jointly participate in writing and maintaining them. Runbooks that both dev and ops understand have real operational value.
Open Postmortems: All postmortems should be open to development teams, encouraging dev participation in root cause analysis and improvement discussions. Postmortems are learning opportunities, not blame sessions.
SRE Whitepapers: The SRE team regularly publishes internal whitepapers summarizing observability best practices, capacity planning methods, failure mode analyses, etc., as organizational knowledge assets.
Rotating Tech Talks: SRE and development teams alternate hosting technical sharing sessions, learning each other’s domain knowledge.
Unified Toolchain
Toolchain fragmentation is an invisible barrier to SRE-development collaboration. When SRE uses one set of tools and development uses another, information is lost at tool boundaries.
# Unified Toolchain Example
Monitoring: Prometheus + VictoriaMetrics (SRE and dev share the same dashboards)
Logging: Loki + Grafana (dev can query autonomously)
Tracing: Jaeger (dev can troubleshoot autonomously)
Alerting: Alertmanager → unified notification channels
Deployment: ArgoCD (GitOps, dev operates autonomously)
Incident Mgmt: PagerDuty / self-built on-call system
Knowledge Base: Confluence / Wiki (unified documentation center)
Collaboration from a Team Topologies Perspective
Matthew Skelton and Manuel Pais proposed four team topology types and three team interaction modes in Team Topologies, providing a theoretical framework for SRE-development collaboration.
Four Team Types
| Type | Description | SRE Context |
|---|---|---|
| Stream-aligned Team | Organized around value streams, directly customer-facing | Product development teams |
| Platform Team | Provides self-service platform, reduces cognitive load | SRE platform team |
| Enabling Team | Temporarily helps other teams acquire new capabilities | SRE consulting/enabling role |
| Complicated Subsystem Team | Maintains complex subsystems requiring specialized expertise | Database SRE, Network SRE |
Three Interaction Modes
| Mode | Description | Applicable Scenario |
|---|---|---|
| Collaboration | Deep collaboration, high-frequency communication | New service launch, major architecture changes |
| X-as-a-Service | Consumer-provider relationship | Daily platform usage, self-service tools |
| Facilitating | Helping other teams learn | SRE practice promotion, training and enablement |
Key Insights from Team Topologies
Team cognitive load has a ceiling: Do not make one team responsible for too many things simultaneously. If the development team’s cognitive load is already at its limit, adding operational responsibilities will only backfire. A platform team should reduce cognitive load.
Interaction modes should evolve over time: During new service launch, SRE and development are in Collaboration mode; once the service stabilizes, transition to X-as-a-Service mode; when introducing new practices, use Facilitating mode.
Platform team output is a “product”: Internal platforms should be treated like products — with product managers, user research, and roadmaps. This is not a part-time SRE responsibility but requires dedicated investment.
Evolution from DevOps to Platform Engineering
Limitations of DevOps
The DevOps movement attempted to solve problems by breaking down walls between Dev and Ops, but in practice often degenerated into “developers also doing operations” or “ops learning to write scripts.” DevOps lacks explicit guidance on organizational structure, causing many organizations to “do DevOps but see no results.”
Rise of Platform Engineering
Platform engineering is the natural evolution of DevOps, with the core idea being:
# DevOps approach
Development team → handle everything themselves → DevOps engineers
Problem: excessive cognitive load, duplicated effort
# Platform Engineering approach
Platform team → build self-service platform → development team consumes platform
Advantage: separation of concerns, capability reuse, scalability
Humanitec’s Developer Experience Benchmark Report shows that organizations adopting Internal Developer Platforms (IDPs) see 2-3x improvement in deployment frequency and over 50% reduction in incident recovery time.
SRE’s Role in Platform Engineering
In the platform engineering model, the SRE role transforms:
| Traditional SRE | Platform Engineering SRE |
|---|---|
| Deploy and maintain monitoring systems | Build monitoring-as-code self-service platforms |
| Manually configure alert rules | Developers declaratively define alerts |
| Manual capacity planning | Autoscaling + capacity alerting |
| Execute incident response | Build automated incident response tooling |
| Execute Runbooks manually | Runbook automation (auto-remediation) |
| Directly operate production | Provide safe production operation tools |
Measuring Collaboration Effectiveness
Whether collaboration is good cannot be based on feelings — it needs quantification. The following are key metrics for measuring SRE-development collaboration effectiveness.
Collaboration Health Metrics
| Metric | Description | Healthy Range | Warning Signal |
|---|---|---|---|
| Release Block Rate | Percentage of releases blocked by SRE review | <10% | >25% means overly conservative |
| Avg Release Review Cycle | Average time from submission to SRE approval | <2 days | >5 days means SRE is a bottleneck |
| Incident MTTR | Mean time to restore for incidents | <60 min | >4 hours suggests process issues |
| Dev Participation in Incidents | Rate of active dev participation in incident response | >80% | <50% means dev is “throwing over the wall” |
| SRE Toil Ratio | Percentage of time SRE spends on repetitive ops | <30% | >50% means automation is needed |
| Platform Self-Service Rate | Percentage of operations dev completes via self-service | >70% | <30% means platform capability is insufficient |
| Automated Budget Decision Rate | Percentage of budget decisions triggered by automation | >80% | <30% means too much manual judgment |
Applying DORA Metrics
Google’s DORA team’s four key metrics are the classic framework for measuring collaboration effectiveness:
#!/bin/bash
# DORA metrics collection script example
# Collects DORA four metrics from CI/CD and monitoring systems
# 1. Deployment Frequency
# Count deploys in the last 30 days
deploys=$(git log --oneline --since="30 days ago" --grep="deploy" | wc -l)
daily_avg=$(echo "scale=1; $deploys / 30" | bc)
echo "Deployment Frequency: ${daily_avg} times/day"
# 2. Lead Time for Changes
# Average time from PR submission to merge
lead_time=$(gh pr list --state merged --limit 100 \
--json createdAt,mergedAt \
--jq '[.[] | (.mergedAt | fromdate) - (.createdAt | fromdate)] | add / length / 3600')
echo "Lead Time for Changes: ${lead_time} hours"
# 3. Change Failure Rate
# Percentage of deploys causing rollback or incidents
total_deploys=120
failed_deploys=6
failure_rate=$(echo "scale=1; $failed_deploys * 100 / $total_deploys" | bc)
echo "Change Failure Rate: ${failure_rate}%"
# 4. Time to Restore Service
# Average time from incident detection to recovery
mttr_hours=1.5
echo "Time to Restore Service: ${mttr_hours} hours"
echo "---"
echo "DORA Rating:"
if (( $(echo "$daily_avg >= 1" | bc -l) )) && \
(( $(echo "$lead_time < 24" | bc -l) )) && \
(( $(echo "$failure_rate < 15" | bc -l) )) && \
(( $(echo "$mttr_hours < 1" | bc -l) )); then
echo "Elite"
elif (( $(echo "$daily_avg >= 0.1" | bc -l) )) && \
(( $(echo "$lead_time < 168" | bc -l) )) && \
(( $(echo "$failure_rate < 30" | bc -l) )); then
echo "High"
else
echo "Needs improvement"
fi
Case Study: Transformation from Conflict to Collaboration
The following is a real transformation path of SRE-development collaboration at a mid-sized internet company.
Background
A company with approximately 200 engineers and 15 microservice teams. Original model: a centralized operations team handled all production operations; development submitted tickets and operations executed deployments, configuration, and incident response. Problems: long deployment cycles (average 5 days), frequent incidents (10+ P2 per month), mutual complaints between dev and ops.
Transformation Roadmap
Phase 1 (Months 1-3): Building Trust
├── Introduce error budget concept; jointly define SLOs
├── Open postmortems; dev participates in root cause analysis
├── Rename operations team to SRE team
└── Establish regular SRE-dev communication (weekly sync)
Phase 2 (Months 4-6): Tool Empowerment
├── Build unified CI/CD platform (ArgoCD + GitHub Actions)
├── Dev self-service deployment to staging
├── Unified monitoring/alerting platform (Prometheus + Grafana)
├── Dev can self-service query monitoring and logs
└── SRE authors service templates (Golden Path)
Phase 3 (Months 7-9): Responsibility Transfer
├── Dev teams take over production deployment operations (SRE reviews, not executes)
├── Dev teams participate in on-call rotation (SRE as L2 support)
├── Production Readiness Review process launched
└── Runbook co-authoring mechanism running
Phase 4 (Months 10-12): Platformization
├── Internal Developer Platform (IDP) launched
├── Self-service SLO definition and alert configuration
├── Automated capacity management and autoscaling
└── SRE team focuses on platform building (toil < 20%)
Key Results
| Metric | Before | After | Change |
|---|---|---|---|
| Deployment Frequency | 2/week | 5+/day | 15x |
| Lead Time for Changes | 5 days | 4 hours | 30x |
| Incident MTTR | 4 hours | 35 minutes | 7x |
| P2+ Incidents/month | 10+ | 3 | -70% |
| SRE Toil Ratio | 65% | 18% | -72% |
| Dev Satisfaction | 2.1/5 | 4.2/5 | +100% |
Common Pitfalls and Avoidance Strategies
Pitfall 1: Treating SRE as “Senior Operations”
Symptom: SRE spends most of their time processing tickets, manual deployments, and restarting services.
Avoidance: Set a toil work ceiling (e.g., no more than 50%); excess must trigger automation projects. Establish engineering output metrics for SRE (e.g., automation coverage, platform adoption rate).
Pitfall 2: No Error Budget, Relying on “SRE Decides”
Symptom: Whether to allow a release is subjectively judged by SRE, lacking quantitative basis.
Avoidance: In any SRE-dev collaboration model, SLO and error budget mechanisms must be established first. Collaboration without error budgets is essentially “whoever is louder wins.”
Pitfall 3: Platform Building Without Productization
Symptom: The SRE team built a bunch of tools, but no one uses them; developers still come to SRE for manual operations.
Avoidance: Internal platforms need product managers (can be SRE兼任), conducting user research, collecting feedback, and iterating continuously. Platform success metrics are “self-service rate” and “developer satisfaction.”
Pitfall 4: Skipping Cultural Change, Jumping to Tools
Symptom: Introduced ArgoCD, Grafana, etc., but developers don’t know how to use them, don’t want to use them, or don’t trust them.
Avoidance: Before building tools, first align culture — jointly define SLOs, participate in postmortems together, and build trust. Tools are amplifiers; culture is the foundation.
Summary
The SRE-development collaboration model is not one-size-fits-all; it should be chosen based on organizational scale, technical maturity, and business stage. Key takeaways:
No universal model: Embedded, centralized, hybrid, and platform engineering each have their applicable scenarios. Choose based on your organization’s actual situation.
Error budget is the cornerstone of collaboration: It transforms “whether to allow a release” from subjective judgment to quantitative decision, eliminating the biggest source of friction between SRE and development.
Platform engineering is the future direction: By building self-service platforms, reliability is built into the development process rather than imposed as external constraints. SRE value shifts from “manual assurance” to “tooling assurance.”
Team Topologies provides a theoretical framework: Understanding team cognitive load and interaction mode evolution helps design appropriate collaboration structures.
Quantification drives improvement: Use DORA metrics and collaboration health metrics to continuously measure and optimize collaboration effectiveness.
Culture precedes tools: The foundation of any successful collaboration model is a culture of trust and shared responsibility. Tools amplify culture but cannot replace it.
Ultimately, SRE-development collaboration is not a zero-sum game. A good collaboration model enables development to deliver value faster and more safely, while SRE focuses on engineering improvements rather than transactional labor. Achieving this requires a three-pronged approach: organizational decision-making, engineering practices, and cultural building.
References:
- Google SRE Book, “Chapter 27: SRE Engagement” — https://sre.google/sre-book/sre-engagement/
- Matthew Skelton & Manuel Pais, Team Topologies — https://teamtopologies.com/
- Google DORA Research — https://dora.dev/
- Humanitec, Platform Engineering — https://platformengineering.org/
References & Acknowledgments
This article referenced the following materials during writing. We thank the original authors for their contributions:
- sre.google — Google SRE Team, referenced for sre engagement
- teamtopologies.com — Teamtopologies, referenced for technical content
- dora.dev — Dora, referenced for technical content
- platformengineering.org — Platformengineering, referenced for technical content