Microservices sind ein großer Trend. Aber sie verhindern Geschwindigkeit, ist Benedikt Stemmildt, CIO bei Blume2000, überzeugt. Deshalb wird dort etwas völlig Entgegengesetztes gemacht: Man setzt auf die komplette Trennung der Fachlichkeit, Organisation – und schließlich auch der Technik. Wie das funktionieren kann? Das beschreibt er in seinem Vortrag „Geschwindigkeit ohne Microservices: Wie man mit guten alten HTML-Seiten und Makrodiensten vorankommt“, den er auf der Digitale Leute Summit 2021 gehalten hat.
→ Hier findest du die komplette Aufzeichnung seines Talks
- In diesem Text lernt ihr
- Wie Microservices die Architektur bei Blume2000 beherrschten
- Wie bei Blume2000 die Neuorganisation angegangen wurde
- Was die Aufteilung in Fachlichkeit bedeutet
- Wie sich das konkret auf die gesamte Webarchitektur bei Blume2000 auswirkt
Die Ausgangssituation bei Blume2000
Die ursprüngliche Architektur bei Blume2000 kommentiert Benedikt mit den Worten: „Da muss man aufräumen.“ So sind in der Vergangenheit eine Reihe von Microservices entstanden, mit einer sehr typischen technischen Situation:
- Auslieferungsmechanismus: Anstelle Code-Schnittstellen zwischen dem Monolithen und den Microservices zu erzeugen, ist hier das Zusammenspiel auf http-Ebene erfolgt. „Da ist es dann noch viel schwieriger, Fehlerbehandlungen zu machen und irgendwelche Standards zu etablieren“, so Benedikt. Dadurch wurde Geschwindigkeit reduziert.
- Datenbank: Auf der Datenbankebene teilen sich die Microservices dann alle eine Datenbank: „Häufig ist es sogar so, dass zwei oder drei Services in die gleiche Tabelle schreiben“, so Benedikt. „Wenn man das falsche Insert-Statement macht, stirbt die Datenbank auch einfach, weil dann Rekursionen in der Datenbank entstehen.“
- Frontend: Hier wurde eine Single-Page-Appication (SPA) verwendet. Und dabei sei massiv unterschätzt worden, wie umfangreich dieser Frontend-Monolith sich gestaltet. „Er ist eigentlich viel aufwändiger, als das Backend“, so Benedikt.
Auch die Organisation folgt der Organisationsstruktur der technischen Seite, „es war schön getrennt“, so Benedikt:
- Frontend-Team ist zuständig für den Monolithen,
- Backend-Team kümmert sich um Microservices und die Datenbank.
Immer, wenn im Backend ein Feature gebaut wurde, musste das ins Frontend synchronisiert werden. „Das Frondend-Team hatte aber leider gerade zu tun“, so Benedikt. „Dann haben die Backend-Leute trotzdem schon mal angefangen.“ Diese Arbeitsaufteilung führe zu nichts, „der Kunde sieht eigentlich nie irgendwas.“
Daraus resultieren eine Vielzahl von Problemen. Als Beispiel nennt Benedikt die Mehrwertsteueränderung zu Corona-Zeiten. Damals mussten relativ schnell die Mehrwertsteuersätze angepasst werden. Und bei Blume2000 ergab sich das Problem, dass davon 17 der 20 Microservices betroffen waren. Eine schnelle Anpassung wird so sehr schwierig.
Überlegungen zur Umorganisation
Benedikts Ziel war es nun natürlich, hier schneller und besser zu werden. Aber: Es sei nicht so einfach, eine gute Architektur zu bauen, so Benedikt. Ein Grundproblem: Viele würden zunächst an die Technologie denken, wenn sie über Architektur sprechen würden. Benedikt schlägt einen anderen Weg vor: „Wir sollten uns zunächst die Fachlichkeit und Organisation anschauen.“ Darauf aufbauend sollten dann die passenden Technologien ausgewählt werden.
Buchtipp: Nicole Forsgren, Jez Humble, Gene Kim: „Accelerate: The Science Behind Devops: Building and Scaling High Performing Technology Organizations“, 2018
In Unternehmen sei es generell immer schwierig, den Nutzen von technologischen Anpassungen aufzuzeigen, so Benedikt. Denn natürlich sind das oft recht abstrakte Überlegungen. Das Problem: Häufig versuche man dann vor allem Kosten zu reduzieren, effizienter zu werden, eben, weil das greifbarer ist. „Das ist aber eine ganz fatale Falle: Häufig ist Effizienz das Gegenteil von Geschwindigkeit.“
Anhand des Buches von Nicole Forsgren zeigt Benedikt auf, welche Bestandteile einer Organisation Auswirkungen auf Performance haben können. Eine generelle Erkenntnis: „Das Thema Leadership sollte man nicht unterschätzen“, so Benedikt. Denn das ist der Ausgangspunkt auch für letztendlich technische Fragestellungen. „Wenn der Chef nicht hinter der Vision steht, dann klappt das alles nicht“, so Benedikt.
Wie die Umsetzung dann konkret konzipiert wird
Bei der konkreten Umsetzung des Konzepts wählt Benedikt einen radikalen Weg: „Man kann eine solche Veränderung nur mit einem Big Bang umsetzen“, ist Benedikt überzeugt. Das sei eine unschöne Situation. „Denn hier geht es vor allem auch darum, eine Kultur zu verändern.“ Während viele Frameworks hier eine behutsame Anpassung der Kultur vorschlagen, glaubt Benedikt – basierend auf dem Buch von L. David Marquet – nicht daran.
Buchtipp: L. David Marquet: „Leadership Is Language: The Hidden Power of What You Say and What You Don’t“, 2020
Ein Tipp aus dem Buch „Leadership Is Language“: „Man bekommt eine neue Kultur nur dann hin, wenn man sie auch ein bisschen erzwingt, also bestimmte Verhaltensweisen auch vorgibt“, so Benedikt. Denn eine Kultur komme nicht alleine davon, dass man sie sich nur wünsche.
Die Etablierung einer neuen Fachlichkeit
Wie schon beschrieben: „Wir fangen mit der Fachlichkeit an und leiten alles andere daraus ab“, so Benedikt. Konkret gestaltete sich das bei Blume2000 so, dass man auf die Customer Journey geschaut hat. Und davon wurden dann drei Fachlichkeiten abgeleitet:
- Erkunden, unter anderem mit den Funktionen Login, Suche und Tracking.
- Entscheiden, unter anderem mit den Produktdetailseiten, dem Warenkorb und den Stammdaten.
- Erfüllen, unter anderem mit den Funktionen Check-Out, Rechnung und Versand.
„Jemand, der sich um den Warenkorb kümmert, interessiert nicht, wie der Artikel dort hineingekommen ist“, begründet das Benedikt anhand eines Beispiels. „Die Idee dahinter ist, dass auch immer ein Product Owner eine Fachlichkeit übernimmt.“ Ein schöner Nebeneffekt: Dadurch, dass man sich so gleich an der Kundensicht orientiert habe, seien auch passende KPI entstanden. Und: Bisher wurde überhaupt noch nicht über Menschen oder Technik gesprochen, sondern darüber, was produktseitig zusammengehöre, so Benedikt.
Zweiter Schritt: Schlussfolgerungen für die Teams
Organisatorische Fragestellungen wurden daraus abgeleitet. Ein Punkt war Benedikt dabei besonders wichtig: Die alte Situation, in der Frontend- und Backend-Teams auf zwei Seiten standen, sollte aufgelöst werden. Man habe sich deshalb für interdisziplinäre Teams entschieden, „die einer Fachlichkeit zugeordnet sind.“ Sehr wichtig sei an dieser Stelle auch, den Stakeholder mit in dieses Team zu integrieren. „Das ist ein schwieriger Schritt, den viele Unternehmen nicht schaffen.“
Konkret: Von den früheren Rollen wurde die Arbeit nun in Fullstack-Rollen umorganisiert. „Das klingt einfach“, so Benedikt. „Aber es geht dabei um Menschen, die sich auch verändern müssen.“ Es sei dabei hilfreich, wenn die Mitarbeiter mehrere Fähigkeiten besitzen. Aber: „Es geht nicht darum, dass alle alles können müssen“, so Benedikt. „Sondern es geht mehr darum, dass sich die Mitarbeiter mit allem beschäftigen und auch Interesse daran haben.“
Modern Agile als methodische Vorgehensweise
Als theoretische Grundlage für solche Überlegungen zitiert Benedikt das Modern Agile Framework. Das wird anhand von vier Bereichen festgemacht:
- Menschen großartig machen
- Sicherheit zur Voraussetzung machen
- Schnelles Experimentieren und Lernen
- Kontinuierlich Werte schaffen
Auf der Modern-Agile-Website beschreibt das Framework den Ansatz dahinter so: „Agilität wird modernisiert. Dank der Pioniere und Praktiker von Lean und Agile haben wir jetzt einfachere, sicherere und schnellere Wege, um großartige Ergebnisse zu erzielen. Wir nennen diese neuen Ansätze „Modern Agile“, weil sie sich weit über die frühen agilen Methoden hinaus entwickelt haben.“
Eine sehr konkrete Schlussfolgerung für die Art, wie die Teams bei Blume2000 nun zusammenarbeiten, ist das Mobprogramming: Dabei sitzt das Team gemeinsam am Computer und diskutiert über Schritte, die programmiert werden müssen. Die Tastatur wird herumgereicht.
Buchtipp: Simon Harrer, Jochen Christ, Martin Huber: „Remote Mob Programming: At home, but not alone“, 2020
Letzter Schritt: Blick auf die Technik
Erst ganz am Ende wird nun die IT-Architektur entsprechend der neuen Fachlichkeit und Organisation umstrukturiert. Benedikts erklärtes Ziel: „Hier wollen wir Unabhängigkeit schaffen.“ Genauso, wie die Fachlichkeiten entkoppelt sind, soll sich das auch in der Architektur widerspiegeln. Das ist das exakte Gegenteil von Microservices mit synchroner Organisation, die, so ist Benedikt überzeugt, letztendlich zu komplexen und unübersichtlichen Gebilden führen und somit zu Geschwindigkeitsverlust.
Die Unabhängigkeit muss aber sehr konsequent eingehalten werden. Das führt zum Beispiel dazu, dass jeder Fachlichkeit eine eigene UI und Datenhaltung zugewiesen wird. Man wolle hier Services erstellen, die vollwertig einen Anwendungsfall abbilden. Das ist nicht unbedingt einfach – und es ergeben sich hier auch zwei konkrete kritische Fragestellungen, so Benedikt:
- Backend-Integration
- Frontend-Integration
Bei Blume2000 wurde natürlich viel darüber nachgedacht, wie nun das Frontend organisiert werden soll. Die Lösung: mit einfachem HTML. Dabei werde die Regel verwirklicht, dass man keinen synchronen Call auf die Bereiche eines anderen Teams zulasse. „Es gibt also in der gesamten Architektur keinen API-Call“, so Benedikt.
Stattdessen werden die Inhalte im Frontend der komplett getrennten Bereiche „Erkunden“, „Entscheiden“ und „Erfüllen“ ganz einfach über einen Link miteinander verbunden, sie haben einfach unterschiedliche Linkadressen.
Aber was geschieht, wenn ein Teil eines anderen Bereichs im Frontend benötigt wird? Als Beispiel nennt Benedikt eine Produktübersichtsseite, die zu „Entscheiden“ gehört. Aber da könnten dann auch Hinweise auf Produkte eingebaut sein, die zusätzlich interessant für den Kunden sein könnten – aber eher zum Team „Erkunden“ gehören.
Das werde dann mit Server Side Includes (SSI) oder Ajax realisiert, so Benedikt. Eine intelligente Lösung, denn wie konkret der Schnipsel-Code aussieht, der so transferiert wird, ist völlig egal. Das Team „Entscheiden“ muss sich nicht weiter darum kümmern.
Ein anderer Punkt sind die sehr beliebten Code-Libraries. Auch diese werden einfach – weitestgehend – nicht mehr teamübergreifend verwendet. Dass alle beteiligten Teams daran gearbeitet hatten, hatte ohnehin in der Vergangenheit viele Nachteile: „Die Gefahr ist dann, dass bei einer Veränderung die ganze Plattform zusammenbricht“, so Benedikt. Seine Lösung: „Wir teilen einfach gar nichts.“ Weder Code, noch Leute, noch Datenbanken.
Natürlich dürften Dinge aber kopiert werden. „In 98 Prozent der Fälle ist das viel schlauer, als das in eine Library auszulagern.“
Als letzte Ebene stellt sich die Frage, wie mit den Daten umgegangen wird. Die Lösung: Es gibt eine asynchrone Datenreplikation. Sprich: Die Daten werden einfach kopiert. Denn natürlich gebe es Anwendungsfälle, bei denen unterschiedliche Bereiche die gleichen Daten benötigen. „Allerdings replizieren sich die einzelnen Teams nicht alle Daten, sondern nur die Attribute, die für sie interessant sind.“ Und nicht nur das: Sie kopieren sie zusätzlich auch in eine Datenstruktur, die für das Team am besten passt. Diese Synchronisierung lässt sich einfach mit einem CronJob oder Event-basiert realisieren.
„Geschwindigkeit erreicht man, indem man von der Fachlichkeit kommt, in die Organisation geht und dann in die Technik“, fasst Benedikt zusammen. Und dabei sollte immer der Fokus auf der Unabhängigkeit liegen. „Ich werde dadurch echt schnell, weil sich die Teams auch nicht mehr absprechen müssen.“
Product Jobs
Auf dem Digitale Leute Summit 2021 in Köln sprach Benedikt Stemmildt über die Umorganisation der gesamten Webarchitektur von Blume2000 und deren zugrundeliegenden generellen Frameworks und Philosophien.
Über Benedikt Stemmildt: Benedikt (@slashbene) ist CIO bei Blume 2000. Er beschäftigt sich sehr stark mit Softwarearchitektur mit einem Fokus auf Kundennutzen, gibt sein Wissen auch als Trainer weiter. Vor seiner Anstellung bei Blume2000 war er bei Breuninger und Otto.de tätig.
Autor: Jörg Stroisch