DEV Community

Cover image for Designing an Internal Developer Platform (IDP) on AWS Using Backstage, EKS & Terraform

Designing an Internal Developer Platform (IDP) on AWS Using Backstage, EKS & Terraform

Introduction — Why IDPs Are Becoming Mandatory

If you've worked in engineering long enough, you already know the truth nobody wants to say out loud:

Most developers don’t want to touch YAML, Terraform, Kubernetes manifests, or IaC pipelines. They just want their service to run.

And honestly… can we blame them?
Between debugging a failing pod, hunting for IAM permissions, or figuring out why Terraform refuses to plan, developer energy gets drained on infrastructure instead of innovation.

That’s where Internal Developer Platforms (IDPs) come in.

IDPs are the “self-service layer” that removes friction.
The best IDPs allow developers to:

  • scaffold services
  • spin up infrastructure
  • deploy to multiple environments
  • observe their workloads
  • and do all this without knowing how the underlying platform works

Today, you’ll learn how to build such a platform using:

Backstage (developer portal)
Terraform (self-service IaC)
ArgoCD (GitOps)
Amazon EKS (runtime platform)
AWS native services like IAM, KMS, Secrets Manager

This is the same pattern used at modern engineering orgs and unicorns.

So let’s build a real one, the right way.

The Four Layers of a Modern IDP

Every successful platform has the same 4 layers:

1. Developer Experience Layer  → Backstage
2. Platform Orchestration      → Terraform + GitOps (ArgoCD)
3. Runtime Infrastructure      → Amazon EKS + networking
4. Shared Services             → Observability, security, secrets, CI
Enter fullscreen mode Exit fullscreen mode

Let’s break them down.

1. Developer Experience Layer — Backstage

Backstage gives you:

💠 Software Catalog

A single source of truth for all services:

  • Ownership
  • Deployments
  • Documentation
  • Tech stack
  • Status

💠 Golden Paths (Software Templates)

This is the real magic.

Instead of telling developers:

“Hey, here’s the Confluence page with our recommended architecture. Follow it.”

You give them a self-service template that does everything:

  • Create a Git repo
  • Generate CI/CD pipelines
  • Create Terraform infrastructure
  • Register service in Backstage
  • Deploy to EKS
  • Wire up monitoring & alerts

With one click.

2. Platform Orchestration — Terraform + GitOps

This is where your platform’s power comes from.

🟦 Terraform modules

These represent reusable “building blocks”:

  • microservice module
  • VPC module
  • RDS module
  • DynamoDB table module
  • S3 bucket module
  • EKS namespace module

Developers never write Terraform.
They fill in a simple form in Backstage → Backstage generates Terraform config → GitOps takes over → ArgoCD deploys it.

🟥 GitOps (ArgoCD)

This ensures:

  • everything is deployed from Git
  • automatic rollbacks
  • drift detection
  • clear audit trails
  • separation between build (CI) and deploy (CD)

Git is the source of truth.
ArgoCD is the engine.

3. Runtime Infrastructure — Amazon EKS

This is where workloads actually run.

Your EKS architecture includes:

  • Multi-tenant namespaces
  • IRSA (IAM Roles for Service Accounts)
  • Karpenter for fast autoscaling
  • Network Policies
  • Pod Security Standards
  • Ingress controller (ALB/Nginx/Ambassador)
  • Internal service mesh (optional)

EKS is your “runtime engine”, Backstage is the steering wheel, and GitOps is the autopilot.

4. Shared Services Layer

This includes all the “invisible” but necessary pieces:

✔ Secrets

AWS Secrets Manager + IRSA.

✔ Observability

  • Prometheus
  • Grafana
  • Tempo / Loki / OTel Collector

✔ Security

  • KMS encryption
  • Audit logs
  • IAM boundaries
  • Registry scanning

✔ CI Pipelines

GitHub Actions or GitLab CI.
CI builds → GitOps deploys.

Full Architecture flow diagram

Full Architecture Diagram

🧬 Golden Path Template Example (Backstage)

Here’s a simplified template:

apiVersion: scaffolder.backstage.io/v1beta3
kind: Template
metadata:
  name: aws-eks-service
  title: "Create a Service on EKS"
  description: "Scaffold a microservice with Terraform + GitOps"
spec:
  owner: platform-team
  parameters:
    - title: "Service Info"
      properties:
        name:
          type: string
          description: Name of the service
        owner:
          type: string
          description: Team name

  steps:
    - id: template
      name: Create Repo from Template
      action: fetch:template

    - id: terraform
      name: Terraform Module
      action: publish:github
      input:
        repoUrl: "{{ parameters.name }}"
        files:
          - terraform/main.tf

    - id: register
      name: Register in Backstage Catalog
      action: catalog:register
Enter fullscreen mode Exit fullscreen mode

📦 Terraform Module Example (EKS Namespace)

module "namespace" {
  source = "git::https://github.com/org/platform-modules.git//eks-namespace"

  name      = var.service_name
  team      = var.team_name
  iam_roles = var.iam_roles
}
Enter fullscreen mode Exit fullscreen mode

🔁 GitOps Flow (ArgoCD App)

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: myservice
spec:
  source:
    repoURL: https://github.com/org/myservice
    path: deploy/
  destination:
    namespace: myservice
    server: https://kubernetes.default.svc
  syncPolicy:
    automated:
      prune: true
      selfHeal: true
Enter fullscreen mode Exit fullscreen mode

Real-World Challenges & Lessons Learned

No one tells you these things until you experience them:

  • Templates need constant updating
  • Teams will bypass your platform unless you make it genuinely delightful
  • Backstage plugin versioning can be chaotic
  • Keep the IDP simple: don’t over-engineer
  • EKS upgrades require strict compatibility planning
  • Terraform module contracts must be stable and versioned

But once it works, developer onboarding drops from weeks to minutes.

Final Thoughts — The Future of IDPs

The next evolution of IDPs will include:

  • AI-powered troubleshooting
  • Auto-generated infrastructure from natural language
  • Predictive autoscaling
  • Auto-remediation
  • Learning-based deployment risk scoring
  • AI-assisted documentation & code generation

And you’ll be ahead of the curve because you’re already building the foundation today.

Top comments (0)