The terms platform engineering, DevOps, and SRE have been used interchangeably, in opposition, and as overlapping practices for nearly a decade. By 2026 the industry has roughly converged — but only roughly. Different companies still use the same words for different jobs, and the resulting org-design conversations stall because nobody quite agrees on what they’re discussing.
This is the working version we use at Ænix when we engage with a customer’s engineering organization.
The three terms in one paragraph each
DevOps is a cultural and operational practice within product teams. Its premise: the same team that builds the software is responsible for operating it in production. Tooling supports this — CI/CD pipelines, IaC, observability — but tooling alone is not DevOps. The function lives inside product teams, not as a separate department.
SRE (Site Reliability Engineering) is a discipline that applies software engineering to operations. The original Google formulation: SREs are software engineers tasked with keeping production reliable, with explicit error budgets, SLOs, and a rule that operational toil cannot exceed 50% of their time. SRE can sit inside product teams (embedded SRE) or as a separate function (centralized SRE).
Platform engineering is the practice of building and operating internal platforms that product teams consume. Its premise: don’t expect every product team to figure out infrastructure, observability, security, identity, and release engineering on their own. Build a self-service platform that handles those concerns, and let product teams ship. Platform engineering lives as a separate function — a team whose customers are other engineering teams.
Where they overlap
All three care about:
- Reliability — SLOs, error budgets, incident response.
- Tooling — CI/CD, IaC, observability, secret management, identity.
- Velocity — making it faster for product teams to ship.
- Operational excellence — automation, runbooks, post-mortems.
Where they diverge: who owns what, and whose problem is it when the abstraction breaks.
Where they don’t overlap
| DevOps | SRE | Platform Engineering | |
|---|---|---|---|
| Who | Product team | Reliability function (centralized or embedded) | Platform team |
| Customer | The team itself | Product teams that operate the service | Other engineering teams |
| Output | Software in production with operational ownership | SLO compliance, reliable production, error budgets | Self-service paths product teams consume |
| Measured by | Software shipped + operational quality | SLO/error budget metrics, incident rate, MTTR | Time-to-environment, golden-path adoption, internal-NPS |
| Centralized? | No — distributed in product teams | Sometimes (Google model) sometimes (embedded) | Yes — separate platform team |
| Scale fit | All sizes | Mid-to-large with dedicated reliability function | Mid-to-large with multiple product teams |
| Tooling shared with | SRE, platform engineering | DevOps, platform engineering | DevOps, SRE — and provided to them |
The cleanest way to remember: DevOps is a practice, SRE is a discipline, platform engineering is a function. They can coexist; they answer different questions; they’re not in opposition.
When each is appropriate
DevOps without separate SRE or platform engineering
Small to mid-size organizations with 1-3 product teams. Each team operates its own services, with shared tooling but no dedicated reliability or platform function. The model works because each team can fully understand its own operational surface.
DevOps + SRE without platform engineering
Mid-size organizations with reliability concerns that justify a dedicated function. Common in mid-stage startups where production reliability is becoming critical but the engineering organization is still small enough that infrastructure decisions don’t fragment.
DevOps + platform engineering without separate SRE
Mid-size to large organizations where the leverage is in making infrastructure self-service rather than in keeping individual services reliable. SRE-style practices (SLOs, error budgets) get baked into the platform; reliability concerns are addressed at platform level rather than per-service.
All three
Large organizations with both reliability requirements and self-service platform needs. SREs work on reliability of critical services; platform engineering provides the substrate; product teams practice DevOps within the constraints both establish.
The mistake to avoid: hiring a “DevOps engineer” who actually does platform engineering work, or hiring an “SRE” who actually does general infrastructure. The titles increasingly mean specific things.
What platform engineering actually builds
For organizations that need a platform engineering function, the question becomes: what does the platform team actually produce? Concretely:
1. Internal developer platform (IDP)
A self-service surface that product teams use without filing tickets. Common scope:
- Environment provisioning (dev / staging / prod)
- Application deployment (Helm / Argo CD / Flux)
- Observability onboarding (metrics / logs / traces)
- Secrets management
- Identity (workforce identity → service identity)
- Network connectivity (mesh / ingress / load balancing)
The IDP is consumed via a UI (often Backstage or similar), via APIs, or via IaC. The choice depends on the team’s preferences — but the underlying capabilities must be self-service regardless of UI.
2. Golden paths
Opinionated, well-supported paths for common product-team needs. “Golden” because they’re the recommended way; teams can deviate but pay for it in support effort. Examples:
- Standard service template (HTTP API, batch job, scheduled job)
- Standard deployment pattern (canary, blue-green)
- Standard observability stack (auto-instrumented)
- Standard data-access patterns (managed databases via the platform)
3. Operational model
The platform itself is operated by the platform team. SLOs, on-call, runbooks, incident response — all platform-team responsibilities. Product teams should be able to assume the platform works, not contribute to fixing it.
4. Internal product management
Platform engineering as a function has product-team customers. That requires product-management practices: roadmap, prioritization, customer interviews (your engineering teams), feedback loops, deprecation policies.
This is where many platform teams underperform. Engineering excellence without product orientation produces a platform nobody adopts.
Tools that matter
Platform engineering tools fall in five buckets:
Compute and orchestration
Kubernetes is the de facto orchestration layer for most modern platforms. Distributions: vanilla, OpenShift, Rancher, Cozystack (open-source Kubernetes-native virtualization), vendor-led variants. The choice is largely determined by the operational model.
Infrastructure-as-Code
Terraform, OpenTofu, Pulumi — for cloud and infrastructure provisioning. Crossplane — for Kubernetes-native infrastructure abstraction. Choice depends on team familiarity and target environments.
GitOps
Argo CD and Flux are the two production-grade GitOps engines. Both work; Flux is closer to the upstream Kubernetes way; Argo CD has stronger UI ergonomics. Cozystack uses Flux as the default.
Internal developer portal
Backstage (CNCF Incubating) is the dominant choice. Alternatives: Port, Cortex, Compass, custom. Important note: Backstage is a portal (catalog + UI), not a platform. The platform sits underneath; the portal exposes it.
Observability
VictoriaMetrics + VictoriaLogs (open-source, low-overhead — Cozystack default), Prometheus + Loki, or commercial (Datadog, New Relic). Self-hosted matters for sovereignty-sensitive workloads.
Secrets and identity
External Secrets Operator, HashiCorp Vault, customer-controlled HSMs. Workload identity via SPIFFE/SPIRE for service-to-service auth.
The toolset is converging. The differentiation is in how these tools are wired together as a coherent platform — that’s where platform engineering earns its keep.
Metrics that matter
For evaluating a platform engineering function:
- Time-to-environment — from product-team request to a working environment. Target: hours, not weeks.
- Golden-path adoption — fraction of new services using the recommended template / deployment / observability pattern.
- Platform-team-to-product-engineer ratio — typically 1:10 to 1:20 in mature organizations.
- Internal NPS / customer satisfaction — from product teams about the platform.
- Toil ratio — fraction of platform-team time spent on tickets vs. golden-path work. Target: keep below 50%.
- Platform availability SLO — yes, the platform itself has an SLO. Production-grade is 99.9%+ for IDP services.
DORA metrics (deployment frequency, lead time, change-failure rate, time-to-restore) are product-team metrics — but the platform’s job is to make those metrics achievable.
Common pitfalls (for the platform team)
Pitfall 1: building for engineers, not for product teams
The platform team’s customers are product teams, not other platform engineers. The architecture should optimize for the product team’s experience, not for engineering elegance.
Pitfall 2: Backstage as the platform
Backstage is an excellent IDP frontend. It’s not a platform. Buying Backstage without an underlying opinionated platform produces a catalog over the same operational mess.
Pitfall 3: too many opinions, too rigid
Golden paths should be golden, not gold-plated. Product teams need to be able to deviate when their case is special. The platform’s authority comes from being genuinely useful, not from policy enforcement.
Pitfall 4: under-staffed
Platform teams that absorb both platform-build and on-call duties for shared services tend to spend their time on tickets. Capacity for golden-path work disappears. The function stalls.
Pitfall 5: vendor-led platform-in-a-box
Several vendors sell “complete platform engineering solutions.” These work for narrow customer profiles but rebuild the lock-in problem. The vendor’s roadmap becomes your roadmap.
A maturity progression
A typical organization moves through these stages:
- Pre-platform — each team owns its own infrastructure. Tooling is fragmented. Shared services emerge ad-hoc.
- Shared infrastructure — central team owns shared infrastructure (Kubernetes, CI/CD, observability). No self-service yet; teams file tickets.
- Self-service primitives — central team exposes APIs / IaC modules. Teams self-serve common operations. Limited golden paths.
- Internal developer platform — opinionated platform with golden paths. Most operations are self-service. Platform team has product-team customers.
- Mature platform engineering — platform is a coherent product. SLOs, internal product management, customer-driven roadmap, controlled deprecation.
Most organizations sit between stages 2 and 3. The leverage of moving to stage 4 is large but requires intentional investment.
When to engage external help
External platform engineering help is the right call when:
- A specific deadline (regulator, board mandate, scaling moment) makes internal-only build too slow.
- Your team has the long-term capacity but lacks specific senior platform-engineering experience to start cleanly.
- You want a structured external assessment to validate or challenge internal direction.
- A repatriation or migration program needs platform engineering velocity that exceeds internal hiring rate.
It’s the wrong call when:
- The engineering organization isn’t ready (no platform-team headcount, no internal customer, no problem clearly named).
- The decision is already made and the engagement is meant to validate it.
Want to dig deeper?
- Platform engineering services page — engagement details
- Internal developer platform — IDP-specific engagement
- Platform Readiness Assessment — assessment methodology
- Cozystack — the platform we typically build on
Test yourself: PE vs DevOps vs SRE
5 questions · ~2 min