qaware.de
Make developers fly:
Principles for platform engineering
Alex Krause
Software Architect, QAware
@alex0ptr
Robert Hoffmann
2
2
ehemaliger Product Owner bei
Hallo Magenta
co-ideation für diesen Talk
“Solutions Architect @awscloud
ex @DeutscheTelekom, @Samsung
I move boxes around to help people
move boxes around.”
coole Socke 😎 🐦 @robhoffmax
Was bisher geschah…
4
QAware
DevOps: Wall of Confusion
Entwicklung Betrieb
Wertschöpfungskette
5
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.
6
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
7
“You build it,
you run it.”
Werner Vogles - 2006
8
QAware
Source: Amazon Web Services
9
QAware
Mehr als nur kubectl apply -f
● Security
● Compliance
● Integration
● Reliability
● Scalability
● KRITIS,
DSGVO
● Cost Efficiency
● AuthX
● Maintenance
Platform Engineering
11
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 is the discipline of
designing and building toolchains and
workflows that enable self-service
capabilities for software engineering
organizations in the cloud-native era.
Platform engineers provide an integrated
product most often referred to as an
“Internal Developer Platform” covering the
operational necessities of the entire lifecycle
of an application.”
Humanitec
12
QAware
Developer
Platform
Engineer
App
Developer
Platform
13
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
Prinzipien und Pattern
15
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
Decentralized
Risiko teilen und schnell iterieren
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
18
QAware Source: Amazon Web Services
User-centered
Product Mindset: Users First!
Developer UX
■ User Guide
20
Developer UX
■ User Guide
■ Subtemplates,
Modules, Blueprints
für goldene Pfade
21
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
}
Developer UX
■ User Guide
■ Subtemplates,
Modules, Blueprints
für goldene Pfade
■ Skaffolding für
typische Use-Cases
22
Developer UX
■ User Guide
■ Subtemplates,
Modules, Blueprints
für goldene Pfade
■ Skaffolding für
typische Use-Cases
■ Tools für
Observability,
Debugging…
23
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
24
Customizable
Studentenfutter für den Silberpfad.
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
Transparent
is the new abstracted
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
29
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…
Self-Service
Ski fahren ohne Lawinengefahr
31
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
Versioned
Infrastruktur wie Software
33
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
Bausteine
35
QAware
Bausteine (Capabilities)
36
QAware
Beispiel: AWS-native mit AWS Proton
37
(Platform Engineers)
User-centered ✅
Self-service ✅
Decentralized ✅
Versioned ✅
Customizable ✅
AWS Proton: Developer Platform as a Service
Transparent ✅
38
QAware
39
QAware
40
QAware
CNCF/K8s Orchestrator für IDP
CNCF
Bausteine
Git
+
+
41
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/
42
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
Wie baut ihr Plattformen?
qaware.de
QAware GmbH Mainz
Rheinstraße 4 C
55116 Mainz
Tel. +49 6131 21569-0
info@qaware.de
twitter.com/qaware
linkedin.com/company/qaware-gmbh
xing.com/companies/qawaregmbh
slideshare.net/qaware
github.com/qaware

Make Developers Fly: Principles for Platform Engineering

  • 1.
    qaware.de Make developers fly: Principlesfor platform engineering Alex Krause Software Architect, QAware @alex0ptr
  • 2.
    Robert Hoffmann 2 2 ehemaliger ProductOwner bei Hallo Magenta co-ideation für diesen Talk “Solutions Architect @awscloud ex @DeutscheTelekom, @Samsung I move boxes around to help people move boxes around.” coole Socke 😎 🐦 @robhoffmax
  • 3.
  • 4.
    4 QAware DevOps: Wall ofConfusion Entwicklung Betrieb Wertschöpfungskette
  • 5.
    5 QAware DevOps: Wall ofConfusion 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.
  • 6.
    6 QAware DevOps: Definition “DevOps beschreibteinen 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
  • 7.
    7 “You build it, yourun it.” Werner Vogles - 2006
  • 8.
  • 9.
    9 QAware Mehr als nurkubectl apply -f ● Security ● Compliance ● Integration ● Reliability ● Scalability ● KRITIS, DSGVO ● Cost Efficiency ● AuthX ● Maintenance
  • 10.
  • 11.
    11 QAware Platform Engineering ● Spezialisierungder Rollen, dadurch geringerer Cognitive Load ● immer noch DevOps, zentrale Schnittstelle: Die Plattform ● Wiederverwendung und organisatorische Skalierung ● Automatisierte Integration bedeutet mehr Software Engineering “Platform engineering is the discipline of designing and building toolchains and workflows that enable self-service capabilities for software engineering organizations in the cloud-native era. Platform engineers provide an integrated product most often referred to as an “Internal Developer Platform” covering the operational necessities of the entire lifecycle of an application.” Humanitec
  • 12.
  • 13.
    13 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
  • 14.
  • 15.
  • 16.
  • 17.
    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
  • 18.
  • 19.
  • 20.
  • 21.
    Developer UX ■ UserGuide ■ Subtemplates, Modules, Blueprints für goldene Pfade 21 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 }
  • 22.
    Developer UX ■ UserGuide ■ Subtemplates, Modules, Blueprints für goldene Pfade ■ Skaffolding für typische Use-Cases 22
  • 23.
    Developer UX ■ UserGuide ■ Subtemplates, Modules, Blueprints für goldene Pfade ■ Skaffolding für typische Use-Cases ■ Tools für Observability, Debugging… 23
  • 24.
    Developer UX ■ UserGuide ■ Subtemplates, Modules, Blueprints für goldene Pfade ■ Skaffolding für typische Use-Cases ■ Tools für Observability, Debugging… ■ Support ■ Voll integriert 24
  • 25.
  • 26.
    26 QAware Trailmix ● abschalten voncompliance 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
  • 27.
  • 28.
    28 QAware “Platforms reduce cognitiveload 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
  • 29.
    29 QAware Inner Source ● AllerCode ist intern offen ● jede Instanz einer IDP ist offen ● Referenz IDP ist offen ○ Issue Tracker ○ Roadmap ○ PRs welcome ● Community Events Neue Features, Austausch…
  • 30.
  • 31.
    31 QAware Self-Service Der Lebenszyklus einerIDP 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
  • 32.
  • 33.
    33 QAware IDPs versionieren wieSoftware ● 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
  • 34.
  • 35.
  • 36.
  • 37.
    37 (Platform Engineers) User-centered ✅ Self-service✅ Decentralized ✅ Versioned ✅ Customizable ✅ AWS Proton: Developer Platform as a Service Transparent ✅
  • 38.
  • 39.
  • 40.
    40 QAware CNCF/K8s Orchestrator fürIDP CNCF Bausteine Git + +
  • 41.
    41 QAware Capability Tool/Methode k8s/CNCFTool/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/
  • 42.
    42 QAware Capability Tool/Methode k8s/CNCFTool/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
  • 43.
    Wie baut ihrPlattformen?
  • 44.
    qaware.de QAware GmbH Mainz Rheinstraße4 C 55116 Mainz Tel. +49 6131 21569-0 info@qaware.de twitter.com/qaware linkedin.com/company/qaware-gmbh xing.com/companies/qawaregmbh slideshare.net/qaware github.com/qaware