Loading...
Alle Artikel
Platform · 7 min read

Platform Engineering: Ihr internes Developer-Platform aufbauen

Lernen Sie, wie Sie eine Internal Developer Platform (IDP) designen und aufbauen, die Entwicklerproduktivität beschleunigt, Infrastruktur standardisiert und die kognitive Last in Ihrer Engineering-Organisation reduziert.

Der Aufstieg von Platform Engineering

Platform Engineering hat sich als natürliche Weiterentwicklung von DevOps etabliert. Während DevOps Silos zwischen Entwicklung und Betrieb eingerissen hat, entdeckten viele Organisationen, dass es ein anderes Problem erzeugt, von jedem Entwickler zu verlangen, Kubernetes, Terraform und CI/CD-Pipelines zu beherrschen: kognitive Überlastung.

Platform Engineering adressiert dies durch den Aufbau einer Internal Developer Platform (IDP) – einer Self-Service-Schicht, die Infrastruktur-Komplexität abstrahiert und es Entwicklern ermöglicht, sich auf das Schreiben von Code zu konzentrieren. Laut Gartner werden bis 2026 80 % der Software-Engineering-Organisationen Plattform-Teams als interne Anbieter wiederverwendbarer Services, Komponenten und Werkzeuge etabliert haben.

Was eine gute Internal Developer Platform ausmacht

Eine gut gestaltete IDP bietet fünf Kernfähigkeiten:

  • Infrastructure Provisioning – Entwickler fordern Umgebungen über ein Portal oder CLI an, nicht über Jira-Tickets
  • Application Configuration Management – Standardisierte Deployment-Konfigurationen mit sinnvollen Defaults
  • Environment Management – Konsistente Dev-, Staging- und Produktionsumgebungen
  • Observability-Integration – Eingebautes Logging, Metriken und Tracing ab Tag eins
  • Security-Guardrails – Policy-as-Code, transparent erzwungen, nicht als Blocker

Das Schlüsselprinzip sind Golden Paths – meinungsstarke, aber flexible Workflows, die das Richtige zum Einfachen machen.

Architektur einer modernen IDP

Eine typische Internal Developer Platform besteht aus diesen Schichten:

┌─────────────────────────────────────────────────┐
│              Developer Interface                 │
│   (Portal UI / CLI / API / IDE Plugins)         │
├─────────────────────────────────────────────────┤
│            Service Catalog & Docs                │
│   (Backstage / Port / Cortex)                   │
├─────────────────────────────────────────────────┤
│           Orchestration Layer                    │
│   (Crossplane / Terraform / Pulumi)             │
├─────────────────────────────────────────────────┤
│         Infrastructure Resources                 │
│   (Kubernetes / Cloud Services / Databases)      │
└─────────────────────────────────────────────────┘

Jede Schicht erfüllt einen klaren Zweck: Die Interface-Schicht bietet Self-Service-Zugang, der Katalog organisiert, was vorhanden ist, die Orchestrierungs-Schicht provisioniert, was benötigt wird, und die Infrastruktur-Schicht betreibt Ihre Workloads.

Schritt 1: Mit einem Service-Katalog über Backstage beginnen

Spotifys Backstage ist zum De-facto-Standard für Developer-Portale geworden. Es bietet eine einheitliche Sicht auf alle Services, Dokumentation und Infrastruktur in Ihrer Organisation.

Installieren Sie Backstage mit einem einzigen Befehl:

npx @backstage/create-app@latest
cd my-backstage-app
yarn dev

Definieren Sie Ihre Services über catalog-info.yaml-Dateien, die neben Ihrem Anwendungscode abgelegt sind:

# catalog-info.yaml
apiVersion: backstage.io/v1alpha1
kind: Component
metadata:
  name: payment-service
  description: Handles payment processing and billing
  annotations:
    github.com/project-slug: myorg/payment-service
    backstage.io/techdocs-ref: dir:.
    pagerduty.com/service-id: P1234ABC
  tags:
    - python
    - grpc
    - tier-1
spec:
  type: service
  lifecycle: production
  owner: team-payments
  system: billing-platform
  dependsOn:
    - component:user-service
    - resource:payments-db
  providesApis:
    - payments-api

Diese eine Datei verschafft Ihrer Organisation Sichtbarkeit über Service-Ownership, Abhängigkeiten, Dokumentations-Links und On-Call-Informationen.

Schritt 2: Self-Service-Infrastruktur mit Crossplane umsetzen

Crossplane erweitert Kubernetes um die Möglichkeit, Cloud-Infrastruktur über standardisierte Kubernetes-Manifests zu provisionieren und zu verwalten. Das bedeutet, Entwickler nutzen dieselben kubectl-Workflows, die sie bereits kennen.

Definieren Sie eine wiederverwendbare Infrastruktur-Komposition für eine Datenbank:

# composition.yaml
apiVersion: apiextensions.crossplane.io/v1
kind: Composition
metadata:
  name: postgres-standard
  labels:
    provider: aws
    database: postgresql
spec:
  compositeTypeRef:
    apiVersion: database.platform.io/v1alpha1
    kind: PostgreSQLInstance
  resources:
    - name: rds-instance
      base:
        apiVersion: rds.aws.upbound.io/v1beta1
        kind: Instance
        spec:
          forProvider:
            region: us-east-1
            instanceClass: db.t3.medium
            engine: postgres
            engineVersion: "15"
            allocatedStorage: 20
            publiclyAccessible: false
            storageEncrypted: true
            skipFinalSnapshot: false
            masterUsername: admin
          providerConfigRef:
            name: aws-provider
      patches:
        - fromFieldPath: "spec.parameters.storageGB"
          toFieldPath: "spec.forProvider.allocatedStorage"
        - fromFieldPath: "spec.parameters.size"
          toFieldPath: "spec.forProvider.instanceClass"
          transforms:
            - type: map
              map:
                small: db.t3.micro
                medium: db.t3.medium
                large: db.r6g.large

Entwickler fordern nun eine Datenbank über einen einfachen Claim an:

# database-claim.yaml
apiVersion: database.platform.io/v1alpha1
kind: PostgreSQLInstance
metadata:
  name: my-app-db
  namespace: team-payments
spec:
  parameters:
    storageGB: 50
    size: medium
  compositionSelector:
    matchLabels:
      provider: aws
      database: postgresql

Kein Cloud-Konsolen-Zugriff nötig. Keine Terraform-Expertise erforderlich. Das Plattform-Team definiert die Guardrails, und die Entwickler bedienen sich selbst innerhalb dieser Grenzen.

Schritt 3: Software-Templates für neue Services erstellen

Backstage Software Templates erlauben es Entwicklern, neue Services aufzusetzen – mit den Best Practices Ihrer Organisation bereits eingebaut. Hier ein Template, das einen neuen Microservice inklusive CI/CD, Monitoring und Dokumentation vorkonfiguriert erstellt:

# template.yaml
apiVersion: scaffolder.backstage.io/v1beta3
kind: Template
metadata:
  name: microservice-template
  title: Production Microservice
  description: Creates a new microservice with CI/CD, monitoring, and docs
spec:
  owner: platform-team
  type: service
  parameters:
    - title: Service Details
      required:
        - name
        - owner
        - language
      properties:
        name:
          title: Service Name
          type: string
          pattern: '^[a-z][a-z0-9-]*$'
        owner:
          title: Owner Team
          type: string
          ui:field: OwnerPicker
        language:
          title: Language
          type: string
          enum: [go, python, typescript]
  steps:
    - id: fetch-template
      name: Fetch Template
      action: fetch:template
      input:
        url: ./skeleton
        values:
          name: ${{ parameters.name }}
          owner: ${{ parameters.owner }}
    - id: publish
      name: Create Repository
      action: publish:github
      input:
        repoUrl: github.com?owner=myorg&repo=${{ parameters.name }}
        defaultBranch: main
    - id: register
      name: Register in Catalog
      action: catalog:register
      input:
        repoContentsUrl: ${{ steps.publish.output.repoContentsUrl }}
        catalogInfoPath: /catalog-info.yaml

Wenn ein Entwickler im Backstage-Portal auf „Create" klickt, erhält er in weniger als 60 Sekunden ein voll funktionsfähiges Repository mit Dockerfile, Helm-Charts, GitHub-Actions-Workflows, Prometheus-Metrics-Endpunkten und Katalog-Registrierung.

Schritt 4: Policies mit Open Policy Agent erzwingen

Ihre Plattform sollte Sicherheit und Compliance automatisch machen. Verwenden Sie Open Policy Agent (OPA) zusammen mit Gatekeeper, um organisatorische Policies auf Kubernetes-Admission-Ebene zu erzwingen:

# policy: require resource limits on all containers
package kubernetes.admission

deny[msg] {
  container := input.review.object.spec.containers[_]
  not container.resources.limits.memory
  msg := sprintf("Container '%v' must have memory limits set", [container.name])
}

deny[msg] {
  container := input.review.object.spec.containers[_]
  not container.resources.limits.cpu
  msg := sprintf("Container '%v' must have CPU limits set", [container.name])
}

deny[msg] {
  input.review.object.spec.containers[_].securityContext.runAsRoot == true
  msg := "Containers must not run as root"
}

Diese Policies sind für Entwickler unsichtbar, solange sie Golden Paths folgen – Verstöße tauchen nur auf, wenn jemand von den Standard-Templates abweicht, und die Fehlermeldungen führen ihn zurück.

Schritt 5: Plattform-Adoption und Entwicklerzufriedenheit messen

Eine Plattform zu bauen, ohne ihre Wirkung zu messen, ist Blindflug. Tracken Sie diese Metriken:

  • Time to First Deploy – Wie lange es von „Ich habe eine Idee" bis zum Betrieb in Produktion dauert
  • Deployment-Frequenz pro Team – Liefern Teams nach Einführung der Plattform schneller?
  • Self-Service-Ratio – Anteil der Infrastruktur-Anfragen, die ohne Ticket erfüllt werden
  • Developer-NPS – Regelmäßige Umfragen zur Entwicklerzufriedenheit mit der Plattform
  • Mean Time to Onboard – Wie schnell neue Engineers produktiv werden

Nutzen Sie das eingebaute TechInsights-Plugin von Backstage oder bauen Sie Custom-Dashboards mit Prometheus und Grafana, um diese Metriken über die Zeit zu verfolgen.

Häufige Fallstricke, die es zu vermeiden gilt

Zu viel zu früh bauen. Beginnen Sie mit den schmerzhaftesten Workflows – typischerweise Environment-Provisioning und CI/CD – und erweitern Sie von dort. Eine minimale Plattform, die Entwickler tatsächlich nutzen, schlägt eine umfassende, die sie ignorieren.

Sie als reines Infrastruktur-Projekt zu behandeln. Platform Engineering dreht sich fundamental um Developer Experience. Wenn Ihr Plattform-Team nie mit Entwicklern spricht, bauen Sie das Falsche.

Die Plattform verpflichtend machen. Golden Paths sollten attraktiv sein, nicht durch Mandate erzwungen. Wenn Entwickler Ihre Plattform aktiv meiden, ist das Feedback, das Sie hören müssen.

Dokumentation vernachlässigen. Jedes Template, jede API, jeder Workflow braucht klare Dokumentation. Backstages TechDocs-Feature erlaubt es, Docs als Markdown neben dem Code zu schreiben.

Empfohlener Tool-Stack

SchichtEmpfohlene Tools
PortalBackstage, Port, Cortex
InfrastructureCrossplane, Terraform, Pulumi
OrchestrationArgo Workflows, Tekton
PolicyOPA/Gatekeeper, Kyverno
SecretsHashiCorp Vault, External Secrets Operator
ObservabilityPrometheus, Grafana, OpenTelemetry
GitOpsArgoCD, Flux

Fazit

Platform Engineering bedeutet nicht, ein weiteres Tool zu bauen – es bedeutet, ein Produkt für Ihre Entwickler zu bauen. Die erfolgreichsten Plattform-Teams agieren wie interne Start-ups: Sie sprechen mit ihren Nutzern, iterieren auf Basis von Feedback und messen Outcomes konsequent.

Bei DevOpsVibe helfen wir Organisationen, Internal Developer Platforms zu designen und umzusetzen, die auf ihre Engineering-Kultur und ihren Technologie-Stack zugeschnitten sind. Ob Sie bei null anfangen oder eine bestehende Plattform skalieren – unser Team bringt praktische Erfahrung mit Backstage, Crossplane und dem gesamten Cloud-Native-Ökosystem mit. Nehmen Sie Kontakt auf, um Ihre Platform-Engineering-Reise zu beschleunigen.

abgelegt unter
platform-engineeringidpdeveloper-experiencebackstagekuberneteskubernetesself-service
mit uns arbeiten

Soll unser Team Ihrer Infrastruktur helfen?

talk to an engineerFree 30-min discovery callBook
close