Platform Engineering 2026: Membangun Internal Developer Portal dengan Backstage di Indonesia

Platform engineering jadi tren dominan Indonesia 2026. Backstage (Spotify, CNCF) jadi standar de-facto Internal Developer Portal. Artikel ini bahas software catalog, scaffolder templates, Kubernetes plugin, ephemeral environments, dan roadmap adopsi praktis untuk enterprise Indonesia.

Share
Platform Engineering 2026: Membangun Internal Developer Portal dengan Backstage di Indonesia

Platform engineering telah menjadi tren dominan di industri teknologi Indonesia sepanjang 2026. Seiring dengan adopsi Kubernetes dan arsitektur microservices yang masif, organisasi mulai menyadari bahwa model DevOps tradisional — di mana setiap tim harus mengelola infrastruktur sendiri — tidak lagi skalabel. Solusinya adalah Internal Developer Platform (IDP), dan Backstage dari Spotify telah muncul sebagai standar de-facto untuk membangun portal pengembang internal.

Dari DevOps ke Platform Engineering: Mengapa Perlu Berubah?

DevOps memecahkan masalah silo antara development dan operations, namun menciptakan beban kognitif baru. Para engineer diharapkan memahami Kubernetes manifests, CI/CD pipelines, observability stack, secret management, dan on-call runbooks — semua sekaligus. Di Indonesia, startup hingga enterprise seperti Gojek, Tokopedia, dan Traveloka telah mengalami fase ini. Platform engineering hadir sebagai lapisan abstraksi: tim platform membangun dan mengoperasikan IDP, sedangkan product team mengonsumsinya melalui self-service interface.

Insight Kunci: Platform engineering bukan menggantikan DevOps, melainkan mengindustriakannya. Golden paths yang di-build tim platform memungkinkan product engineer fokus pada business logic, bukan plumbing infrastruktur.

Backstage: Backbone Internal Developer Portal

Backstage diciptakan Spotify untuk mengelola 14.000+ microservices di 42 Kubernetes clusters global. Sekarang sebagai proyek CNCF Incubating, Backstage menyediakan tiga pilar utama:

  • Software Catalog — Inventaris live setiap service, library, API, website, dan komponen infrastruktur. Metadata diambil dari catalog-info.yaml di setiap repo, membangun dependency graph organisasi secara otomatis.
  • Software Templates (Scaffolder) — Workflow form-driven yang membuat komponen baru dengan boilerplate organisasi: project structure, Dockerfile, CI/CD pipeline, K8s manifests, monitoring dashboards, alert rules, dan auto-registration ke catalog.
  • TechDocs — Sistem "docs as code" yang render Markdown dari setiap repo langsung di portal. Dokumentasi selalu sinkron dengan kode.

Semua kemampuan lain — Kubernetes dashboard, cost tracking, incident management, GitHub Actions views — hadir sebagai plugin. Arsitektur plugin berarti tim bisa menambah first-party atau community plugins, atau menulis custom plugin tanpa fork core.

Implementasi Nyata: Template Production-Ready Go Microservice

Berikut contoh template Backstage v1beta3 untuk Go microservice yang siap production di Kubernetes 1.37:

apiVersion: scaffolder.backstage.io/v1beta3
kind: Template
metadata:
  name: golang-microservice
  title: Go Microservice
  description: Production-ready Go service dengan Kubernetes, monitoring, dan CI/CD
  tags:
    - golang
    - recommended
spec:
  owner: platform-team
  type: service
  parameters:
    - title: Service Information
      required:
        - serviceName
        - teamOwner
      properties:
        serviceName:
          type: string
          title: Service Name
          ui:autofocus: true
          pattern: '^[a-z][a-z0-9-]*$'
        teamOwner:
          type: string
          title: Team Owner
          ui:field: OwnerPicker
        description:
          type: string
          title: Description
    - title: Kubernetes Configuration
      properties:
        namespace:
          type: string
          title: Target Namespace
          default: production
        replicas:
          type: integer
          title: Replicas
          default: 3
        resources:
          type: object
          title: Resource Limits
          properties:
            cpu:
              type: string
              default: "500m"
            memory:
              type: string
              default: "512Mi"
  steps:
    - id: fetch-template
      name: Fetch Template
      action: fetch:template
      input:
        url: ./template-golang
        values:
          serviceName: ${{ parameters.serviceName }}
          teamOwner: ${{ parameters.teamOwner }}
          description: ${{ parameters.description }}
          namespace: ${{ parameters.namespace }}
          replicas: ${{ parameters.replicas }}
          resources: ${{ parameters.resources }}
    - id: publish-github
      name: Publish to GitHub
      action: publish:github
      input:
        repoUrl: github.com/myorg/${{ parameters.serviceName }}
        description: ${{ parameters.description }}
    - id: register-catalog
      name: Register in Catalog
      action: catalog:register
      input:
        repoContentsUrl: https://github.com/myorg/${{ parameters.serviceName }}
        catalogInfoPath: /catalog-info.yaml
  output:
    repoUrl: ${{ steps.publish-github.output.repoUrl }}
    catalogEntityRef: ${{ steps.register-catalog.output.entityRef }}

Template ini menghasilkan repository baru dengan semua standar organisasi baked-in. Developer hanya mengisi form, klik submit, dan dalam 2 menit mendapat repo siap deploy.

Kubernetes Plugin: Visibility Tanpa Kubectl Access

Plugin Kubernetes menampilkan pod health, resource consumption, dan rollout status langsung di halaman entity catalog. Konfigurasi di app-config.yaml:

kubernetes:
  serviceLocatorMethod:
    type: 'multiTenant'
  clusterLocatorMethods:
    - type: 'config'
      clusters:
        - url: https://k8s.production.example.com
          name: production
          authProvider: 'serviceAccount'
          serviceAccountToken: ${K8S_PROD_SA_TOKEN}
        - url: https://k8s.staging.example.com
          name: staging
          authProvider: 'serviceAccount'
          serviceAccountToken: ${K8S_STAGING_SA_TOKEN}

Annotasi di catalog-info.yaml menghubungkan component ke workloads K8s:

metadata:
  annotations:
    backstage.io/kubernetes-id: payment-service
    backstage.io/kubernetes-namespace: production

Engineer tidak perlu meninggalkan portal untuk cek deployment health — live pod counts, CPU/memory graphs, dan rollout status tersedia langsung.

Self-Service Ephemeral Environments: ROI Tertinggi

Satu kemampuan IDP bernilai tertinggi: ephemeral environments on-demand. Setiap PR otomatis mendapat preview environment dengan TTL 48 jam:

// Backstage action untuk create preview environments
createTemplateAction({
  id: 'mycompany:environment:create',
  schema: {
    input: z.object({
      serviceName: z.string(),
      prNumber: z.number(),
      ttlHours: z.number().default(48),
    }),
  },
  async handler(ctx) {
    const { serviceName, prNumber, ttlHours } = ctx.input;
    const envName = `pr-${prNumber}-${serviceName}`;
    
    // Create namespace di Kubernetes
    await k8sApi.createNamespace({
      metadata: {
        name: envName,
        labels: {
          'environment-type': 'ephemeral',
          'pr-number': String(prNumber),
          'service': serviceName,
          'ttl-hours': String(ttlHours),
        },
      },
    });
    
    // Deploy service dengan Helm
    await helmClient.upgrade(envName, `./charts/${serviceName}`, {
      namespace: envName,
      values: {
        image: { tag: `pr-${prNumber}` },
        ingress: { host: `${envName}.preview.example.com` },
        replicas: 1,  // reduced untuk preview
      },
    });
    
    ctx.output('previewUrl', `https://${envName}.preview.example.com`);
    ctx.output('namespaceName', envName);
  },
});

Ini menghilangkan bottleneck ops tickets untuk staging environments. QA dan product manager bisa test fitur langsung di URL preview tanpa menunggu.

Roadmap Adopsi di Indonesia 2026

Berdasarkan pengalaman enterprise Indonesia, roadmap praktis:

  • Minggu 1-2: Deploy Backstage minimal (catalog + 1 template) dengan tim platform 2 orang. Gunakan Helm chart resmi backstage/backstage di Artifact Hub.
  • Minggu 3-4: Migrasi ke PostgreSQL production, integrasi GitHub/GitLab, build 2-3 software templates untuk service type paling umum.
  • Bulan 2: Integrasi CI/CD pipeline visibility, tambah Kubernetes status ke entity pages, enable TechDocs.
  • Bulan 3: Custom plugins untuk kebutuhan spesifik: cost tracking (Kubecost), security scanning (Trivy/Snyk), incident management (PagerDuty).

Total rollout minimal portal: 2-4 minggu. Full plugin integration: tambahan 2-3 minggu. Investasi ini mengembalikan produktivitas developer signifikan — Spotify mengurangi onboarding microservice baru dari 14 hari menjadi 47 menit.

Tantangan Khusus Indonesia

Di Indonesia, tantangan utama adalah talent gap dan regulasi data sovereignty. Banyak organisasi memilih deployment on-premise atau hybrid cloud (AWS/GCP + data center lokal) untuk compliance. Backstage cloud-agnostic mendukung ini dengan baik — plugin Kubernetes bekerja identik di EKS, GKE, atau cluster bare-metal. CNCF maturity juga memastikan longevity dan vendor neutrality.

Organisasi yang investasi IDP — dan Backstage adalah opsi open-source terbaik di 2026 — secara konsisten out-ship dan out-recruit kompetitor. Key insight: developer tidak perlu memahami Kubernetes untuk deploy ke Kubernetes. Pekerjaan tim platform adalah membuat "hal yang benar" menjadi "hal yang mudah".