LUNAROPS · OPERATIONAL UPLINK 100% UPTIME 1,247d POSTS 893 JEFF.MOON@LUNAROPS.DEV UTC --:--:--

Platform Engineering vs DevOps: What Changed and Why It Matters

platform-engineeringdevopsdeveloper-experienceidpteam-topologiescultureengineering

Every few years, the industry rebrands how it thinks about the relationship between software delivery and infrastructure operations. SRE replaced classic ops. DevOps dissolved the wall between dev and ops. Now Platform Engineering is being positioned as the next evolution. The cynical read is that it’s the same work with a new name and a shinier conference circuit.

The more accurate read: Platform Engineering addresses a real failure mode of DevOps at scale — one that’s easy to miss when you have two teams but becomes painful when you have twenty.

This post makes the case clearly: what DevOps got right, where it breaks down at scale, what Platform Engineering actually means in practice, and how to build a platform team that developers genuinely want to use rather than route around.


What DevOps Got Right

DevOps — the actual principle, not the job title — was a reaction to the dysfunction of siloed development and operations teams. Developers threw code over the wall; operations caught it and tried to run it; neither side understood the other’s constraints; and every deployment was a negotiation.

The core DevOps insight: the people who build software should be responsible for running it in production. You build it, you run it. This created alignment: developers now care about operational concerns because paging them at 3 AM when their code falls over is a powerful feedback loop.

The practices that came with it — CI/CD, infrastructure as code, monitoring as code, blameless postmortems — were genuinely transformative. Teams that adopted them shipped faster and with fewer incidents.


Where DevOps Breaks at Scale

“You build it, you run it” scales well to a point. That point is roughly where you have more than a handful of teams trying to do it independently.

The problem: when every team is responsible for their own infrastructure, every team ends up rebuilding the same things. Kubernetes expertise. CI/CD pipelines. Secret management. Observability stacks. Database provisioning. TLS certificate handling. Container hardening. Security scanning. Cost allocation.

At 5 teams, this is manageable — maybe even healthy, because each team learns deeply. At 20 teams, it’s:

  • Inconsistent: Team A uses Helm, team B uses raw manifests, team C invented their own deployment system. Supporting all three is a nightmare.
  • Slow: Every new team has to bootstrap the same infrastructure from scratch, taking weeks before they ship their first feature.
  • Fragile: The security baseline varies by team. Team G never got around to configuring pod security standards. Team K’s CI pipeline doesn’t run vulnerability scans.
  • Expensive in cognitive load: Frontend developers now need to understand Kubernetes networking, Vault secret injection, Terraform modules, and Prometheus alerting rules on top of their actual job.

The DevOps philosophy — shared responsibility — is correct. The implementation pattern — every team does everything themselves — doesn’t scale.


What Platform Engineering Actually Is

Platform Engineering is the discipline of building and running internal developer platforms (IDPs) — curated, opinionated toolchains and self-service capabilities that let product teams deploy and operate their software without needing to be infrastructure experts.

The key word is self-service. A platform team doesn’t provision resources for other teams on request (that’s just a rebranded ops team). A platform team builds systems that let other teams provision resources themselves — within guardrails that the platform team defines.

Think of it like this:

Old ops model:
  Developer → raises ticket → ops provisions resource → days/weeks later, done

DevOps model:
  Developer → provisions resource themselves → immediately done
  (but must understand everything about the resource)

Platform Engineering model:
  Developer → self-service portal / CLI → immediately done
  (platform team built the portal; guardrails are baked in)

The platform is a product. The platform team has customers — the product teams using it. A platform that developers route around because it’s too slow, too complex, or too restrictive has failed, regardless of how technically sophisticated it is.


The Team Topologies Lens

Matthew Skelton and Manuel Pais’s Team Topologies provides the clearest vocabulary for this. It defines four team types:

  • Stream-aligned teams: Product teams aligned to a value stream (user-facing feature delivery). They move fast and need the platform to get out of their way.
  • Platform teams: Internal service providers. They reduce cognitive load for stream-aligned teams by providing self-service capabilities.
  • Enabling teams: Specialists who help other teams level up — embedded temporarily, then move on.
  • Complicated subsystem teams: Own genuinely complex systems (ML infrastructure, payment processing) that stream-aligned teams shouldn’t need to understand deeply.

Platform Engineering formalizes the platform team role. The platform team’s primary metric isn’t “how much infrastructure did we provision” — it’s how much cognitive load did we remove from product teams and how fast can a new team get to production.


The Golden Path

The most important concept in Platform Engineering is the golden path (sometimes called the paved road): an opinionated, well-supported way to do common things that works well out of the box.

The golden path is:

  • Fast to start: A new team can follow the golden path and be in production in hours, not weeks
  • Secure by default: Guardrails are built in — teams don’t have to think about secret management, mTLS, or pod security standards because the path handles it
  • Observable by default: Logging, metrics, and tracing are wired up automatically
  • Compliant by default: Cost tagging, audit logging, vulnerability scanning — done
  • Escapable: Teams can deviate from the golden path when they have good reason, but deviating means giving up platform support

This last point matters enormously. A golden path that forces every team into a rigid box will be resented and circumvented. A golden path that covers 90% of use cases well, and gets out of the way for the remaining 10%, will be adopted voluntarily.


What a Platform Team Builds

In practice, a platform team owns some combination of:

Developer Self-Service

- Service scaffolding (one command → new repo with CI, k8s manifests, monitoring)
- Environment provisioning (dev/staging/preview environments on demand)
- Database provisioning (request a Postgres instance, get credentials via Vault)
- Secret management (Vault integration, secret rotation)
- Certificate management (automated TLS via cert-manager + internal CA)

Kubernetes Abstraction Layer

Most product teams don’t need raw Kubernetes access. They need to deploy a service, configure its replicas, set resource limits, wire up ingress. A platform team might:

  • Provide a Helm chart or CRD that abstracts the boilerplate
  • Use an operator like Crossplane to provide higher-level resource types
  • Provide a Backstage template that generates all the manifests
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
# Instead of writing 200 lines of k8s YAML, teams use:
apiVersion: platform.lunarops.io/v1
kind: WebService
metadata:
  name: my-api
  namespace: production
spec:
  image: ghcr.io/myorg/my-api:v1.2.3
  port: 8080
  replicas: 3
  resources:
    cpu: "500m"
    memory: "512Mi"
  ingress:
    host: my-api.lunarops.io
  env:
    - name: DATABASE_URL
      valueFrom:
        vault: secret/my-api/database

The operator translates this into all the underlying Kubernetes objects, Vault secret injection, network policies, PodDisruptionBudget, HorizontalPodAutoscaler, and ServiceMonitor.

CI/CD Infrastructure

- Shared GitHub Actions workflows (reusable, maintained by platform team)
- Container image build and push with SBOM generation and signing
- Deployment pipelines (deploy to staging on merge, production on tag)
- Rollback automation
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# Product team's .github/workflows/deploy.yml
name: Deploy
on:
  push:
    branches: [main]
jobs:
  deploy:
    uses: lunarops/platform/.github/workflows/standard-deploy.yml@main
    with:
      service-name: my-api
      environment: production
    secrets: inherit
    # The platform team maintains the actual deploy logic.
    # Product teams just call it.

Observability

- Pre-configured Grafana dashboards (every service gets golden signals automatically)
- Alerting templates (SLO-based alerts created automatically per service)
- Log aggregation (structured logging conventions, Loki integration)
- Distributed tracing (auto-instrumentation via OpenTelemetry operator)

Security and Compliance

- Pod security standards enforced via admission webhooks
- Vulnerability scanning in CI (Trivy, Grype)
- Policy enforcement (OPA/Gatekeeper or Kyverno)
- Network policies generated from service definitions
- Audit logging and compliance reporting

Platform Engineering vs DevOps: The Relationship

These aren’t opposing philosophies. Platform Engineering is DevOps done at scale with explicit organizational structure.

Dimension DevOps Platform Engineering
Scale Works well at < 10 teams Designed for 10+ teams
Responsibility model You build it, you run it You build it; platform runs the infrastructure you run it on
Infrastructure expertise Every team develops it Concentrated in platform team; abstracted for others
Golden path Informal / emergent Explicit / curated / maintained
Developer experience Variable (depends on team) First-class product concern
Cognitive load High for product teams Reduced by platform abstractions

DevOps culture — collaboration, shared responsibility, feedback loops — remains essential. Platform Engineering is the organizational pattern that makes DevOps principles sustainable at scale.


The Platform Team’s North Star Metrics

A platform team should measure:

Time to production for a new service — from “we have a new service to build” to “it’s running in production.” Target: hours, not weeks. If it takes two weeks to bootstrap a new service, the platform isn’t doing its job.

Developer satisfaction (DORA/SPACE) — regular surveys, NPS-style: “Would you recommend the platform to a colleague?” Track trends. A declining score is an early warning.

Golden path adoption rate — what percentage of production workloads use the golden path? Low adoption means the path doesn’t work for real use cases.

Cognitive load reduction — harder to measure, but track things like: how many platform-related questions appear in engineering chat per week? How much time do product teams spend on infrastructure vs product work?

Platform reliability — the platform is itself a product with an SLO. If CI/CD is flaky, developers lose trust and build workarounds.


Failure Modes of Platform Teams

Building what engineers find interesting rather than what developers need. Platform engineers often gravitate toward complex, technically sophisticated solutions. The right measure is whether developers use it, not whether it’s architecturally elegant.

Becoming a new gatekeeper. If every infrastructure request still goes through a ticket and a human approves it, you’ve just rebranded the ops team. Self-service is the goal. Human approval should be the exception, not the rule.

Building the platform in isolation. Platform teams that don’t embed with product teams regularly build the wrong abstractions. Spend time pairing with product teams. Watch where they struggle.

No internal marketing. A perfect platform that nobody knows about or understands doesn’t help. Documentation, workshops, office hours, migration guides — the platform needs to be sold internally as much as built.

Treating the golden path as mandatory. Teams forced onto a path they can’t escape become hostile to the platform. Make the path easy to follow and hard to deviate from — but not impossible.


Starting a Platform Team

Most organizations don’t start a platform team from scratch. They formalize what’s already happening informally.

Step 1: Identify your existing platform. Every organization that’s past startup size has some informal platform: shared CI/CD scripts, a Kubernetes cluster that someone configures, documentation that someone maintains. Find the person (or people) doing this work without a mandate and give them the mandate.

Step 2: Interview your customers. Talk to five product teams. What takes longest? Where do they copy-paste? What do they wish they didn’t have to understand? This drives your first roadmap.

Step 3: Build one thing that obviously helps. A service scaffolding CLI. A shared deploy workflow. A self-service staging environment. Something concrete that demonstrates value quickly. Build in public — show what you’re building, solicit feedback, iterate.

Step 4: Measure adoption and satisfaction. Set a baseline and track it. The platform team’s existence is justified by whether developers actually use and benefit from what it builds.

Step 5: Grow the golden path incrementally. Each quarter, add one more capability to the path. Don’t try to build the entire IDP before anyone uses it — you’ll build the wrong things.


The Honest Trade-offs

Platform Engineering isn’t free. It requires:

  • Dedicated headcount: A real platform team, not one person in addition to their regular work
  • Long-term investment: The platform pays dividends over months and years, not immediately
  • Product thinking from infrastructure engineers: A different skill set than pure technical depth
  • Tolerance for internal marketing: The platform needs to be sold as much as built

And it’s not for everyone. If you have three product teams, DevOps with good documentation and shared standards is probably enough. Platform Engineering makes sense when the coordination overhead of independent teams starts costing more than the investment in shared infrastructure.

The test is simple: are your product teams spending significant time on infrastructure concerns that aren’t differentiating? If yes, a platform team will pay for itself. If no, invest that energy elsewhere.


Platform Engineering is ultimately about respecting developers’ time and cognitive bandwidth. The best platform is invisible — product teams get what they need quickly, securely, and reliably, without having to understand how the sausage is made. When it works, product teams ship faster, infrastructure is more consistent and secure, and the people who care about infrastructure get to focus on building great infrastructure rather than answering the same Kubernetes questions across fifteen Slack threads.

That’s not a rebrand. That’s a genuine improvement in how engineering organizations can work.

Comments