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:

DimensionDevelopment TeamSRE Team
Core GoalFeature delivery speedSystem stability
Success CriteriaRelease frequency, story points completedSLA achievement, incident count
Risk AppetiteWilling to accept some risk for speedConservative, reducing change risk
Time HorizonShort-term (current sprint/quarter)Long-term (full system lifecycle)
Attitude Toward ChangeChange is the source of valueChange 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 TypeDescriptionResponse SLAExample
L2 Incident SupportProduction incident technical support15 min responseDatabase failover, traffic shifting
Architecture ReviewReliability design review3 business daysPre-launch review for new services
SLO DefinitionAssist in defining and implementing SLOs5 business daysSLI/SLO design for new services
Platform OnboardingMonitoring/alerting/deployment platform access2 business daysPrometheus monitoring integration
Emergency Change ReviewHigh-risk change review1 hourDatabase 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:

  1. Error budget decisions are automated, not subject to SRE discretion
  2. Both development and SRE see the same budget data
  3. When budget is exhausted, restricting releases is rule-based, not discretionary
  4. 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:

  1. 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.

  2. 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.

  3. SRE Whitepapers: The SRE team regularly publishes internal whitepapers summarizing observability best practices, capacity planning methods, failure mode analyses, etc., as organizational knowledge assets.

  4. 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

TypeDescriptionSRE Context
Stream-aligned TeamOrganized around value streams, directly customer-facingProduct development teams
Platform TeamProvides self-service platform, reduces cognitive loadSRE platform team
Enabling TeamTemporarily helps other teams acquire new capabilitiesSRE consulting/enabling role
Complicated Subsystem TeamMaintains complex subsystems requiring specialized expertiseDatabase SRE, Network SRE

Three Interaction Modes

ModeDescriptionApplicable Scenario
CollaborationDeep collaboration, high-frequency communicationNew service launch, major architecture changes
X-as-a-ServiceConsumer-provider relationshipDaily platform usage, self-service tools
FacilitatingHelping other teams learnSRE practice promotion, training and enablement

Key Insights from Team Topologies

  1. 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.

  2. 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.

  3. 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 SREPlatform Engineering SRE
Deploy and maintain monitoring systemsBuild monitoring-as-code self-service platforms
Manually configure alert rulesDevelopers declaratively define alerts
Manual capacity planningAutoscaling + capacity alerting
Execute incident responseBuild automated incident response tooling
Execute Runbooks manuallyRunbook automation (auto-remediation)
Directly operate productionProvide 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

MetricDescriptionHealthy RangeWarning Signal
Release Block RatePercentage of releases blocked by SRE review<10%>25% means overly conservative
Avg Release Review CycleAverage time from submission to SRE approval<2 days>5 days means SRE is a bottleneck
Incident MTTRMean time to restore for incidents<60 min>4 hours suggests process issues
Dev Participation in IncidentsRate of active dev participation in incident response>80%<50% means dev is “throwing over the wall”
SRE Toil RatioPercentage of time SRE spends on repetitive ops<30%>50% means automation is needed
Platform Self-Service RatePercentage of operations dev completes via self-service>70%<30% means platform capability is insufficient
Automated Budget Decision RatePercentage 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

MetricBeforeAfterChange
Deployment Frequency2/week5+/day15x
Lead Time for Changes5 days4 hours30x
Incident MTTR4 hours35 minutes7x
P2+ Incidents/month10+3-70%
SRE Toil Ratio65%18%-72%
Dev Satisfaction2.1/54.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:

  1. No universal model: Embedded, centralized, hybrid, and platform engineering each have their applicable scenarios. Choose based on your organization’s actual situation.

  2. 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.

  3. 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.”

  4. Team Topologies provides a theoretical framework: Understanding team cognitive load and interaction mode evolution helps design appropriate collaboration structures.

  5. Quantification drives improvement: Use DORA metrics and collaboration health metrics to continuously measure and optimize collaboration effectiveness.

  6. 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:

References & Acknowledgments

This article referenced the following materials during writing. We thank the original authors for their contributions:

  1. sre.google — Google SRE Team, referenced for sre engagement
  2. teamtopologies.com — Teamtopologies, referenced for technical content
  3. dora.dev — Dora, referenced for technical content
  4. platformengineering.org — Platformengineering, referenced for technical content