Der modulare Monolith
Microservice-Disziplin ohne den verteilten Schmerz.
Die Architektur, zu der die meisten Teams vor Microservices greifen sollten: ein Deployable, sauber in Module mit erzwungenen Grenzen aufgeteilt. Warum die Wahl Monolith-vs-Microservices ein falsches Entweder-oder ist, Organisation nach Feature-Modul statt nach technischer Schicht, Grenzen mit Spring Modulith und ArchUnit erzwingen, Kommunikation zwischen Modulen über Events - und ein gut modularisierter Monolith als Startrampe, um Dienste nur bei echtem Bedarf herauszulösen.
Lektionen in dieser Stufe
- 01
Das falsche Entweder-oder
FortgeschrittenMonolith und Microservices sind nicht die einzigen Optionen - und Microservices zu früh zu wählen erkauft verteilten Schmerz für Probleme, die man nicht hat. Der verteilte Monolith, das Schlechteste aus beidem.
14 Min. - 02
Module, keine Schichten
FortgeschrittenNach Feature-/Domänenmodul (vertikale Slices) organisieren statt nach technischen Schichten (controllers/, services/, repos/) - damit eine Änderung an einem Ort lebt und Module später zu Diensten werden können.
14 Min. - 03
Grenzen erzwingen
ExperteEine Modulgrenze zählt nur, wenn sie erzwungen wird. Öffentliche Modul-APIs vs. interne Pakete - und den Build brechen, wenn ein Modul in die Interna eines anderen greift (ArchUnit, Modulith).
15 Min. - 04
Kommunikation zwischen Modulen
ExperteWie Module reden, ohne zum Knäuel zu werden: eine schmale öffentliche API für synchrone Aufrufe, Domain Events zur Entkopplung - und warum eine gemeinsame Datenbank der Grenzen-Killer ist.
15 Min. - 05
Spring Modulith
ExperteDas Framework, das Module in Spring Boot erstklassig macht: Anwendungsmodule deklarieren, Grenzen in einem Test verifizieren, Modul-Events und automatisch erzeugte Dokumentation.
15 Min. - 06
Die Startrampe zu Microservices
FortgeschrittenEin gut modularisierter Monolith ist der beste Ausgangspunkt: behalte die Module, bis Skalierung, Team oder Deployment das Herauslösen eines Dienstes rechtfertigen - dann ist die Naht bereits da.
13 Min.