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

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.

  • 294