Monolith (monolithische Architektur) bezeichnet in der Softwareentwicklung eine Anwendung, die als ein einziges, zusammenhängendes Programm gebaut, gestartet und bereitgestellt wird. Sämtliche Funktionen — Oberfläche, Geschäftslogik und Datenzugriff — laufen in einem gemeinsamen Prozess und teilen sich dieselbe Codebasis.

Merkmale eines Monolithen

  • Eine Codebasis: Alle Module liegen in einem Projekt, das gemeinsam versioniert und gebaut wird.
  • Ein Deployment: Die Anwendung wird als ein Paket ausgeliefert und auf einem oder mehreren Servern gestartet.
  • Gemeinsamer Prozess: Module kommunizieren über direkte Funktionsaufrufe statt über Netzwerke.

Vorteile

  • Einfacher Einstieg — gerade für kleine Teams und Prototypen.
  • Weniger Infrastruktur: keine Service-Trennung, kein Orchestrierungsaufwand.
  • Testing und Debugging laufen in einem einzigen Prozess.
  • Transaktionen über mehrere Fachbereiche hinweg sind unkompliziert.

Nachteile

  • Skalierung nur als Ganzes: Ein Engpass in einem Modul bedeutet mehr Ressourcen für die gesamte Anwendung.
  • Die Codebasis wächst — Build- und Deployment-Zeiten nehmen zu, Änderungen werden risikoreicher.
  • Ein Fehler in einem Modul kann die ganze Anwendung lahmlegen (fehlende Isolation).

Monolith oder Microservices?

Die Alternative ist die Mikroservice-Architektur, bei der viele kleine, eigenständige Dienste über Schnittstellen zusammenarbeiten. Microservices bringen Flexibilität und Isolation, aber auch deutlichen Betriebsaufwand (Netzwerk, Deployment, Monitoring).

Bewährt ist der Monolith-First-Ansatz: Mit einem Monolithen starten und erst bei konkretem Bedarf Teile herauslösen — zum Beispiel mit dem Strangler-Pattern, das Funktionen schrittweise in eigene Dienste verschiebt. Der modulare Monolith ist eine Zwischenstufe: klare Modulgrenzen im Code, aber weiterhin ein gemeinsames Deployment. Beim Zerlegen helfen Refactoring, klare Schnittstellen und Dependency Injection.

Fazit

Der Monolith ist kein Fehler, sondern oft der pragmatischste Startpunkt. Cloud-Umgebungen und Container erleichtern den späteren Umbau, entscheidend bleiben aber saubere Modulgrenzen von Anfang an.