Читать книгу Vom Monolithen zu Microservices - Sam Newman - Страница 20
Und der modulare Monolith
ОглавлениеAls Untermenge der Ein-Prozess-Monolithen handelt es sich beim modularen Monolithen um eine Abwandlung: Der eine Prozess besteht aus separaten Modulen, an denen jeweils unabhängig voneinander gearbeitet werden kann. Zum Deployen müssen aber alle wieder kombiniert werden (siehe Abbildung 1-7). Das Konzept, Software in Module aufzuteilen, ist nicht neu – wir werden auf seine Geschichte weiter unten in diesem Kapitel noch zu sprechen kommen.
Der modulare Monolith kann für viele Organisationen eine ausgezeichnete Wahl sein. Sind die Modulgrenzen gut definiert, wird damit ein hoher Grad an Parallelität beim Arbeiten ermöglicht, während gleichzeitig die Herausforderungen der verteilteren Microservices-Architektur durch viel einfachere Deployment-Überlegungen ersetzt werden können. Shopify ist ein gutes Beispiel einer Organisation, die diese Technik als Alternative zur Microservices-Aufteilung eingesetzt hat – und es scheint für sie sehr gut zu funktionieren.4
Abbildung 1-7: Ein modularer Monolith: Der Code innerhalb des Prozesses ist in Module aufgeteilt.
Eine der Herausforderungen eines modularen Monolithen ist, dass die Datenbank meist nicht den Grad der Zerlegung aufweist, den wir auf Codeebene vorfinden, was zu merklichen Problemen führen kann, wenn Sie den Monolithen fit für die Zukunft machen wollen. Ich habe bei manchen Teams gesehen, wie sie versuchen, die Idee des modularen Monolithen weiterzuentwickeln und die Datenbank ebenfalls entlang der Grenzen der Module aufzuteilen (siehe Abbildung 1-8). Eine solche Änderung an einem bestehenden Monolithen kann aber selbst dann herausfordernd sein, wenn Sie den Code in Ruhe lassen – viele der Muster, die wir in Kapitel 4 behandeln, können Ihnen dabei helfen, wenn Sie so etwas selbst ausprobieren wollen.
Abbildung 1-8: Ein modularer Monolith mit einer aufgeteilten Datenbank