Monolithische Systeme vs. Microservices: ein Leitfaden zur Anwendungsarchitektur
Unternehmen nutzen eine Vielzahl von SaaS-Anwendungen – laut SaaS Trends Report 2020 von Blissfully sind in durchschnittlichen Unternehmen 137 im Einsatz. Diese Anwendungen erzeugen Terabytes an Daten. Oft können die Daten in mehreren Plattformen miteinander zusammenhängen, z. B. eine Adresse auf einer Kreditkarte, die für einen E-Commerce-Einkauf verwendet wird, die auch als Adresse für eine Versandplattform nützlich ist – und die E-Commerce-Transaktion selbst kann von der Analyseplattform eines Unternehmens nachverfolgt werden.
Bei der Einführung von Technologie-Stacks haben Unternehmen zwei Optionen: Sie können eine einzige Plattform bereitstellen, die viele Funktionen umfasst, oder einen Best-of-Bread-Ansatz wählen, bei dem Mikrosysteme eingesetzt werden, um eigenständige Dienste verschiedener Anbieter zu integrieren. Worin bestehen die Vor- und Nachteile der beiden Ansätze?
Was ist eine monolithische Architektur?
Monolithische Anwendungen werden entwickelt, um mehrere zusammenhängende Aufgaben zu bearbeiten. Es handelt sich in der Regel um komplexe Anwendungen, die mehrere eng gekoppelte Funktionen umfassen.
Denken Sie z. B. an eine monolithische SaaS-Anwendung für E-Commerce. Sie könnten einen Webserver, ein Lastenausgleich, einen Katalogdienst, der Produktbilder bereitstellt, ein Bestellsystem, eine Zahlungsfunktion und eine Versandkomponente umfassen.
Wie Sie sich vorstellen können, haben monolithische Tools angesichts ihres großen Funktionsumfangs tendenziell riesige Codebasen. Eine kleine Änderung an einer einzelnen Funktion kann das Kompilieren und Testen der gesamten Plattform erfordern, was mit dem von heutigen Entwicklern bevorzugten agilen Ansatz kollidiert.
Was sind Microservices?
Im Gegensatz zum monolithischen Ansatz beinhaltet eine Microservices-Architektur kleinere Anwendungen, die unabhängig voneinander als lose gekoppelte Dienste bereitgestellt werden und durch die Anwendungsintegration miteinander verbunden sind. Bei Nutzung von Microservice-Anwendungen kann die Geschäftslogik mehrere Plattformen umfassen, darunter Software-as-a-Service, On-Premises-Datenbanken und intern entwickelte Anwendungen, die Anforderungen erfüllen, die keine SaaS-Anwendung abdeckt.
Aus Entwicklerperspektive sind Microservices einfacher zu entwickeln. Ihr Funktionsumfang ist kleiner, weshalb sie insgesamt kleiner sind. Das erleichtert es Entwicklern, sie durch kontinuierliche Integration und kontinuierliche Bereitstellung (CI/CD) zu verbessern. Sie können in jeder Programmiersprache geschrieben werden. Und sie können über APIs mit anderen Microservices kommunizieren.
Eine Anwendungsprogrammierschnittstelle (API) ist eine Reihe von Programmieraufrufen, mit denen Entwickler auf die Funktionalität einer Anwendung zugreifen können. APIs vereinfachen die Entwicklung integrierter Anwendungen, indem sie eine einfache Möglichkeit bieten, Anmeldeinformationen und Daten zwischen Anwendungen zu übergeben.
Monolithische Systeme vs. Microservices
Welche Architektur ist also besser? Das hängt von den Bedürfnissen der jeweiligen Organisation ab. Unternehmen sollten mehrere Kriterien berücksichtigen:
- Einfache Implementierung – Man könnte meinen, dass es einfacher ist, monolithische Systeme zu implementieren, da die Software von einem einzigen Anbieter stammt. Das ist jedoch nicht immer der Fall. Da monolithische Systeme tendenziell komplex sind, kann sich die Implementierung genauso schwierig gestalten wie im Fall vieler einzelner Plattformen. Ein Vorteil, den monolithische Systeme haben können: Es gibt eine zentrale Anlaufstelle für Support – das ist allerdings nur dann ein Vorteil, wenn der Anbieter für einen guten Support bekannt ist.
- Anbieterabhängigkeit – Monolithische Systeme versuchen normalerweise, eine breite Palette an zusammenhängenden Funktionen abzudecken. Eine monolithische Webhosting-Plattform umfasst z. B. möglicherweise nicht nur einen Webserver, der HTTP-Anfragen auf der Serverseite verarbeitet, sondern auch Firewalls, Lastenausgleich und ein Content Distribution Network. Weil diese Systeme jedoch so konzipiert sind, dass sie „alles können“, funktioniert das Zusammenspiel mit anderen Systemen in der Regel nicht gut. Womit wir beim nächsten Punkt wären ...
- Besitzer der Daten und Kontrolle über die Daten – Monolithische Systeme machen es Unternehmen nicht einfach, die Daten aus ihren Systemen zu integrieren. In der Regel kann man die Daten nur innerhalb des Monolithen verwenden. Ein Beispiel: Ein monolithisches Analysesystem, das Datenintegration, ETL-Datenpipelines, ein Data-Warehouse und Analysesoftware umfasst, verfügt möglicherweise nicht über Tools, die es Unternehmen ermöglichen, auf ihre eigenen Daten zuzugreifen, um sie mit anderen Systemen zu integrieren oder Analysen mit einer anderen Software vorzunehmen.
- Return on Investment (ROI) – Es ergibt keinen Sinn, eine Anwendung einzuführen, für die kein positiver ROI zu erwarten ist. Ganz gleich, ob Sie Ihre eigenen Anwendungen entwickeln oder SaaS-Lösungen bereitstellen – Ihr Software-Entwicklerteam kann Microservices relativ schnell erstellen, sie sofort einführen und für Kunden (extern oder intern, je nach Anwendung) zur Nutzung bereitstellen. Sie können die Markteinführung beschleunigen und inkrementell einen positiven ROI für Ihre Dienste erzielen, wenn sie diese bereitstellen.
Die Branche scheint vom Monolithen auf Microservice umzusteigen, weil es schwierig ist, in einer einzigen Plattform alle Funktionen zu bündeln, die Unternehmen brauchen und möchten und die so funktionieren, dass sie zu ihren geschäftlichen Prozessen passen. Die meisten Unternehmen haben insgesamt bessere Erfahrungen damit gemacht, für die einzelnen Anforderungen jeweils die beste oder am besten geeignete Lösung bereitzustellen und die einzelnen Lösungen dann mithilfe der Anwendungsintegration miteinander zu verbinden.
Talend kennt sich mit Anwendungsintegration umfassend aus. Unsere Software kann Ihrem Unternehmen helfen, als Teil einer ereignisgesteuerten Architektur Punkt-zu-Punkt-SaaS-Integrationen zu implementieren und skalierbare modulare APIs zu bauen. Erfahren Sie mehr darüber, wie Talend Sie bei der Anwendungsintegration unterstützen kann.