Was ist eine monolithische Anwendung?

Eine monolithische Anwendung kombiniert die Benutzeroberflächen- und Datenzugriffsebenen für mehrere Funktionen in einer Anwendung. Normalerweise besteht eine monolithische Anwendung aus einer einzigen Codebasis, die von mehreren Teams innerhalb einer Organisation geändert und als einzelne Einheit bereitgestellt wird, die alle von diesen Teams verwalteten Funktionen enthält.

Dank der engen Integration ihrer Komponenten lassen sich monolithische Anwendungen häufig einfacher entwickeln und bereitstellen. Mit zunehmendem Umfang und Leistungsanforderungen der Anwendung kann es jedoch schwierig werden, einen Monolithen zu warten und zu skalieren.

Beispiele für monolithische Anwendungsarchitekturen

Monolithische Systeme können für kleinere, weniger komplexe Anwendungen geeignet sein, die nicht schnell skaliert werden müssen oder regelmäßig gewartet werden müssen. Nachfolgend finden Sie einige Beispiele für Anwendungen, die üblicherweise auf monolithischen Grundlagen basieren (deren neuere Funktionen jedoch möglicherweise auf einer stärker containerisierten Infrastruktur beruhen).

  • E-Commerce-Plattformen – Monolithische Anwendungen sind im E-Commerce weit verbreitet, da nach der Einrichtung der Infrastruktur (Aufbau des Online-Shops, Auftragsabwicklung, Zahlungsabwicklung und Kundendienst) nur noch wenige Aktualisierungen der Architektur erforderlich sind.
  • Content-Management-Systeme (CMS) – Dieser Glossareintrag wurde durch eine monolithische Anwendung (WordPress) ermöglicht. CMS-Anwendungen enthalten bei Einsatz alle für die Inhaltsverwaltung in Form von Webseiten erforderlichen Funktionen.
  • Banksysteme – Viele Finanzsysteme werden als monolithische Anwendungen aufgebaut, da die Einstiegspunkte begrenzt sind und sie dadurch sicherer sind. Darüber hinaus enthält die Codebasis nach der Bereitstellung alle Funktionen, die ein Verbraucher von einem Online-Banking-Erlebnis erwartet: Verwaltung von Finanztransaktionen, Zahlungsabwicklung und Nachverfolgung.
Vorteile einer monolithischen Architektur

Obwohl einige Aspekte monolithischer Architekturen veraltet sind, erfüllen sie immer noch viele Zwecke und haben positive Eigenschaften.

Zu den Vorteilen von Monolithen gehören:

  • Einfachheit – Aufgrund der zentralisierten Architektur sind Monolithen im Vergleich zu komplexeren Architekturen, wie etwa Microservices-Architekturen, einfacher zu entwickeln, bereitzustellen und zu warten.
  • Schnelleres Testen – Durch die Integration aller Komponenten in ein Programm kann eine monolithische Anwendung schnell als Ganzes getestet werden. Anders als bei Architekturen, die aus mehreren kleineren Komponenten bestehen (z. B. Microservices ), gibt es weder zusätzliche Tests für komplexe Kommunikationsprotokolle noch mehrere Code-Repositories.
  • Sicherheit – Da es für böswillige Akteure weniger Angriffspunkte gibt, sind Monolithen im Allgemeinen leichter zu sichern. Außerdem ist es einfacher, Sicherheitsprotokolle für eine Anwendung durchzusetzen, als mehrere Sicherheitskonfigurationen zu verwalten.
  • Kosten: Da Monolithen als einzelne Einheit eingesetzt werden, entfallen die zusätzlichen Kosten, die mit der Bereitstellung und Sicherung zusätzlicher Kommunikationsprotokolle, dem Aufbau einer stärkeren Verbindungsinfrastruktur und der Einstellung von Mitarbeitern mit spezielleren Fähigkeiten und einer umfassenderen Ausbildung verbunden sind.
Nachteile einer monolithischen Architektur

Die einzigartige Natur von Monolithen hat zwar ihre Vorteile, kann aber auch zu Problemen führen.

Zu den Nachteilen von Monolithen gehören:

  • Zunehmende Komplexität – Im Laufe der Zeit kann das Wachstum einer Anwendung und die hinzugefügte Funktionalität dazu führen, dass eine monolithische Architektur größer und komplexer wird. Durch diese Ausbreitung erhöht sich das Risiko, dass ein Update die einzige Codebasis, die den reibungslosen Betrieb des gesamten Programms gewährleistet, beeinträchtigt.
  • Mangelnde Skalierbarkeit – Wenn eine Funktion oder ein Bereich der Anwendung horizontal skaliert werden muss, muss die gesamte große Anwendung (einschließlich Subsysteme, die keine zusätzlichen Ressourcen benötigen) skaliert werden. Dies kann sowohl zu einer langsameren Skalierung führen, da die Bereitstellungen länger dauern, als auch zu höheren Kosten, da für die Ausführung jeder Instanz im Vergleich zu Microservices höhere Hardwareanforderungen gelten.
  • Ausfallsicherheit – In einer monolithischen Architektur sind alle Anwendungskomponenten eng miteinander verknüpft und werden von einer zentralen Codebasis aus ausgeführt. Wenn also einer ausfällt, kann dies zum Ausfall der gesamten Anwendung führen.
  • Vollständige Neubereitstellung – Bei einer einzelnen Codebasis, die die gesamte Anwendung darstellt, ist bei einem Monolithen eine vollständige Neubereitstellung erforderlich, wenn eine einzelne Komponente geändert oder aktualisiert wird.
  • Technologie-Stack – Da Entwickler sicherstellen müssen, dass alle von ihnen verwendeten Tools oder Sprachen in den Monolithen passen, ist die Auswahl eingeschränkt. Darüber hinaus sind viele monolithische Anwendungen auf eine Weise geschrieben, die nicht vollständig mit neueren, effizienteren Technologien wie Cloud Computing und Containerisierung kompatibel ist.
  • Langsamere Entwicklung – Wenn mehrere Entwicklungsteams an einer großen Codebasis arbeiten, ist äußerste Sorgfalt erforderlich, um sicherzustellen, dass Schnittstellen und Domänengrenzen respektiert und eingehalten werden. Manchmal kann Code zu komplexen Kopplungen führen, wodurch teamübergreifende Abhängigkeiten die Entwicklung neuer Funktionen oder die Behebung kritischer Probleme verlangsamen.
Was ist eine Microservices-Architektur?

Im Gegensatz zur monolithischen Architektur gibt es die Microservices -Architektur. Microservices ist ein Ansatz zur Softwarearchitektur, der aus kleinen Komponenten eine große, komplexe Anwendung erstellt. Diese Komponenten können jeweils eine einzelne Funktion ausführen (z. B. Authentifizierung, Benachrichtigung oder Zahlungsabwicklung) oder als Pakete innerhalb eines Monolithen arbeiten. „Microservices“ (oder einfach „Dienste“) ist auch die Bezeichnung für die kleinen Komponenten selbst.

Während monolithische Apps eng gekoppelt sind (was bedeutet, dass ihre Komponenten miteinander verbunden sind), ist eine Microservices-App verteilt (was bedeutet, dass ihre Komponenten unabhängig voneinander agieren können). Da Anwendungen immer größer und komplexer werden, prüfen viele Unternehmen, ob sie von Monolithen weg migrieren oder neue Apps in ein Microservices-Format integrieren können.

NGINX ist stolz darauf, die folgenden kostenlosen Bildungsressourcen für diejenigen anbieten zu können, die monolithische und Mikrodienste erkunden