Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Make developers fly: Principles for platform engineering

Make developers fly: Principles for platform engineering

How can your company help developers to fly, but not crash down? The answer is platform engineering, which is the discipline of building self-service internal developer platforms (IDPs) to simplify software delivery for product teams. In this talk, you will learn how platform engineering evolved from the DevOps movement and what principles and best practices make a good implementation. Finally, we take a look at reference architectures that can power your platform.

Alex Krause

June 26, 2023
Tweet

More Decks by Alex Krause

Other Decks in Programming

Transcript

  1. qaware.de Make developers fly: Principles for platform engineering Alex Krause

    Software Architect, QAware @alex0ptr Robert Hoffmann Solutions Architect, AWS @robhoffmax
  2. 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.
  3. 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
  4. 8 QAware Mehr als nur kubectl apply -f • Security

    • Compliance • Integration • Reliability • Scalability • KRITIS, DSGVO • Cost Efficiency • AuthX • Maintenance
  5. 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
  6. 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
  7. 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
  8. 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
  9. 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 }
  10. Developer UX ▪ User Guide ▪ Subtemplates, Modules, Blueprints für

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

    goldene Pfade ▪ Skaffolding für typische Use-Cases ▪ Tools für Observability, Debugging… 22
  12. 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
  13. 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…
  14. 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
  15. 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
  16. 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
  17. 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
  18. 36 (Platform Engineers) User-centered ✅ Self-service ✅ Decentralized ✅ Versioned

    ✅ Customizable ✅ AWS Proton: Developer Platform as a Service Transparent ✅
  19. 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/
  20. 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
  21. 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
  22. 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