<EbeneX/>
Architektur Architektur · Updated 11. März 2026

Monolith

Definition

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

Einsteiger 3 Min. Lesezeit EN: Monolithic Architecture

Einfach erklärt

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

Technischer Deep Dive

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│
└────────┘     └────────┘      └─────┘

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.

Gesamte Anwendung in einer Codebasis und einem Deployment

Einfacher Start, aber schwieriger zu skalieren bei Wachstum

Gegenstück zu Microservices – beide haben ihre Berechtigung

Startups & MVPs

Schneller Start ohne Overhead verteilter Systeme

Kleine Teams

Ein Team, eine Codebasis – einfache Koordination

Einfache Domains

Anwendungen ohne komplexe Skalierungsanforderungen

Modular Monolith

Monolith mit klaren internen Modul-Grenzen als Kompromiss

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.

Dein persönliches Share-Bild für Instagram – 1080×1080px, bereit zum Posten.