Digitalisierung & Technologie
Was ist ein Monolith (Software)?
Ein Monolith ist eine Anwendung, die als ein einziges großes System gebaut ist. Einfacher zu starten als Microservices, wird aber bei wachsender Komplexität schwer wartbar.
Ein Monolith ist eine Softwareanwendung, die als ein einziges, unteilbares System gebaut ist. Alle Funktionen, Nutzerverwaltung, Bestellverarbeitung, Zahlungsabwicklung, Reporting, sind Teil desselben Codes und laufen in derselben Laufzeitumgebung. Das Gegenteil ist eine Microservice-Architektur, bei der diese Funktionen in separate, unabhängige Dienste aufgeteilt sind.
Der Begriff Monolith klingt nach veralteter Technologie. Das ist er nicht.
Wann ein Monolith die richtige Wahl ist
Für die meisten kleineren und mittleren Projekte ist ein Monolith die bessere Architekturentscheidung. Er ist einfacher zu entwickeln, weil alle Teile der Anwendung im selben Codekontext leben. Debugging ist einfacher, weil keine Netzwerkaufrufe zwischen Services zu durchleuchten sind. Das Deployment ist einfacher, weil nur ein Artefakt deployt werden muss. Die Betriebskosten sind niedriger.
Viele erfolgreiche Produkte mit Millionen von Nutzern laufen auf Monolithen. Shopify war lange ein Rails-Monolith und hatte damit keine wesentlichen Probleme. Stack Overflow läuft auf einem Monolith.
Wann der Monolith zum Problem wird
Probleme entstehen, wenn das Team sehr groß wird. Ab einer bestimmten Teamgröße blockieren sich Entwickler gegenseitig: Wer eine Änderung am Zahlungsmodul macht, muss warten bis andere Änderungen am Bestellmodul eingespielt sind. Deployments werden zur Koordinationsaufgabe.
Außerdem wird die Codebase bei wachsendem Umfang schwer zu durchschauen. Was anfangs übersichtlich war, entwickelt sich nach Jahren zu einem Geflecht aus Abhängigkeiten, das nur noch wenige Entwickler wirklich verstehen. Das nennt sich Big Ball of Mud.
Die Lösung ist nicht zwingend eine vollständige Aufteilung in Microservices. Ein gut strukturierter Monolith mit klaren internen Modulen, auch Modular Monolith genannt, ist oft der pragmatischste Weg.
Wenn du eine Softwarelösung planst und die richtige Architektur wählen willst, beraten wir dich konkret anhand deiner Anforderungen und deines Teams. Buche einen kostenlosen Termin.
Lass uns herausfinden, was bei dir möglich ist.
Kostenlos, unverbindlich, ohne Verkaufsdruck. Wir schauen uns gemeinsam an, wo du stehst, was dich bremst und was die nächsten sinnvollen Schritte wären.