In der letzten Lektion haben Sie Ihre Entscheidung „Module statt Microservices“ mit Zahlen erneuert: Programme, Pipelines, Netzaufrufe in den wichtigsten Abläufen, die Zeit eines Aufrufs und die Zahl der Personen. Sie blieb. Diese Lektion stellt die Frage anders herum. Nicht „warum keine Microservices?“, sondern: Was müsste geschehen, damit ein eigener Dienst sich lohnt? Und für jedes Modul der Kladde einzeln. Die Antwort steht am Ende als Tabelle in docs/, und in Modul 4.12 zieht der erste Kandidat daraus wirklich in einen eigenen Dienst.

Vier frühere Lektionen tragen diese hier. Lektion 4.1.1 hat Architektur als die Entscheidungen beschrieben, die sich schwer rückgängig machen lassen. Lektion 4.2.5 hat Conways Gesetz und das umgekehrte Conway-Manöver eingeführt. Lektion 4.3.6 hat die Kladde als modularen Monolithen gebaut und gesagt, dass der Weg in einen Dienst offen bleibt, solange Module sich nur über Verträge kennen. Und Modul 4.6 hat gezeigt, dass eine Nachricht mindestens einmal kommt, dass eine Outbox sie sicher hinausbringt und dass ein Empfänger Doppelte erkennen muss.

Ein Modul und ein Dienst haben dieselben Grenzen

Zuerst, was gleich bleibt. Ein Modul der Kladde und ein Microservice teilen die Dinge, die schwer zu bekommen sind: einen Bounded Context, ein eigenes Modell, einen Vertrag nach außen, eigene Daten. Microsofts Leitfaden zu Dienstgrenzen beginnt deshalb genau dort, wo Sie in Modul 4.2 angefangen haben: Ein Dienst soll nicht mehr als einen Bounded Context umfassen, und Aggregate sind gute Kandidaten für die Grenze.

Der Unterschied liegt in der Art, wie die Grenze durchgesetzt wird:

Modul Dienst
Grenze durchgesetzt von Compiler und Architekturtest Prozess und Netz
ein Aufruf über die Grenze Methodenaufruf oder Ereignis im Prozess HTTP, gRPC oder Nachricht
ausgeliefert mit allen anderen für sich
skaliert mit allen anderen für sich
fällt aus mit allen anderen für sich, wenn die anderen darauf vorbereitet sind

Die letzten drei Zeilen sind der Gewinn eines Dienstes. Die zweite ist sein Preis. Um diesen Preis geht es zuerst.