Monolith

Wie eine gemeinsame Codebasis mit klaren Modulgrenzen schnell liefern kann – und woran Teams erkennen, wann sie wirklich mehr Verteilung brauchen.

Eine Software-Architektur, bei der alle Komponenten einer Anwendung in einer einzigen, zusammenhängenden Codebasis entwickelt und deployed werden.

Einsteiger2 Min Lesezeit

Erklärung starten

Auf einen Blick

3 Punkte

  1. Gesamte Anwendung in einer Codebasis und einem Deployment
  2. Einfacher Start, aber schwieriger zu skalieren bei Wachstum
  3. Gegenstück zu Microservices – beide haben ihre Berechtigung

Sofortantwort

Monolith einfach erklärt

Eine Anwendung als einzelne, zusammenhängende Einheit.

Kurz gesagt
Gesamte Anwendung in einer Codebasis und einem Deployment
Typischer Einsatz
Startups & MVPs, Kleine Teams, Einfache Domains
Wichtig zu wissen
Gegenstück zu Microservices – beide haben ihre Berechtigung

Monolith im Überblick

Ein Monolith ist eine Software-Anwendung, bei der alles zusammen in einer Codebasis lebt und als eine Einheit deployed wird. Frontend, Backend, Datenbank-Zugriff – alles in einem Paket.

Monolith vs. Microservices:

Monolith:
┌─────────────────────────────────┐
│         Eine Anwendung          │
│  ┌─────┐ ┌─────┐ ┌─────┐       │
│  │User │ │Order│ │Pay- │       │
│  │Modul│ │Modul│ │ment │       │
│  └─────┘ └─────┘ └─────┘       │
│         Eine Datenbank          │
└─────────────────────────────────┘

Microservices:
┌─────┐   ┌─────┐   ┌─────┐
│User │   │Order│   │Pay- │
│Svc  │   │Svc  │   │ment │
│ DB  │   │ DB  │   │ DB  │
└─────┘   └─────┘   └─────┘
    ↕         ↕         ↕
        API Gateway

Vorteile des Monolithen:

VorteilErklärung
EinfachheitEine Codebasis, ein Deployment, ein Debugging
Schneller StartKein Overhead für Service-Kommunikation
Einfaches TestingAlles in einem Prozess testbar
Keine Netzwerk-LatenzFunktionsaufrufe statt API-Calls

Nachteile bei Wachstum:

NachteilErklärung
Deployment-RisikoKleine Änderung = ganzes System neu deployen
SkalierungAlles oder nichts skalieren
Team-BlockadenAlle arbeiten in derselben Codebasis
Tech-Stack-Lock-inEine Sprache/Framework für alles

Technisch betrachtet

Monolith-Struktur

Typische Schichten:

┌─────────────────────────────────┐
│       Presentation Layer        │
│     (UI, API Controllers)       │
├─────────────────────────────────┤
│       Business Logic Layer      │
│     (Services, Use Cases)       │
├─────────────────────────────────┤
│       Data Access Layer         │
│     (Repositories, ORM)         │
├─────────────────────────────────┤
│          Database               │
└─────────────────────────────────┘

Modular Monolith

Der Kompromiss zwischen Monolith und Microservices:

┌─────────────────────────────────┐
│         Monolith                │
│  ┌─────────┐ ┌─────────┐       │
│  │ User    │ │ Order   │       │
│  │ Module  │ │ Module  │       │
│  │ ─────── │ │ ─────── │       │
│  │ Public  │ │ Public  │       │
│  │ API     │←→│ API     │       │
│  │ ─────── │ │ ─────── │       │
│  │ Private │ │ Private │       │
│  │ Impl    │ │ Impl    │       │
│  └─────────┘ └─────────┘       │
└─────────────────────────────────┘

Regeln:

  • Module kommunizieren nur über definierte APIs
  • Keine direkten Datenbank-Zugriffe zwischen Modulen
  • Klare Ownership pro Modul
  • Später einfacher in Microservices extrahierbar

Wann Monolith, wann Microservices?

KriteriumMonolithMicroservices
Team-Größe< 10 Entwickler> 20 Entwickler
Deployment-FrequenzWöchentlichTäglich/stündlich
SkalierungGleichmäßigUnterschiedlich pro Service
Domain-KomplexitätEinfach-mittelHoch, viele Bounded Contexts
Ops-ExpertiseBegrenztStark (K8s, Observability)

Monolith skalieren

Horizontal:

Load Balancer

     ├── Monolith Instance 1
     ├── Monolith Instance 2
     └── Monolith Instance 3

      Shared Database

Optimierungen:

  • Caching (Redis)
  • Read Replicas für DB
  • CDN für statische Assets
  • Async Processing (Message Queue)

Migration zu Microservices

Strangler Fig Pattern:

  1. Neue Features als Services bauen
  2. Bestehende Features schrittweise extrahieren
  3. Monolith wird kleiner, bis er verschwindet
Phase 1:        Phase 2:        Phase 3:
┌────────┐     ┌────────┐      ┌─────┐
│Monolith│     │Mono-   │      │Svc A│
│        │     │lith    │      └─────┘
│        │     ├────────┤      ┌─────┐
│        │     │ Svc A  │      │Svc B│
└────────┘     └────────┘      └─────┘

Schritt für Schritt

Einen Monolithen bewusst entwickeln

Ein Monolith ist keine Vorstufe zu Microservices, sondern oft die passende Architektur. Seine Stärke liegt in klaren Grenzen innerhalb einer gemeinsamen Anwendung.

  1. Fachliche Module schneiden

    01

    Gruppiere Code nach zusammengehörigen Aufgaben statt nach technischen Schichten allein.

    Kunden | Bestellungen | Abrechnung | Inhalte
  2. Modulgrenzen erzwingen

    02

    Definiere erlaubte Abhängigkeiten, öffentliche Schnittstellen und gemeinsame Regeln für jedes Modul.

    Modul A → öffentlicher Vertrag → Modul B
  3. Einfach bereitstellen und beobachten

    03

    Ein gemeinsames Deployment vereinfacht Betrieb, braucht aber Tests, Metriken und sichere Rollbacks.

    Build → Tests → Release → Monitoring → Rollback
  4. Engpässe konkret messen

    04

    Prüfe, ob Teamkonflikte, Skalierung oder Release-Risiken tatsächlich in einem abgegrenzten Teil entstehen.

    Symptom → Messung → betroffener Modulbereich
  5. Nur gezielt entkoppeln

    05

    Wenn nötig, wird zuerst ein klarer, stabiler Bereich herausgelöst – nicht die gesamte Anwendung auf einmal.

    klarer Kontext → Vertrag → schrittweise Extraktion

Konkretes Beispiel

Beispiel: Plattform für Terminbuchungen

Ein kleines Team entwickelt Buchung, Benachrichtigungen und Verwaltung gemeinsam in einer Anwendung.

Entscheidungsfrage

Braucht das Team für den Start mehrere unabhängige Services – oder vor allem schnell verständliche Abläufe und einfache Releases?

Modularer Monolith

Eine Codebasis mit klaren Modulen für Buchungen, Nutzer und Kommunikation; getrennte Zuständigkeiten im Code, aber ein gemeinsamer Betrieb.

Die beste erste Architektur ist oft die, die das Team sicher ändern, testen und verstehen kann.

Einordnung

Vorteile und Grenzen

Das spricht dafür

  • Schneller Start: Ein Repository, ein Deployment und direkte Funktionsaufrufe reduzieren Betriebsaufwand.
  • Einfache Änderungen: Fachliche Abläufe lassen sich über Modulgrenzen hinweg gut nachverfolgen.
  • Gut testbar: Viele Integrationsfälle können ohne verteilte Infrastruktur geprüft werden.

Das solltest du beachten

  • Gemeinsamer Release-Radius: Eine Änderung wird normalerweise zusammen mit der Anwendung ausgeliefert.
  • Grenzen verwässern leicht: Ohne Moduldisziplin entstehen schnell schwer verständliche Abhängigkeiten.
  • Skalierung nicht immer gezielt: Einzelne rechenintensive Bereiche können den gesamten Betrieb beeinflussen.
Vertiefung · für Fortgeschrittene

Modularer Monolith als zusammenhängendes System

Die Anwendung bleibt gemeinsam betrieben, ihre fachlichen Bereiche kommunizieren aber über bewusste interne Verträge.

Wissenskarte

Eine auslieferbare Anwendung mit klaren fachlichen Modulen.

Modulgrenzen ermöglichen Struktur und Weiterentwicklung, ohne die Kosten verteilter Systeme früh zu übernehmen. Monolith gliedert sich in: Präsentation, Fachmodule, Interne APIs, Datenzugriff, Gemeinsame Tests, Deployment.

01Einsatzbereiche

Wann ist Monolith sinnvoll?

Geeignet für

  • Startups & MVPsSchneller Start ohne Overhead verteilter Systeme
  • Kleine TeamsEin Team, eine Codebasis – einfache Koordination
  • Einfache DomainsAnwendungen ohne komplexe Skalierungsanforderungen
  • Modular MonolithMonolith mit klaren internen Modul-Grenzen als Kompromiss

↑ Inhalt

02Werkzeuge

Womit Monolith umgesetzt wird

↑ Inhalt

Merksatz

Ein Monolith ist wie ein Schweizer Taschenmesser

Alles ist in einem Werkzeug vereint – praktisch für den Anfang, aber wenn eine Klinge bricht, musst du das ganze Messer reparieren.

  1. Gesamte Anwendung in einer Codebasis und einem Deployment
  2. Einfacher Start, aber schwieriger zu skalieren bei Wachstum
  3. Gegenstück zu Microservices – beide haben ihre Berechtigung

04Redaktion

Herkunft und Stand

Redaktion und Aktualität

Ebenex RedaktionRedaktion

Veröffentlicht
Aktualisiert

Dieses Feld entwickelt sich schnell. Oben stehen Veröffentlichung und letzte Änderung; ein Prüfdatum kommt dazu, sobald die Erklärung nach ihrer letzten Änderung geprüft wurde.

↑ Inhalt

05FAQ

Häufige Fragen zu Monolith

Ist Monolith schlecht?

Nein. Monolithen sind für viele Anwendungen die richtige Wahl – besonders am Anfang. Die Komplexität von Microservices lohnt sich erst ab einer gewissen Größe und Team-Struktur.

Wann sollte ich von Monolith zu Microservices wechseln?

Wenn: Teams sich gegenseitig blockieren, Deployments zu riskant werden, einzelne Teile unterschiedlich skalieren müssen, oder die Codebasis unüberschaubar wird.

Was ist ein Modular Monolith?

Ein Monolith mit klaren internen Modul-Grenzen. Kombiniert die Einfachheit eines Monolithen mit der Struktur von Microservices. Guter Zwischenschritt.

Kann ein Monolith skalieren?

Ja, durch horizontale Skalierung (mehrere Instanzen) und Caching. Grenzen entstehen, wenn verschiedene Teile unterschiedliche Ressourcen brauchen.

↑ Inhalt

06Weiterlernen

Was möchtest du als Nächstes verstehen?

↑ Inhalt