🔴 Advanced

Platform Engineering — Interné vývojárske platformy

Platform engineering je disciplína zameraná na budovanie interných vývojárskych platforiem (IDP), ktoré zjednodušujú a štandardizujú prácu vývojárov. Namiesto toho, aby každý tím riešil infraštruktúru sám, platformový tím poskytuje self-service nástroje a golden paths.


Prečo platform engineering?

DevOps priniesol princíp "you build it, you run it". V praxi to často znamená, že vývojári musia ovládať Kubernetes, Terraform, CI/CD, monitoring — a to ich spomaľuje.

Kognitívna záťaž je hlavný problém:

  • Vývojár chce nasadiť službu, ale musí písať Helm charty
  • Potrebuje databázu, ale musí konfigurovať Terraform moduly
  • Chce monitoring, ale musí nastaviť Prometheus rules

Platform engineering rieši tento problém abstrakciou — vývojár si cez portál klikne "nová služba" a všetko sa vytvorí automaticky.

Internal Developer Platform (IDP)

IDP je súbor nástrojov, workflow a self-service capabilities, ktoré platformový tím buduje a udržiava pre vývojárov.

Komponenty IDP

┌─────────────────────────────────────┐
│        Developer Portal             │
│     (Backstage, Port, Cortex)       │
├─────────────────────────────────────┤
│    Self-Service Actions             │
│  (Create service, Deploy, Scale)    │
├─────────────────────────────────────┤
│    Golden Paths & Templates         │
│  (Service templates, CI pipelines)  │
├─────────────────────────────────────┤
│    Infrastructure Orchestration     │
│  (Kubernetes, Terraform, ArgoCD)    │
└─────────────────────────────────────┘

Backstage — Open-source developer portal

Backstage je open-source platforma od Spotify, teraz CNCF Incubating projekt. Slúži ako centrálny portál pre vývojárov.

Kľúčové funkcie

  • Software Catalog — centrálny register všetkých služieb, knižníc a infraštruktúry
  • Software Templates — scaffolding nových projektov podľa štandardov
  • TechDocs — dokumentácia ako kód (docs-as-code)
  • Plugins — rozšíriteľný ekosystém (Kubernetes, CI/CD, monitoring)

Príklad: catalog-info.yaml

apiVersion: backstage.io/v1alpha1
kind: Component
metadata:
  name: payment-service
  description: Služba na spracovanie platieb
  annotations:
    github.com/project-slug: myorg/payment-service
    backstage.io/techdocs-ref: dir:.
  tags:
    - java
    - spring-boot
spec:
  type: service
  lifecycle: production
  owner: team-payments
  system: checkout
  dependsOn:
    - component:user-service
    - resource:payments-db
  providesApis:
    - payments-api

Príklad: Software Template

apiVersion: scaffolder.backstage.io/v1beta3
kind: Template
metadata:
  name: spring-boot-service
  title: Spring Boot Microservice
  description: Vytvorí nový Spring Boot microservice s CI/CD
spec:
  owner: platform-team
  type: service
  parameters:
    - title: Service Info
      properties:
        name:
          title: Názov služby
          type: string
        owner:
          title: Vlastník
          type: string
          ui:field: OwnerPicker
    - title: Infrastructure
      properties:
        database:
          title: Databáza
          type: string
          enum: [none, postgresql, mysql]
  steps:
    - id: fetch
      name: Fetch Template
      action: fetch:template
      input:
        url: ./skeleton
        values:
          name: ${{ parameters.name }}
    - id: publish
      name: Create Repository
      action: publish:github
      input:
        repoUrl: github.com?owner=myorg&repo=${{ parameters.name }}
    - id: register
      name: Register in Catalog
      action: catalog:register
      input:
        repoContentsUrl: ${{ steps.publish.output.repoContentsUrl }}
        catalogInfoPath: /catalog-info.yaml

Golden Paths

Golden paths sú odporúčané, predpripravené cesty pre bežné úlohy. Nie sú vynútené — vývojári ich môžu obísť, ale nemajú dôvod.

Príklady golden paths

Úloha Golden Path
Nová služba Backstage template → repo + CI/CD + monitoring
Databáza Self-service formulár → managed PostgreSQL
Deployment Merge do main → auto-deploy cez ArgoCD
Monitoring Automatický dashboard + základné alerty
Dokumentácia TechDocs v repo → auto-publish do portálu

Princípy golden paths

  1. Paved, not enforced — ľahká cesta, nie jediná cesta
  2. Opiniated defaults — rozumné predvolené nastavenia
  3. Escape hatch — možnosť customizácie keď treba
  4. Continuously improved — iterácia na základe feedback-u

Self-Service infraštruktúra

Kľúčový princíp platform engineering je self-service. Vývojári by nemali otvárať tickety pre bežné operácie.

Príklady self-service akcií

# Vývojár chce novú službu:
# 1. Otvorí Backstage
# 2. Vyberie template "Node.js Service"
# 3. Vyplní názov, tím, požiadavky
# 4. Klikne "Create"

# Automaticky sa vytvorí:
# ✅ GitHub repo so štandardnou štruktúrou
# ✅ CI/CD pipeline (GitHub Actions)
# ✅ Kubernetes manifesty (Helm chart)
# ✅ ArgoCD Application
# ✅ Grafana dashboard
# ✅ PagerDuty service
# ✅ Záznam v Software Catalog

Crossplane pre infraštruktúru

Crossplane umožňuje definovať infraštruktúru (databázy, cache, queues) ako Kubernetes objekty:

apiVersion: database.example.org/v1alpha1
kind: PostgreSQLInstance
metadata:
  name: payments-db
  namespace: payments
spec:
  parameters:
    storageGB: 20
    version: "16"
  compositionSelector:
    matchLabels:
      provider: aws
      env: production

Metriky platformy

Ako merať úspech platformy? DORA metriky a developer experience:

Metrika Popis Cieľ
Lead time Od commit-u po production < 1 hodina
Deployment frequency Ako často nasadzujeme Viackrát denne
Time to onboard Čas na prvý deployment nového vývojára < 1 deň
Self-service ratio % operácií bez ticketov > 90 %
Developer satisfaction NPS/survey skóre > 8/10

Nástroje ekosystému

Kategória Nástroje
Developer Portal Backstage, Port, Cortex, OpsLevel
IaC Orchestration Crossplane, Terraform Cloud, Pulumi
GitOps ArgoCD, Flux
Service Catalog Backstage, ServiceNow
Scaffolding Cookiecutter, Yeoman, Backstage Templates
Score Score (platform-agnostic workload spec)

Ako začať s platform engineering

  1. Zmapujte developer journey — kde sú pain points?
  2. Začnite malým tímom (2-3 ľudia) — platforma je produkt
  3. Prvý quick win — automatizujte najčastejší manuálny proces
  4. Iterujte — zbierajte feedback, merajte, vylepšujte
  5. Dokumentujte golden paths — aj jednoduchý README pomáha
  6. Nebudujte všetko — integrujte existujúce nástroje

Best Practices

  • Platforma je produkt — má zákazníkov (vývojárov), roadmapu, backlog
  • Treat developers as customers — UX je dôležitý
  • Abstrahácia, nie skrývanie — vývojári by mali vedieť, čo sa deje pod povrchom
  • Opt-in, nie mandate — ak je platforma dobrá, ľudia ju budú používať
  • Feedback loops — pravidelné user research s vývojármi

Platform engineering premosťuje priepasť medzi DevOps princípmi a realitou vývojárskych tímov. Namiesto toho, aby každý vývojár bol DevOps expert, platformový tím buduje nástroje, ktoré to umožňujú automaticky.