Slide 1

Slide 1 text

qaware.de Make developers fly: Principles for platform engineering Alex Krause Software Architect, QAware @alex0ptr Robert Hoffmann Solutions Architect, AWS @robhoffmax

Slide 2

Slide 2 text

Was bisher geschah…

Slide 3

Slide 3 text

3 QAware DevOps: Wall of Confusion Entwicklung Betrieb Wertschöpfungskette

Slide 4

Slide 4 text

4 QAware DevOps: Wall of Confusion Entwicklung Betrieb Zentrale Aufgaben: ● Schnell auf Marktänderungen reagieren und neue Funktionalitäten entwickeln. ● Erfolg wird häufig am Durchsatz der Auslieferungen gemessen. Zentrale Aufgaben: ● Stabile, sichere und zuverlässige Dienste für die Kunden. ● Erfolg wird häufig an der Zuverlässigkeit der Systeme gemessen. Folgen: ● Gegensätzliche Ziele führen zum Konflikt, Misstrauen und schlussendlich zur Bildung von Silos. ● Software wird “über den Zaun geworfen”, ohne Rücksicht auf Betriebsführbarkeit oder betriebliche Aspekte. ● Der Betrieb erschwert das Ausliefern durch bürokratische Prozesse um die Kontrolle zurückzuerhalten. ● Im schlimmsten Fall kommt es zu ständigen Ausfällen, schlechten Antwortzeiten und zum Stillstand der Wertschöpfungskette. Dies bedroht alle Geschäftsbereiche.

Slide 5

Slide 5 text

5 QAware DevOps: Definition “DevOps beschreibt einen Prozessverbesserungs-Ansatz aus den Bereichen der Softwareentwicklung und Systemadministration. [...] DevOps soll durch gemeinsame Anreize, Prozesse und Software-Werkzeuge eine effektivere und effizientere Zusammenarbeit der Bereiche Dev, Ops und Qualitätssicherung (QS) ermöglichen. Mit DevOps sollen die Qualität der Software, die Geschwindigkeit der Entwicklung und der Auslieferung sowie das Miteinander der beteiligten Teams verbessert werden.” Wikipedia

Slide 6

Slide 6 text

6 “You build it, you run it.” Werner Vogles - 2006

Slide 7

Slide 7 text

7 QAware Source: Amazon Web Services

Slide 8

Slide 8 text

8 QAware Mehr als nur kubectl apply -f ● Security ● Compliance ● Integration ● Reliability ● Scalability ● KRITIS, DSGVO ● Cost Efficiency ● AuthX ● Maintenance

Slide 9

Slide 9 text

Platform Engineering

Slide 10

Slide 10 text

10 QAware Platform Engineering ● Spezialisierung der Rollen, dadurch geringerer Cognitive Load ● immer noch DevOps, zentrale Schnittstelle: Die Plattform ● Wiederverwendung und organisatorische Skalierung ● Automatisierte Integration bedeutet mehr Software Engineering Platform engineering improves developer experience and productivity by providing self-service capabilities with automated infrastructure operations. Platform engineering is trending because of its promise to optimize the developer experience and accelerate product teams’ delivery of customer value. Gartner

Slide 11

Slide 11 text

11 QAware Developer Platform Engineer App Developer Platform

Slide 12

Slide 12 text

12 QAware Internal Developer Platforms - reingezoomt keine IDPs: reine Compute-Plattformen ● Konzernanforderungen und -services müssen Integriert sein ● bspw. GitLab, AuthX, Prozesse… Source: Amazon Web Services

Slide 13

Slide 13 text

Prinzipien und Pattern

Slide 14

Slide 14 text

14 V e r s i o n e d D e c e n t r a l i z e d U s e r - c e n t e r e d C u s t o m i z a b l e - T r a n s p a r e n t S e l f - s e r v i c e

Slide 15

Slide 15 text

Decentralized Risiko teilen und schnell iterieren

Slide 16

Slide 16 text

16 QAware Source: Amazon Web Services

Slide 17

Slide 17 text

17 QAware Zentrale Multi-Tenant Plattform Skalierung bspw. Prometheus, Opensearch, GitOps Isolierung bspw. Docker, Multi-Tenancy bspw. RBAC, Grafana Stack Koordination bspw. K8s deprecations, CRDs Single Point of Failure bspw. API Gateway Route

Slide 18

Slide 18 text

User-centered Product Mindset: Users First!

Slide 19

Slide 19 text

Developer UX ■ User Guide 19

Slide 20

Slide 20 text

Developer UX ■ User Guide ■ Subtemplates, Modules, Blueprints für goldene Pfade 20 base-chart-spring: name: my-deployment version: '1-snapshot_a5d5547f_13561_master' springProfiles: - name: k8s content: | my-deployment: business: refresh-interval: PT5m api-key: ksyajdf4038dsse envSecrets: SPRING_DATASOURCE_URL: secretName: postgres-my-deployment key: jdbc allowConnectionsFrom: - nginx-ingress - my-other-deployment module "postgresql_..." { source = "git::https://.../.../modules/postgresql.git?ref=1.0.4" resource_group = azurerm_resource_group.this kube_outbound_ip = module.aks.lb_public_ip_outbound sku_name = local.config.postgres_sku_name subnet_id = module.vnet.subnet_id kube_namespace = "default" tags = local.standard_tags }

Slide 21

Slide 21 text

Developer UX ■ User Guide ■ Subtemplates, Modules, Blueprints für goldene Pfade ■ Skaffolding für typische Use-Cases 21

Slide 22

Slide 22 text

Developer UX ■ User Guide ■ Subtemplates, Modules, Blueprints für goldene Pfade ■ Skaffolding für typische Use-Cases ■ Tools für Observability, Debugging… 22

Slide 23

Slide 23 text

Developer UX ■ User Guide ■ Subtemplates, Modules, Blueprints für goldene Pfade ■ Skaffolding für typische Use-Cases ■ Tools für Observability, Debugging… ■ Support ■ Voll integriert 23

Slide 24

Slide 24 text

24 QAware Inner Source ● Aller Code ist intern offen ● jede Instanz einer IDP ist offen ● Referenz IDP ist offen ○ Issue Tracker ○ Roadmap ○ PRs welcome ● Community Events Neue Features, Austausch…

Slide 25

Slide 25 text

Customizable Studentenfutter für den Silberpfad.

Slide 26

Slide 26 text

26 QAware Trailmix ● abschalten von compliance enforcement ist zentrales feature ● sollte feingranular erfolgen ● Anpassungen an der Referenz z.B. per CODEOWNERS und MR steuern ● definierte Andock Schnittstellen z.B. trigger Token und Webhooks apiVersion: constraints.gatekeeper.sh/v1beta1 kind: K8sDenyLoadbalancerService metadata: name: deny-loadbalancer-service spec: match: kinds: - apiGroups: [""] kinds: ["Service"] parameters: allowedLoadbalancers : - 'traefik/traefik' /CODEOWNERS @platform-team /01-infra/ @platform-team /02-user/ @user-team-foo

Slide 27

Slide 27 text

Transparent is the new abstracted

Slide 28

Slide 28 text

28 QAware “Platforms reduce cognitive load by exposing useful abstractions. Good abstractions form a cohesive language and useful mental model. Omitting relevant details is tempting but ends up with dangerous illusions.” Gregor Hohpe @ PlatformCon 2023 Autor von Cloud Strategy Aufgabe für Developer Platforms: ● Verständliche Abstractions mit Escape Hatches bauen ● Die Limitationen der eigenen Abstraktionen verstehen (z.B. Build vs Runtime) ... ● ... und für die DevEx bedenken (Debugging, Alerting) ● Cloud Services bieten fertige Abstraktionen

Slide 29

Slide 29 text

Self-Service Ski fahren ohne Lawinengefahr

Slide 30

Slide 30 text

30 QAware Self-Service Der Lebenszyklus einer IDP ist unter voller Kontrolle des Nutzers und benötigt im Regelfall keine Interaktion seitens des Platform Teams. ● Erzeugen, Löschen, Upgraden einer IDP Instanz wird durch Nutzer angestoßen ● Werkzeuge: CLI, UIs, Pipelines ● automatisierte Prozesse überwachen und enforcen die Compliance und Qualität ● wenige PE sind notwendig, um eine große Menge an IDPs zu betreiben

Slide 31

Slide 31 text

Versioned Infrastruktur wie Software

Slide 32

Slide 32 text

32 QAware IDPs versionieren wie Software ● Versioniert, mit Tags, Release Notes ● Releases durch Pipelines gesteuert ● E2E Test auf jeder Version ● Automatisierte Auslieferung (Patch, Pipeline, Test) # run from IDP template repository # create a patch file git diff v41..v42 > /tmp/v42.patch # run in concrete instance repository # test if patch is applicable in instance git apply --check v42.patch # apply changes git apply /tmp/v42.patch git commit -am "IDP upgrade v41 → v42" git push

Slide 33

Slide 33 text

Bausteine

Slide 34

Slide 34 text

34 QAware Bausteine (Capabilities)

Slide 35

Slide 35 text

35 QAware Beispiel: AWS-native mit AWS Proton

Slide 36

Slide 36 text

36 (Platform Engineers) User-centered ✅ Self-service ✅ Decentralized ✅ Versioned ✅ Customizable ✅ AWS Proton: Developer Platform as a Service Transparent ✅

Slide 37

Slide 37 text

37 QAware CNCF/K8s Orchestrator für IDP CNCF Bausteine Git + +

Slide 38

Slide 38 text

38 QAware Capability Tool/Methode k8s/CNCF Tool/Methode AWS Provisioning Engine Terraform, ArgoCD, Kubernetes Operators AWS CloudFormation CI/CD GitLab CI, Argo Workflows AWS CodePipeline Source Code GitLab CI AWS CodeCommit Pattern Repository Git Repository AWS Proton, AWS Service Catalog Managed Services Cloud Services AWS services, AWS Private Marketplace Developer Portal Backstage, GitLab Pages AWS Proton, AWS Service Catalog CLI Code AWS CLI (Proton Commands) Deployment Service Code, Crossplane AWS Proton Managed Environments Code / Git AWS Proton, AWS Control Tower Governance Open Policy Agent, AWS Config AWS Control Tower, AWS Config, AWS SecurityHub, Amazon GuardDuty, Amazon Inspector Capabilities mit Implementierungen mappen CNCF Platforms White Paper: https://tag-app-delivery.cncf.io/whitepapers/platforms/

Slide 39

Slide 39 text

39 QAware Capability Tool/Methode k8s/CNCF Tool/Methode AWS Provisioning Engine Terraform, ArgoCD, Kubernetes Operators AWS CloudFormation CI/CD GitLab CI, Argo Workflows AWS CodePipeline Source Code GitLab CI AWS CodeCommit Pattern Repository Git Repository AWS Proton, AWS Service Catalog Managed Services Cloud Services AWS services, AWS Private Marketplace Developer Portal Backstage, GitLab Pages AWS Proton, AWS Service Catalog CLI Code AWS CLI (Proton Commands) Deployment Service Code, Crossplane AWS Proton Managed Environments Code / Git AWS Proton, AWS Control Tower Governance Open Policy Agent, AWS Config AWS Control Tower, AWS Config, AWS SecurityHub, Amazon GuardDuty, Amazon Inspector Capabilities mit Implementierungen mappen CNCF Platforms White Paper: https://tag-app-delivery.cncf.io/whitepapers/platforms/ tl;dr wähle Dein Ecosystem

Slide 40

Slide 40 text

Wie baut ihr Plattformen?

Slide 41

Slide 41 text

41 QAware Wo kann man das lesen? i’x 7/2023 am 29. Juni c’t 17/23 am 15. Juli WeAreDevelopers World Congress am 27. Juli

Slide 42

Slide 42 text

qaware.de QAware GmbH Mainz Rheinstraße 4 C 55116 Mainz Tel. +49 6131 21569-0 [email protected] twitter.com/qaware linkedin.com/company/qaware-gmbh xing.com/companies/qawaregmbh slideshare.net/qaware github.com/qaware