Begriffsdefinition
Ein Monolith ist eine Art der Softwarearchitektur (man sagt auch Monolithische Architektur), bei der alle Komponenten einer Anwendung in einem einzigen, großen und komplexen Codeblock zusammengefasst sind. Im Gegensatz zur Microservices-Architektur, bei der eine Anwendung aus vielen kleinen, unabhängigen Diensten besteht, die miteinander kommunizieren und spezifische Aufgaben erfüllen, ist die Monolithische Architektur in der Regel weniger flexibel und skalierbar. Ein Monolith hat in der Regel eine höhere Kopplung und ist schwieriger zu testen und zu warten als eine Microservices-Architektur.
Wann ist es sinnvoll, auf einen Monolith zu setzten?
In bestimmten Situationen kann ein Monolith dennoch sinnvoll sein:
- In kleinen Projekten mit geringen Anforderungen und die Entwicklungszeit begrenzt ist, kann eine Monolithische-Architektur die einfachste und schnellste Wahl sein.
- Wenn die Anforderungen an die Skalierbarkeit gering sind und es keine erwarteten Veränderungen in der Nutzung der Anwendung gibt.
- Bei begrenzten Ressourcen, z. B. wenn es nicht möglich ist, ein Team von Experten für die Wartung und Skalierung der Anwendung zu beschäftigen.
- Oder wenn die Anwendung schnell und einfach zu testen und zu debuggen sein soll.
Vorteile
- Einfache Entwicklung, da alle Komponenten an einem Ort zusammengefasst sind.
- Einfache Verwaltung von Abhängigkeiten zwischen verschiedenen Teilen der Anwendung.
- Einfacheres Testen und Debuggen, da alle Komponenten an einem Ort sind.
Nachteile
- Es ist schwieriger, neue Funktionalitäten hinzuzufügen oder bestehende Funktionalitäten zu ändern, ohne den bestehenden Code zu beeinträchtigen und die Wartbarkeit zu erschweren.
- Da die gesamte Anwendung als Einheit skaliert werden muss, ist es schwierig, die Skalierbarkeit zu verbessern.
- Continuous Deployment und Cloud-Deployment mit einer Monolithischen Architektur umzusetzen. Continuous Deployment erfordert die Möglichkeit, Teile der Anwendung unabhängig voneinander zu deployen, was mit einem Monolith schwierig ist. Auch das Deployment in die Cloud erfordert in der Regel eine höhere Flexibilität und Skalierbarkeit, die eine Monolithische Architektur in der Regel nicht bietet.
- Ein Monolith enthält in der Regel alle Komponenten und Abhängigkeiten einer Anwendung, was bedeutet, dass es viele verschiedene Technologien, Framework und Libraries enthalten kann. Dies kann es schwierig machen, den Code zu verstehen und zu warten, insbesondere für neue Entwickler oder wenn es notwendig ist, bestimmte Teile des Codes zu ändern. Es kann auch schwierig sein, veraltete Technologien oder Libraries zu entfernen, die nicht mehr benötigt werden, was zu einem höheren technischen Schuldenberg führen kann.
Beispiele für eine Microservice-Architektur
Ein Schaltbild für eine Monolithische-Architektur könnte wie folgt aussehen:
In diesem Beispiel ist der Monolit für die Kommunikation mit den Clients und den Backend-Systemen verantwortlich. In diesem Schaltbild sind die Clients, wie zum Beispiel Web-Browser oder mobile Anwendungen, direkt mit dem Monolit verbunden. Der Monolit selbst kommuniziert auch mit Backend-Systemen wie Datenbanken oder externen Diensten, um die erforderlichen Daten und Funktionalitäten bereitzustellen. Es gibt keine separate Schicht oder Middleware für die Kommunikation, sondern alles wird innerhalb des Monoliten verarbeitet.
Einige bekannte Unternehmen, die Microservices einsetzten
- Die Amazon-e-Commerce-Plattform wurde ursprünglich als Monolith entwickelt wurde und im Laufe der Zeit in eine Microservices-Architektur migriert.
- Netflix wurde ebenfalls als Monolith entwickelt
- Die New York Times betreibt ihre Content-Management-Systeme als Monolith.
Links
- https://de.wikipedia.org/wiki/Microservices: Microservices – Wikipedia-Eintrag, der eine allgemeine Erklärung der Microservices Architektur und ihrer Konzepte bereitstellt.
- https://nextgentips.com/2022/09/18/how-does-microservice-architecture-work: Führt zu einem Artikel, der sich mit der Funktionsweise von Microservice-Architekturen beschäftigt.
- https://docs.microsoft.com/en-us/azure/architecture/microservices/: Eine Sammlung von Ressourcen von Microsoft, die sich mit der Microservice-Architektur befassen und Tipps und Best Practices für deren Einsatz.
- https://12factor.net/de/: Das „12 Factor“-Manifest ist ein Leitfaden für die Entwicklung von Microservices, der von einer Gruppe von Experten erstellt wurde. Es enthält Empfehlungen für die Architektur von Microservices und die Art und Weise, wie sie entwickelt und bereitgestellt werden sollten.
- https://www.redhat.com/de/topics/microservices/what-are-microservices: Was sind Microservices? Ein Artikel von Red Hat, welcher eine Einführung in die Microservices Architektur gibt und die Vorteile und Herausforderungen erklärt.
- https://www.ionos.de/digitalguide/websites/web-entwicklung/microservice-architecture-so-funktionieren-microservices/: Microservice-Architektur: So funktionieren Microservices. Ein Artikel von ionos, welcher die Grundlagen der Microservice-Architektur erklärt und zeigt, wie Microservices in der Praxis funktionieren.
- https://aws.amazon.com/de/microservices/ : Eine Seite auf AWS (Amazon Web Services), die sich auf die Verwendung von Microservices in der Cloud und die Tools und Dienste von AWS konzentriert, die für die Entwicklung und Bereitstellung von Microservices nützlich sind.
- https://entwickler.de/microservices/was-sind-eigentlich-microservices/ und https://entwickler.de/software-architektur/monolithische-versus-microservices-architektur-wer-hat-die-nase-vorn/: Zwei Artikel auf Entwickler.de, die sich mit Microservices und Microservice Architektur auseinandersetzen und die Vorteile und Herausforderungen beschreiben.
- https://www.atlassian.com/de/microservices/microservices-architecture und https://www.atlassian.com/de/microservices/microservices-architecture/microservices-vs-monolith: Zwei Artikel von Atlassian, die sich mit Microservices Architektur und dem Vergleich von Microservices vs Monolith Architektur beschäftigen und die Vorteile und Herausforderungen jeder Methode beschreiben.
- https://www.itwissen.info/Monolithische-Software-Architektur.html : Monolithische Softwarearchitektur erklärt auf ITWissen.info und die Herausforderungen, die sie mit sich bringt.
- https://www.computerweekly.com/de/definition/Monolithische-Architektur : Kurze Definition der monolithischen Architektur und wie sie in der Softwareentwicklung verwendet wird.
- https://www.talend.com/de/resources/monolithische-systeme/ : Ebenfalls ein Artikel, der die Herausforderungen von monolithischen Systemen beschreibt und wie man sie überwinden kann.
- https://vuestorefront.io/microservices : Microservices – Eine Einführung in die Verwendung von Microservices in der Entwicklung von Vue.js Anwendungen.
- https://www.redhat.com/de/topics/api/what-is-a-rest-api : Was ist eine REST API – Ein Artikel, der erklärt, was eine REST API ist und wie sie in der Entwicklung von Anwendungen verwendet wird.
- https://de.wikipedia.org/wiki/Middleware : Middleware – Wikipedia-Eintrag, der erklärt, was Middleware ist und wie es in der Softwareentwicklung verwendet wird.
Hallo! Deine Nutzung von Hyperlinks zu vertiefenden Ressourcen ist sehr nützlich. Könntest du mehr darüber erzählen, wie du sicherstellst, dass die verlinkten Inhalte zuverlässig und relevant sind, und ob es bestimmte Arten von Ressourcen gibt, die du bevorzugst?
Hallo!
Danke für dein Feedback, freut mich, dass dir die Hyperlinks gefallen! Aktuell habe ich noch kein automatisiertes System zur Überprüfung der Links, aber ich arbeite an einem Plugin, das genau das tun soll. Es wird regelmäßig die Erreichbarkeit und den Inhalt der verlinkten Seiten prüfen – etwa einmal pro Woche. Wenn ein Link nicht mehr erreichbar ist oder sich der Inhalt stark verändert, wird automatisch auf eine archivierte Version, z.B. von Archive.org, umgeschaltet.
So soll sichergestellt werden, dass die Links langfristig relevant bleiben.
Gruß Chris