Modernisierung
von langsamer Legacy zur Cloud Native Organization
Cloud Native
68% der Unternehmen haben damit begonnen, eine Cloud Native Infrastruktur aufzubauen.
– O'Reilly 2019
Faktor 10
schnellere Entwicklung
Faktor 100
geringere Infrastruktur-Kosten
Programmiersprachen
- jeder Service kann in der Sprache implementiert werden, welche am besten zum Problem passt
- Golang für schnelle, hoch skalierbare Services
- Python für Data Services und Machine Learning
- PHP oder TypeScript für CMS
- Ruby on Rails für REST-APIs
- Stichwort: "Polyglotte Micro Services"
- kleine Services als Lambda Funktionen
"Marketing hat ein Ticket eingestellt, nächste Woche kommt die Fernsehwerbung. Wir brauchen 20 neue Server."
"Ich habe sie gerade bei Dell bestellt, in
zwei Monaten sind sie da."
Elastizität
- Lastspitzen werden automatisch durch zusätzliche Ressourcen abgefangen
- Workload verteilt sich auf mehrere Service-Instanzen
- Load Balancing auf System Level und Auto-Scaler für Hosts und Services
- Down Time minimieren
- Kostenfaktor: es nur läuft soviel, wie tatsächlich gebraucht wird #scale2zero
Infrastruktur Services
- fertige Lösungen für Szenarien, die in den meisten Software Systemen enthalten sind
- Authentifizierung
- Role Model / Permissions
- Encryption as a Service
- Datenbanken / Storage
- Message & Event Bus
- Service Mesh & Discovery
- Ingress / Egress
Automatisierung
- On-premise Applications häufig manuell gewartet und langsam
- Cloud Native
- Application Management per Scripting und Infrastruktur automatisiert
- schnelleres Deployment
- höhere Zuverlässigkeit
- klare Abläufe und Prozesse
Container Orchestrierung
Kubernetes Cluster
- Laufzeitumgebung für Software Komponenten, deployed in Docker Containern:
- Application
- Cloud Native Services
- Infrastruktur
Kubernetes Cluster
- Umfangreiche API
- Standard Tooling
- Sehr hohe Flexibilität
- Support für Scripting und Automatisierung
- Skalierung und Resilienz
- Rate Limits
- Backups / Rollbacks
- Cloud: AWS, GKE, AKS
- On Premise: Bare Metal, VMware vSphere, Rancher
Cloud-Native-Lock-Ins
-
Data Lock-in
"Die Daten und Datenstrukturen bekomme ich nicht herausgelöst."
-
Application Lock-in
"Ich kann meinen Code nicht umziehen."
-
Structural Lock-in
"Ich kann die Integration, Kommunikation und interaktion von Komponenten nicht umziehen."
Trustworthy Cloud
- Best Practice Strategien
- Zero Trust Infrastructure
- Assume Breach
- BeyondCorp
- Data Tagging
- Crypto Shredding
Cloud Native Landscape
Nachlese – State of DevOps Report 2021 (presented by puppet)
Warum Modernisierungen scheitern ...
Wartungs- und Refactoringbedarf
Neue Feature-Entwicklung
Reale
Team-Kapazität
Fehlende Innovation
& Features
Fehlende Renovierung &
Pflege
Wartungs- und Refactoringbedarf
Neue Feature-Entwicklung
Reale
Team-Kapazität
Fehlende Innovation
& Features
Fehlende Renovierung &
Pflege
Neuentwicklung
?
Opportunitische Modernisierung
Modernisierungs-spende
Alles Mist, alles neu
Frank macht's!
Frank
Langläufer
Mehrere Versionen parallele Legacy.
Aus der Originalsoftware, Modernisierung 1, Modernisierungsinitiative 2,
und den Projekten Phoenix 1-3
Modernisierungszwiebel
Migrationspfad
Migration Patterns
- Big Bang scheitert meist
- Inkrementell und Iterativ
- Frontend
- Business Logik
- Datenbank
- Plattform
Im Monolithen
Monolithic Delivery
- CoreDB und Ops als Monolith
- DBA & Ops als Engpass
- DBA & Ops als Diktator
- Alles ist abzustimmen
- Alles dauert lange
- CoreDB und Ops als Monolith
- DBA & Ops als Engpass
- DBA & Ops als Diktator
- Alles ist abzustimmen
- Alles dauert lange
- Besser wäre eine Architektur ohne Abhängigkeiten...
- ... MicroServices!
- Besser wäre eine Architektur ohne Abhängigkeiten...
- ... MicroServices!
Build-run-Teams
- Sowohl Feature als auch Component-Teams
- Volle Verantwortung für alle Features von einer Komponente
- Nur auf Basis von Micro/Mini-Service-Architekturen machbar
- Kann weitgehend autark agieren - von GUI zu Deploy
- Mit den anderen Komponenten
wird über APIs geredet.
Platform Team
- Eigenständiges Team, das sich um Auswahl, Aufbau und Konfiguration des Basissets von Werkzeugen und Praktiken, die von allen Teams genutzt werden, kümmert.
- Selbst ein Built-Run-Team für die Platform.
- Fokus ist sowohl Stabilität der Platform als auch Performance und Arbeitserleichterung für die anderen Teams
Service Delivery
Technical Consulting /
ENABLING Teams
- Cross-Cutting zu stream aligned teams
- bandwidth to research
- develop tools, methodologies etc
Enabling Teams
- sind in kontinuierlichem, regelmäßigem Kontakt zu Teams
- bei Bedarf auch Teil der Teams
- sorgen dafür, dass zukünftige Probleme rechtzeitig mit Tooling, Methoden und Ansätzen gelöst werden können
- stützen den Technology Lifecycle im Teams
- erlaubt es, neue und komplexe Technologien zu verstehen und einzusetzen
- Training, Workshops, HandsOn-Kooperation
COMPLICATED SUBSYSTEMS
COMPLICATED SUBSYSTEMS
-
Legacy-Systeme sind komplexe Subsysteme!
- Verteilen über mehrere Teams?
- Als Teilaufgabe in einem Team?
- Als Feature-Thema in einem Feature-Team?
Gesamtbild
Das Modernisierungs-
Dilemma
- Die Plattform existiert noch nicht
- es fehlt die neue Infrastruktur
- es fehlen Services und Beispiele, die sie nutzen
- Die alte Plattform muss auch weiterbetrieben werden
- Die Kollegen kennen die neuen Technologien noch nicht
Core Team
- Das erste Team für die neue Platform
- Drei Deliveries:
- die neue Platform
- Architektur und Beispiele
- Bootcamp, Onboarding & Schulung
- HandsOn-Aufbau der neuen Plattform
- Geht später in Platform-Team und BR-Teams auf.
Platform- und Built-Run-Team integriert.
MVP Platform
- Wird vom Core Team gebaut
- Sobald es von anderen nutzbar ist können auch andere Teams darauf aufsetzen
- nach ca 2 Monaten vorhanden
- 20%-40% der finalen Plattformfeatures
- Experimente und PoC gehören dazu.
Start
Legacy Software
Core-Team
Monolith
Platform-
MVP
Erster Service
Ramp-Up
Core-Team
Platform Team
Stream Aligned
Built & Run-Team
Stream Aligned
Built & Run-Team
Stream Aligned
Built & Run-Team
Platform-
MVP
Erster
Service
Zweiter
Service
Platform Team
Stream Aligned
Built & Run-Team
Stream Aligned
Built & Run-Team
Stream Aligned
Built & Run-Team
Platform-
MVP
Erster
Service
Zweiter
Service
Platform Team
Stream Aligned
Built & Run-Team
Stream Aligned
Built & Run-Team
Stream Aligned
Built & Run-Team
Platform-
MVP
Erster
Service
Zweiter
Service
Legacy Software
Monolith
Praxis-Beispiel
https://www.cnpatterns.org/
https://teamtopologies.com/
Modernisierung und Teams
By Johann-Peter Hartmann
Modernisierung und Teams
Slides für das WueWW Agile XXL Meetup zum Thema Software-Modernisierung am 26. Oktober 2021.
- 367