← All writing

Top 10 Platform Engineering Things You Must Know

· Sourabh G Kulkarni

A pragmatic guide to Internal Developer Platforms: golden paths, actionable self-service, ownership as code, and the operational guardrails that actually help teams ship faster.

Top 10 Platform Engineering Things You Must Know

Platform engineering is not about buying an Internal Developer Platform (IDP) tool off the shelf and mandating that every engineer use it. It is the discipline of designing and operating paved roads—curated toolchains and workflows that reduce developer cognitive load while keeping security, reliability, and cost within healthy bounds.

Here are the ten fundamental principles every platform engineer, DevOps lead, and engineering manager should know, with concrete real-world examples for each.


1. Developers are the customers, not captive users

A platform team that acts like an infrastructure DMV—issuing bureaucratic rules and forcing adoption—will always be bypassed. When developers feel blocked by rigid portals, they find shadow IT side doors: spinning up personal AWS accounts on corporate credit cards or writing bespoke scripts that run outside compliance checks.

  • Real-World Example: Instead of mandating a portal via executive decree, measure Internal Net Promoter Score (NPS) and tracking Time to First Pull Request (TTFPR). Run monthly office hours and treat feature requests from product teams as product backlog items.

2. One solid golden path beats twenty half-baked options

Providing thirty different database engines, five container orchestrators, and seven CI systems isn't flexibility—it is an operational nightmare. A platform team of six cannot sustainably maintain production-grade security patches, backups, and 24/7 on-call expertise for fifty disparate technologies.

  • Real-World Example: Declare one supported golden path for transactional workloads (e.g., managed PostgreSQL on RDS with automated backups, IAM auth, and connection pooling). If a team insists on Cassandra or MongoDB, they are free to run it, but they must maintain their own on-call runbooks and backups.

3. A template is the path made executable

A 40-page documentation wiki explaining "How to set up a new service" goes stale the week it is written. Documentation instructs; software templates execute.

  • Real-World Example: Use Spotify Backstage software templates. An engineer selects FastAPI Microservice, enters a service name, and the template automatically provisions a GitHub repo with a multi-stage Dockerfile, a linter config, /healthz endpoints, and a GitHub Actions pipeline in under a minute.

4. Build once, promote the same immutable digest

Rebuilding an image from source in each environment (Dev, Staging, Production) introduces environment drift. A package version that resolves during Tuesday's staging build might pull a subtly updated sub-dependency on Thursday's production release.

  • Real-World Example: Compile code and build your OCI container image once in the CI pipeline. Tag it with its cryptographic commit SHA:
    export IMAGE="registry.internal/checkout-service:sha-a8f3b12"
    
    Promote that exact immutable image digest through Dev, UAT, and Production approval gates without rebuilding.

5. Ownership must be declared as code in the catalog

When an API error rate spikes at 3 AM, the on-call engineer shouldn't have to play detective across GitHub commit history to figure out who owns the code.

  • Real-World Example: Require a catalog-info.yaml at the root of every repository registered with the developer portal:
    apiVersion: backstage.io/v1alpha1
    kind: Component
    metadata:
      name: billing-engine
      annotations:
        pagerduty.com/service-id: P123ABC
    spec:
      type: service
      owner: group:payments-team
    
    If an alert fires in Grafana or Datadog, the dashboard links directly to the owning team and their current on-call rotation.

6. Self-service stops at the happy path

Automating 100% of every conceivable edge case creates bloated, unmaintainable platforms. Design self-service automation for the common 80%—standard web services, worker queues, standard cron jobs, and caching layers.

  • Real-World Example: The self-service portal handles standard microservice provisioning with predefined CPU/memory limits. If a team needs GPU instances for an LLM fine-tuning job or high-throughput Kafka clusters across multiple availability zones, they consult with the platform team for an architecture pairing session. That conversation informs future platform capabilities.

7. The golden path is opt-out, but exceptions must be documented

Enforcing a platform as an inescapable prison breeds resentment and slows innovation. High-performing organizations allow teams to opt out of the golden path—provided they accept the operational responsibility.

  • Real-World Example: If a team needs Rust instead of Go for sub-millisecond trading latency, they write an Architecture Decision Record (ADR) detailing why the paved road was insufficient, how they will handle base image patching, and who will be paged when it fails. A documented exception prevents quiet, unmanaged forks.

8. Observability and security belong inside the skeleton

If you rely on developers to remember to configure Prometheus metrics scrapers, OpenTelemetry trace exporters, and security linters after their app is built, it won't happen until an outage or compliance audit forces the issue.

  • Real-World Example: Bake telemetry directly into the base service skeleton:
    • Default /metrics endpoint exposed for Prometheus.
    • Automatic OpenTelemetry middleware injecting trace IDs into HTTP response headers.
    • Pre-configured GitHub Actions step running trivy or snyk container scans on every PR.

9. Rollback is a core platform primitive, not an afterthought

If rolling back a broken production deployment requires checking out an older git tag, making a hotfix commit, and waiting thirty minutes for a pipeline to build, your platform is incomplete.

  • Real-World Example: Decouple deployment from release. Use Kubernetes deployment rollouts or blue/green traffic shifting:
    # Instant rollback to previous known-good deployment
    kubectl rollout undo deployment/checkout-service -n production
    
    One-click rollback restores service health immediately; post-mortem debugging can happen safely afterward.

10. The paved road is a highway, not a cage

The goal of platform engineering is high velocity with high confidence. A great platform does not eliminate developer autonomy; it eliminates unnecessary undifferentiated heavy lifting.

  • Real-World Example: A product engineer shouldn't spend their week debugging IAM trust policies, configuring Kubernetes Ingress cert-managers, or tuning Terraform remote state locks. They should focus on customer-facing features, confident that the platform beneath them is robust, compliant, and observable.

Conclusion

Platform engineering succeeds when it makes the secure, resilient, and observable choice the easiest and fastest choice for developers. When platforms are built with empathy, clear guardrails, and executable golden paths, velocity and stability improve together.