spinny:~/writing $ vim platform-engineering-internal-developer-platform.md
1~2Efterhånden som softwaresystemer bliver mere komplekse - microservices, Kubernetes, multi-cloud, CI/CD-pipelines, observability-stacks - bruger udviklere mere tid på infrastruktur og mindre tid på at bygge produkter. **Platform Engineering** løser dette ved at skabe en intern platform der abstraherer kompleksitet og giver udviklere selvbetjeningsværktøjer til hurtigere levering.3~4Gartner forudsiger at inden 2027 vil **80% af softwareingeniørorganisationer** oprette platformteams. I denne guide udforsker vi hvad Platform Engineering er, hvorfor det er vigtigt, og hvordan man bygger en Internal Developer Platform fra bunden.5~6## Hvad er Platform Engineering?7~8Platform Engineering er disciplinen at designe og bygge toolchains og workflows der muliggør selvbetjeningskapaciteter for softwareingeniørorganisationer. Resultatet er en **Internal Developer Platform (IDP)** - et lag der sidder mellem udviklere og infrastruktur.9~10```mermaid11graph TD12 subgraph "Developers"13 D1[Frontend Team]14 D2[Backend Team]15 D3[Data Team]16 end17~18 subgraph "Internal Developer Platform"19 Portal[Developer Portal]20 Templates[Service Templates]21 CICD[CI/CD Pipelines]22 Infra[Infrastructure Abstraction]23 end24~25 subgraph "Infrastructure"26 K8s[Kubernetes]27 Cloud[Cloud Services]28 DB[Databases]29 Monitor[Monitoring]30 end31~32 D1 --> Portal33 D2 --> Portal34 D3 --> Portal35 Portal --> Templates36 Portal --> CICD37 Portal --> Infra38 Infra --> K8s39 Infra --> Cloud40 Infra --> DB41 CICD --> Monitor42```43~44### Platform Engineering vs DevOps45~46Platform Engineering er ikke en erstatning for DevOps - det er den næste evolution. DevOps sagde "du bygger det, du kører det." Platform Engineering siger "vi gør bygning og drift ubesværet."47~48| Aspekt | DevOps | Platform Engineering |49|--------|--------|---------------------|50| **Fokus** | Kultur og praksisser | Produkter og selvbetjening |51| **Tilgang** | Hvert team styrer infra | Platformteamet abstraherer infra |52| **Kognitiv belastning** | Høj (hvert team lærer alt) | Lav (golden paths leveret) |53| **Resultat** | CI/CD-pipelines, IaC-scripts | Internal Developer Platform |54| **Brugere** | Al engineering | Platformteamet betjener engineering |55~56## Hvorfor Platform Engineering er Vigtigt57~58### Problemet med Kognitiv Belastning59~60I en typisk moderne organisation skal en udvikler forstå:61~62- Git-workflows og forgreningsstrategier63- CI/CD-pipeline-konfiguration64- Container-bygning og registry-styring65- Kubernetes-manifester og Helm Charts66- Cloud-udbydertjenester (AWS/GCP/Azure)67- Netværk, DNS, TLS-certifikater68- Opsætning af overvågning, logning, alarmering69- Database-provisioning og migrationer70- Sikkerhedspolitikker og compliance71~72Det er en enorm kognitiv byrde der tager fokus fra det faktiske produkt.73~74### Golden Path75~76Platform Engineering introducerer konceptet **golden paths** - meningsstærke, velunderstøttede og dokumenterede stier for almindelige opgaver. En golden path er ikke et krav; udviklere *kan* afvige, men platformen gør det rigtige til det nemme.77~78```mermaid79flowchart LR80 Dev[Developer] -- "Create new service" --> Portal[Portal]81 Portal -- "Select template" --> Template[Service Template]82 Template -- "Auto-provision" --> Repo[Git Repository]83 Template --> Pipeline[CI/CD Pipeline]84 Template --> Infra[Kubernetes Namespace]85 Template --> Monitor[Dashboards + Alerts]86 Repo --> Ready[Ready to Code!]87```88~89**Eksempel på golden path for oprettelse af en ny microservice:**901. Udvikleren vælger "Ny Backend Service" i portalen912. Vælger sprog/framework (Node.js, Go, Python)923. Platformen opretter automatisk: Git-repository, CI/CD-pipeline, Kubernetes namespace, overvågningsdashboards og alarmregler934. Udvikleren kloner repository'et og begynder at kode med det samme94~95## Bygning af en Internal Developer Platform96~97### Lag 1: Developer Portal98~99Portalen er det enkelte indgangspunkt for udviklere. Den mest populære open source-mulighed er **Backstage** (skabt af Spotify, nu et CNCF-projekt).100~101Nøglefunktioner:102- **Servicekatalog**: Hver service, dens ejer, dokumentation og afhængigheder103- **Softwareskabeloner**: Scaffolding til nye services med indbyggede best practices104- **Teknisk dokumentation**: Dokumentation som kode, renderet og søgbar105- **Plugin-økosystem**: Udvidelig med tilpasset funktionalitet106~107```yaml108# backstage/catalog-info.yaml109apiVersion: backstage.io/v1alpha1110kind: Component111metadata:112 name: user-service113 description: Manages user accounts and authentication114 annotations:115 github.com/project-slug: myorg/user-service116 backstage.io/techdocs-ref: dir:.117spec:118 type: service119 lifecycle: production120 owner: team-auth121 system: identity-platform122 dependsOn:123 - resource:postgresql-main124 providesApis:125 - user-api126```127~128### Lag 2: Infrastrukturabstraktion129~130Udviklere bør ikke skrive Terraform eller Kubernetes YAML direkte. Platformen bør levere abstraktioner.131~132**Værktøjer:**133- **Crossplane**: Kubernetes-native infrastrukturprovisioning134- **Terraform med moduler**: Forudbyggede, testede infrastrukturmoduler135- **Pulumi**: Infrastruktur som rigtig kode (TypeScript, Python, Go)136~137```yaml138# Example: Crossplane composition for a database139apiVersion: database.example.com/v1140kind: PostgreSQLInstance141metadata:142 name: user-db143spec:144 size: small # Abstraction: small = 2 vCPU, 4GB RAM145 version: "16"146 backup: daily147 team: auth-team148```149~150I stedet for at konfigurere RDS-parametre, VPC-subnets, sikkerhedsgrupper og backup-politikker angiver udvikleren blot `size: small` og `backup: daily`. Platformen håndterer resten.151~152### Lag 3: CI/CD-standardisering153~154Standardiser CI/CD så teams ikke bygger hver deres egne pipelines.155~156```yaml157# .github/workflows/platform-ci.yml158# Teams just include the shared workflow159name: Build and Deploy160on:161 push:162 branches: [main]163~164jobs:165 pipeline:166 uses: myorg/platform-workflows/.github/workflows/standard-pipeline.yml@v2167 with:168 language: node169 deploy-target: production170 secrets: inherit171```172~173**Nøglepraksisser:**174- Delte CI/CD-skabeloner som teams inkluderer (ikke kopierer)175- Automatisk sikkerhedsscanning (SAST, afhængighedsaudit)176- Standardiserede deployment-strategier (canary, blue/green)177- Automatisk rollback ved fejlede health checks178~179### Lag 4: Observability180~181Forudkonfigureret overvågning så udviklere får dashboards og alarmer klar til brug.182~183- **Metrikker**: Prometheus + Grafana med standarddashboards per service184- **Logning**: Struktureret logning med centraliseret indsamling (Loki, ELK)185- **Tracing**: Distribueret tracing med OpenTelemetry186- **Alarmering**: PagerDuty/Opsgenie-integration med fornuftige standardværdier187~188```mermaid189graph LR190 Service[Your Service] -- "OpenTelemetry SDK" --> Collector[OTel Collector]191 Collector --> Prometheus[Prometheus]192 Collector --> Loki[Loki]193 Collector --> Tempo[Tempo]194 Prometheus --> Grafana[Grafana Dashboards]195 Loki --> Grafana196 Tempo --> Grafana197 Grafana --> PagerDuty[PagerDuty Alerts]198```199~200## Måling af Succes201~202Hvordan ved du at din platform virker? Spor disse metrikker:203~204### DORA-metrikker205- **Deployment-frekvens**: Hvor ofte kode når produktion206- **Gennemløbstid for ændringer**: Tid fra commit til produktion207- **Fejlrate for ændringer**: Procent af deployments der forårsager fejl208- **Gennemsnitlig gendannelsestid**: Tid til at gendanne service efter en hændelse209~210### Platformspecifikke Metrikker211- **Tid til første deploy**: Hvor lang tid fra "ny service" til første produktionsdeploy212- **Udviklertilfredshed (NPS)**: Undersøg dine brugere regelmæssigt213- **Selvbetjeningsandel**: % af infrastrukturanmodninger håndteret uden tickets214- **Golden path-adoption**: % af services der følger den anbefalede sti215~216## Almindelige Fejl217~218### 1. Bygge for Meget, for Tidligt219Start med det største smertepunkt, ikke en storslået vision. Hvis deployments er smertefulde, start der. Hvis provisioning tager uger, start der.220~221### 2. Ikke Behandle Platformen som et Produkt222Platformteamet har brug for en produktchef, brugerforskning og feedback-loops. Udviklere er dine kunder - forstå deres behov.223~224### 3. Påtvinge i Stedet for at Tiltrække225De bedste platforme adopteres frivilligt fordi de gør udvikleres liv lettere. Hvis du skal påtvinge brug, er din platform ikke god nok.226~227### 4. Ignorere Udvikleroplevelsen228En platform med forfærdelig UX vil ikke blive brugt. Invester i klar dokumentation, hjælpsomme fejlmeddelelser og hurtige feedback-loops.229~230## Kom i Gang231~232En praktisk køreplan for at bygge din første IDP:233~234```mermaid235flowchart TD236 A[Month 1-2: Discovery] --> B[Month 3-4: MVP]237 B --> C[Month 5-6: Iterate]238 C --> D[Month 7+: Scale]239~240 A --> A1[Interview developers]241 A --> A2[Map pain points]242 A --> A3[Choose first golden path]243~244 B --> B1[Deploy Backstage]245 B --> B2[First service template]246 B --> B3[Standardized CI/CD]247~248 C --> C1[Gather feedback]249 C --> C2[Add infrastructure abstraction]250 C --> C3[Improve docs and onboarding]251~252 D --> D1[More templates and golden paths]253 D --> D2[Self-service infrastructure]254 D --> D3[Advanced observability]255```256~257### Minimum Viable Platform258~2591. **Servicekatalog** (Backstage) - vid hvad der eksisterer og hvem der ejer det2602. **En serviceskabelon** - golden path for din mest almindelige servicetype2613. **Standardiseret CI/CD** - delt pipeline som teams inkluderer2624. **Grundlæggende dokumentation** - hvordan man bruger platformen, hvor man får hjælp263~264Du kan bygge dette MVP på 2-3 måneder med et team på 2-3 ingeniører.265~266## Konklusion267~268Platform Engineering handler ikke om at bygge den perfekte platform fra dag et. Det handler om gradvist at reducere den kognitive belastning på udviklere så de kan fokusere på at bygge produkter. Start småt, mål effekten og iterer baseret på udviklerfeedback.269~270Organisationer der investerer i Platform Engineering vil have en betydelig konkurrencefordel: hurtigere levering, gladere udviklere og mere pålidelige systemer.271~272**Ressourcer:**273- [Team Topologies](https://teamtopologies.com/) - bogen der populariserede platformteams274- [Backstage](https://backstage.io/) - Spotifys open source-udviklerportal275- [CNCF Platforms White Paper](https://tag-app-delivery.cncf.io/whitepapers/platforms/) - fællesskabsdefinition og best practices276- [platformengineering.org](https://platformengineering.org/) - fællesskab, begivenheder og ressourcer277~
NORMAL · platform-engineering-internal-developer-platform.md [readonly]277 lines · :q to close