Was ist eine monolithische Anwendung?
Eine monolithische Anwendung vereint die Benutzeroberfläche und die Datenzugriffsschichten für mehrere Funktionen in einer einzigen Anwendung. In der Regel besteht eine monolithische Anwendung aus einer einzigen Codebasis, die von mehreren Teams innerhalb eines Unternehmens bearbeitet und als eine Einheit bereitgestellt wird, die sämtliche von diesen Teams betreuten Funktionen enthält.
Monolithische Anwendungen lassen sich dank der engen Integration ihrer Komponenten häufig einfacher entwickeln und bereitstellen. Mit zunehmendem Funktionsumfang und steigenden Leistungsanforderungen kann die Wartung und Skalierung eines Monolithen jedoch immer schwieriger werden.
Beispiele für monolithische Anwendungsarchitekturen
Monolithische Systeme können sich gut für kleinere, weniger komplexe Anwendungen eignen, die weder schnell skaliert noch regelmäßig gewartet werden müssen. Im Folgenden finden Sie einige Beispiele für Anwendungen, die häufig auf einer monolithischen Basis beruhen (auch wenn ihre neueren Funktionen möglicherweise auf einer stärker containerisierten Infrastruktur basieren).
- E-Commerce-Plattformen – Monolithische Anwendungen sind im E-Commerce weit verbreitet, da nach der Einrichtung der Infrastruktur (Aufbau des Onlineshops, Bestellabwicklung, Zahlungsabwicklung und Kundenservice) nur sehr wenige Aktualisierungen an der Architektur erforderlich sind.
- Content-Management-Systeme (CMS) – Dieser Glossareintrag wurde mithilfe einer monolithischen Anwendung (WordPress) erstellt. Nach der Bereitstellung enthalten CMS-Anwendungen alle Funktionen, die für die Verwaltung von Inhalten in Form von Webseiten erforderlich sind.
- Banksysteme – Viele Finanzsysteme werden als monolithische Anwendungen entwickelt, da die begrenzte Anzahl an Zugangspunkten für mehr Sicherheit sorgt. Darüber hinaus enthält die Codebasis nach der Bereitstellung sämtliche Funktionen, die Verbraucher von einem Online-Banking-Angebot erwarten: die Verwaltung von Finanztransaktionen, die Zahlungsabwicklung und die Nachverfolgung.
Vorteile einer monolithischen Architektur
Auch wenn einige Aspekte monolithischer Architekturen inzwischen überholt sind, gibt es nach wie vor viele sinnvolle Einsatzmöglichkeiten und Vorteile.
Zu den Vorteilen monolithischer Architekturen gehören:
- Einfachheit – Durch ihre zentralisierte Architektur lassen sich Monolithen im Vergleich zu komplexeren Architekturen wie Microservices-Architekturen einfacher entwickeln, bereitstellen und warten.
- Schnellere Tests – Durch die Integration aller Komponenten in ein einziges Programm kann eine monolithische Anwendung schnell als Ganzes getestet werden. Anders als bei Architekturen, die aus mehreren kleineren Komponenten bestehen (z. B. Microservices), sind weder zusätzliche Tests für komplexe Kommunikationsprotokolle noch mehrere Code-Repositorys erforderlich.
- Sicherheit – Da monolithische Anwendungen weniger Angriffspunkte für böswillige Akteure bieten, lassen sie sich in der Regel leichter absichern. Zudem ist es einfacher, Sicherheitsprotokolle in einer einzigen Anwendung durchzusetzen, als mehrere Sicherheitskonfigurationen zu verwalten.
- Kosten – Da monolithische Anwendungen als eine einzige Einheit bereitgestellt werden, entfallen zusätzliche Kosten für die Bereitstellung und Absicherung weiterer Kommunikationsprotokolle, den Aufbau zusätzlicher Verbindungsinfrastruktur sowie die Einstellung von Mitarbeitenden mit spezielleren Fachkenntnissen und Schulungen.
Nachteile einer monolithischen Architektur
Der monolithische Ansatz hat zwar seine Vorteile, kann aber auch zu Problemen führen.
Zu den Nachteilen von Monolithen gehören:
- Schleichende Zunahme der Komplexität – Im Laufe der Zeit können das Wachstum einer Anwendung und zusätzliche Funktionen dazu führen, dass eine monolithische Architektur immer größer und komplexer wird. Diese Ausuferung erhöht das Risiko, dass ein Update die zentrale Codebasis beeinträchtigt, die für den reibungslosen Betrieb des gesamten Programms sorgt.
- Mangelnde Skalierbarkeit – Wenn eine Funktion oder ein Bereich der Anwendung horizontal skaliert werden muss, muss die gesamte große Anwendung (einschließlich der Subsysteme, die keine zusätzlichen Ressourcen benötigen) skaliert werden. Dies kann sowohl zu einer langsameren Skalierung führen, da Bereitstellungen länger dauern, als auch zu höheren Kosten, da jede Instanz im Vergleich zu Microservices höhere Hardwareanforderungen hat.
- Ausfallsicherheit – In einer monolithischen Architektur sind alle Anwendungskomponenten eng miteinander verknüpft und werden über eine zentrale Codebasis ausgeführt. Fällt daher eine Komponente aus, könnte die gesamte Anwendung ausfallen.
- Vollständige erneute Bereitstellung – Da eine einzige Codebasis die gesamte Anwendung abbildet, muss eine monolithische Anwendung jedes Mal vollständig neu bereitgestellt werden, wenn eine einzelne Komponente geändert oder aktualisiert wird.
- Technologie-Stack – Da Entwickler sicherstellen müssen, dass alle verwendeten Tools oder Sprachen mit dem Monolithen kompatibel sind, ist die Auswahl eingeschränkt. Zudem sind viele monolithische Anwendungen so programmiert, dass sie nicht vollständig mit neueren, effizienteren Technologien wie Cloud-Computing und Containerisierung kompatibel sind.
- Langsamere Entwicklung – Wenn mehrere Entwicklungsteams an einer großen Codebasis arbeiten, ist äußerste Sorgfalt erforderlich, um sicherzustellen, dass Schnittstellen und Domänengrenzen eingehalten und gewahrt werden. Mitunter kann Code zu komplexen Kopplungen führen, sodass 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 sind ein Ansatz für die Softwarearchitektur, bei dem eine große, komplexe Anwendung aus kleinen Komponenten aufgebaut wird. Diese Komponenten können jeweils eine einzelne Funktion übernehmen (z. B. Authentifizierung, Benachrichtigungen oder Zahlungsabwicklung) oder als Bündel innerhalb eines Monolithen eingesetzt werden. „Microservices“ (oder kurz „Services“) bezeichnet auch die kleinen Komponenten selbst.
Während monolithische Anwendungen eng gekoppelt sind (das heißt, ihre Komponenten sind miteinander verbunden), ist eine Microservices-Anwendung verteilt (das heißt, ihre Komponenten können unabhängig voneinander agieren). Da Anwendungen immer größer und komplexer werden, erwägen viele Unternehmen entweder die Abkehr von monolithischen Architekturen oder die Entwicklung neuer Anwendungen im Microservices-Format.
NGINX bietet allen, die sich mit monolithischen Architekturen und Microservices beschäftigen, mit Stolz die folgenden kostenlosen Lernressourcen an.

