Mehr als nur "Endlich die neue Plattform".
neue, bessere Technologien stehen zur Verfügung
auf "adopt"
https://services.google.com/fh/files/misc/state-of-devops-2021.pdf
Up to 10 times
faster development.
Up to 100 times less
infrastructure costs
Faktor 10?!
Faktor 100 ... ?!
software behalten, hardware wechseln
Extern:AWS, Azure, Google, Hetzner, Ionos
Intern: OpenStack, Vmware, ...
Reduktion des effektiven
Hardware-Bedarfs 50-90%
Reduktion des effektiven
Hardware-Bedarfs 50-90%
Was bleibt bei Self-Service übrig?
Core Domain | Der Grund, warum es die Software gibt - und warum man es selbst bauen sollte. |
Supporting Subdomain | Unterstützende Funktionen - nicht der Kern der Lösung, aber wichtig damit er funktioniert. |
Generic Subdomain | Standard-Funktionalität, die man braucht, an der man sich aber nicht unterscheidet - Login, Payment, Billing |
Core Domain | Eigener Code, flexibel, anpassbar & differenzierbar für Nutzer und Kunden. !Vendor Lock-in, !Vendor-Control |
Supporting Subdomain | Durch mehrere kleine, spezialisierte oder konfigurierbare Services ersetzbar |
Generic Subdomain | Als etablierte SAAS/API-Lösungen vielfach vorhanden. |
“reading versus writing is
well over 10 to 1.
We are constantly reading old code as part of the effort to write new code. ...[Therefore,] making it easy to read makes it easier to write.”
98% der Zeit wird mit Verstehen von existierendem Code verbracht.
Dan North
O'Reilly
Nur noch die echte Funktionalität wird implementiert.
Aber wir brauchen mehr Features.
Und die bestehenden müssen geändert werden.
Und ein paar Kundenanpassungen.
Aber wie gehe ich dabei vor?
First Law of Software Architecture
Business-Treiber ....
... als messbare Szenarien.
Trade-Offs:
Bounded Contexts für den Service-Schnitt, Aggregates & ACLs für API-Design
Die Strangler Fig
Das Strangler Fig Pattern in Front Controller / API Gateway / Fassade
Das Strangler Fig Pattern bei
einer Divide & Conquer Strategie aussen
Das Strangler Fig Pattern mit
API für Zugriff auf interne Funktionalität
Extraction mit Feature Toggle
Parallel Run als Kompabilitätscheck
Und viele mehr ...
(Ausschnitt aus unserem Miro-Workshop-Board)
Die Organisation bis hier erzeugt die Architektur, die jetzt da ist. Also drehen wir das ganze um?
Platform- und Built-Run-Team integriert.
Legacy Software
Core-Team
Monolith
Platform-
MVP
Erster Service
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
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
Wir haben zumindest schon vieles falsch gemacht und daraus gelernt :-)