DevOps vs SRE vs Platform Engineering

DevOps improves how people deliver and operate software together. SRE applies engineering to service reliability. Platform engineering provides shared capabilities as an internal product. You can practice all three in the same organization, and a small team can perform work from all three without creating three departments.

Start with the constraint: slow handoffs, unreliable service, or repeated infrastructure work. Then assign an improvement and an owner. A new team name is easy to deploy; a working ownership agreement takes more care.

TL;DR

Quick Example

This complete Python example calculates an illustrative request-based error budget. Save it as budget.py and run python budget.py. It does not query monitoring, approve deployments, or define an incident policy.

For these fictional inputs, the budget allows 1,000 bad requests and 650 have occurred, leaving 350. This is a count over a defined observation window, not 350 minutes of downtime. A real SLI needs an explicit eligible population, success definition, and window. Google's SLO implementation guidance explains how objectives and error budgets support reliability decisions.

The application team improves the failing behavior. Reliability work investigates the failure and revisits alerts. Platform work can make the agreed measurements available consistently. DevOps practices make this a shared improvement instead of a ticket passed around a circle.

Core Concepts

DevOps is a way of working across boundaries

Google's SRE workbook discussion of DevOps describes collaboration, reduced silos, automation, measurement, and shared learning. A deployment tool can support those practices, but installing it does not settle conflicting incentives or unclear responsibilities.

Ask who can change a release process, who understands the application, and who receives feedback after a failure. Those answers reveal more than whether the organization advertises a DevOps department. A dedicated enablement team can help; a ticket queue that separates builders from consequences can preserve the original problem under a different heading.

SRE makes reliability an engineering concern

An SLI measures a defined aspect of service experience. An SLO sets its target. An error budget expresses the permitted unreliability implied by that target. The point is to support decisions about risk and improvement, rather than pursue a decorative wall of uptime charts.

SRE also addresses toil: recurring operational work that is manual, automatable, tactical, and lacking durable improvement. Google's toil chapter distinguishes this from every unpleasant task. Designing a recovery tool can be engineering work even if the debugging is tedious; repeatedly running the same manual recovery may be toil.

Platform engineering serves internal users

The CNCF platforms white paper describes platforms as integrated capabilities presented around their users' needs. Those capabilities can include delivery, observability, environments, and access to backing services. The interface might be an API, a command, a template, or a portal.

A useful platform owns the experience through upgrades and support. A repository of copied templates is only part of that experience. Developers need to know which version they use, how exceptions work, and how to recover when the standard path fails.

Compare goals, responsibilities, and evidence

These are practical distinctions, not mandatory organizational boundaries.

For delivery measurement, consult the current DORA metrics guide. Pair change throughput with instability measures. Our recommendation is to use these measures for improving a service's delivery system, not grading individuals or comparing unlike applications without context.

A deployment-frequency improvement is incomplete evidence if failures become harder to recover from. A platform adoption target is equally incomplete if teams use it only because alternatives were prohibited. Keep the metric attached to the decision it is intended to support.

Follow one service through the overlap

Consider a hypothetical order API used by several product teams. Releases wait for an environment ticket, and customers sometimes see failed submissions after a deployment. Each team also maintains a different dashboard.

First, map one change from review to customer use. Separate waiting for access from build time, deployment time, and application diagnosis. This is an editorial diagnostic: it helps avoid buying a platform to solve a release approval disagreement.

Next, agree on the service's success signal. The product owner and engineers define which submissions count and which failures matter. Reliability work checks whether the indicator reflects the customer journey and whether a known failure would appear in it. The Python budget example is arithmetic only; the difficult work is choosing a trustworthy denominator.

Then package repeated needs. A platform capability might create an environment with the agreed telemetry, ownership labels, and supported release workflow. One product team should try it before a broad rollout. Record tasks they still cannot complete without help. A successful demonstration is a useful start, but operating through an upgrade and a failed deployment tests a different part of the promise.

Finally, agree on incident responsibilities. The platform team investigates a shared deployment service failure; application owners investigate an application regression; an incident lead coordinates when the boundary is unclear. One named lead can bring in several specialists. Making every alert “shared ownership” without a response agreement merely leaves everyone waiting politely.

Decide what to improve first

Address handoffs before adding another abstraction

If work spends days waiting for unclear approval, clarify decision rights and feedback first. Evaluate delivery automation once the process is understandable. Reverse this priority when the waiting is a repeated, well-defined provisioning task that can safely become self-service.

Invest in reliability work when repeated failures consume the team

Choose a user-facing indicator, investigate recurring incidents, and reserve time for durable fixes. Adding more alerts is useful only when they improve detection and response. Revisit the approach if pages increase without changing what responders can do.

Build the smallest platform capability with repeat demand

Start with a supported path for a task several teams already perform. Include an owner, documentation, and a way to report problems. Broaden the offering when users can complete that task and the platform team can support its lifecycle. A one-off specialist workload may be better served directly than forced through a universal platform.

Best Practices

Write down the support boundary

For each shared capability, name its operator and the application's operator. Include escalation, supported versions, and the conditions under which a team may take an alternative route. Review this agreement after an incident exposes a gap.

Protect time for improvement

Track repeated interruptions alongside planned engineering. When support demand continuously displaces improvement, reduce or redesign the supported scope. Do not copy another company's staffing ratio as if it were a law of nature.

Review the whole outcome

Compare before and after on the same service and task. Keep deployment flow, failures, developer effort, and customer effects visible. Document changed traffic or scope that makes the comparison less direct. Improvement evidence needs a denominator too.

Common Mistakes

Treating the names as a maturity ladder

Bad: Replace DevOps with SRE, then replace SRE with platform engineering because each sounds newer.

Correct: Identify the delivery, reliability, or reuse problem and choose practices that address it. Keep what already works.

Outsourcing all reliability to an SRE team

Bad: Application developers stop considering failure because a reliability team now exists.

Correct: Define a joint engagement model. Application design and operational feedback remain connected; specialists support specific reliability work.

Counting platform features instead of completed work

Bad: Declare success after adding ten buttons to a portal.

Correct: Observe whether a developer can finish an agreed task, diagnose failure, and get support. Remove an unused feature when its maintenance cost exceeds its value.

FAQ

Can one person do DevOps, SRE, and platform work?

Yes, especially in a small team. Make the responsibilities and time commitments explicit. The conflict appears when the same person is expected to handle unlimited support and substantial project work simultaneously.

Is platform engineering replacing DevOps?

It can provide a practical way to share capabilities, but it does not remove the need for collaboration and delivery feedback. A platform can also become a silo if its incentives and support model are poorly designed.

Which career path should I choose?

Read the actual role: software design, operational troubleshooting, on-call load, internal product work, and decision authority. Ask for examples of a normal week and a recent incident. This is career exploration guidance, not a salary or hiring forecast.

Does SRE mean a target of zero downtime?

No. Reliability objectives should reflect the service's users and constraints. Define the measurement and risk policy with stakeholders; the example target on this page is fictional.

Related Topics

References