Zum Inhalt springen

Ein Deployment. Klare Module. Keine Microservice-Kopfschmerzen.

Nicht jedes Team braucht Microservices. Der Modulare Monolith ist der pragmatische Weg: euer PHP-Monolith bleibt ein Artefakt, wird aber intern sauber in Bounded Contexts strukturiert.

Warum der Monolith intern zerfällt.

Der Code ist in einem Repository. Die Grenzen zwischen Domains sind es nicht. Mit der Zeit weiß niemand mehr, was wohin gehört.

Jede Änderung bricht etwas anderes

Der Checkout-Code greift auf die User-Tabelle zu. Der Reporting-Service kennt Order-Internals. Niemand hat das geplant. Es ist einfach passiert. Jetzt ist jede Änderung ein Minenfeld.

Neue Entwickler brauchen Monate

Keine klare Domain-Struktur bedeutet: kein Einstiegspunkt. Neue Teammates lesen Woche für Woche alten Code, ohne zu verstehen, welche Regeln wo gelten. Das Tempo sinkt mit jedem neuen Mitglied.

Domain-Grenzen existieren nur auf dem Whiteboard

In der Architektur-Diskussion sind alle einig: Bestellungen, Kunden, Produkte sind separate Domains. Im Code ist das nicht sichtbar. Klassen, Traits und Helpers liegen quer über alle Bereiche verteilt.

Wie Jardis den Modularen Monolith strukturiert.

Jardis generiert jeden Bounded Context als eigenständiges PHP-Package mit klaren Grenzen. Alles deployt ihr gemeinsam. Die Trennung ist trotzdem physisch erzwungen.

DOMAIN BOUNDARIES

Klare Grenzen auf Dateisystem-Ebene

Jeder Bounded Context wird ein eigenständiges PHP-Package mit eigener Namespace-Grenze. Direkter Zugriff auf fremde Domains ist durch die Paketstruktur strukturell ausgeschlossen. Nicht Konvention, sondern physische Trennung.

DDD-ARCHITEKTUR

Vollständige Domänenstruktur pro Modul

Entities, Aggregates, Commands, Queries, Domain Events und Repository-Pipeline: Jardis generiert für jeden Bounded Context die vollständige hexagonale Architektur. Euer Team schreibt nur die Business-Logik, die Struktur steht.

EVOLUTION

Modularer Monolith als Vorstufe oder Endzustand

Wer später auf Microservices will, hat mit dem Modularen Monolith bereits sauber geschnittene Domains. Die generierten API Contracts und Event-Definitionen machen die spätere Extraktion zu einem technischen Schritt, nicht zu einem Architektur-Projekt.

Sieh selbst, was aus drei Dateien entsteht.

Drei Definitionsdateien rein, ein kompletter Bounded Context raus. Klick dich durch den generierten Code.

E-Commerce / Sales
schema.yaml
# Database Schema — Sales Bounded Context
# This file defines the persistent storage structure.

schema:
  domain: ECommerce
  boundedContext: Sales

tables:
  order:
    columns:
      id:
        type: integer
        primary: true
        autoIncrement: true
      public_id:
        type: uuid7
        unique: true
      customer_email:
        type: string
        length: 255
      status:
        type: string
        length: 32
        default: "draft"
      total_amount:
        type: integer
      currency:
        type: string
        length: 3
        default: "EUR"
      created_at:
        type: datetime
      updated_at:
        type: datetime
        nullable: true

  order_item:
    columns:
      id:
        type: integer
        primary: true
        autoIncrement: true
      order_id:
        type: integer
        foreignKey:
          table: order
          column: id
          onDelete: cascade
      product_name:
        type: string
        length: 255
      sku:
        type: string
        length: 64
      quantity:
        type: integer
      unit_price:
        type: integer
      line_total:
        type: integer
Dateien
Definitions (Input)
Generated Code (Output)
BUILDER OUTPUT
80%
Domänencode generiertEntities, Aggregates, Commands, Queries, Events und Repository-Pipeline. Pro Bounded Context. Euer Team fokussiert sich auf die fachliche Logik.
1
Deployment-Artefakt
3x
schnelleres Onboarding neuer Entwickler
ARCHITEKTUR
0
unerlaubte Cross-Domain-ZugriffeDie Paketstruktur macht Domain-Grenz-Verletzungen unmöglich. Kein Linting-Plugin, keine Code-Review-Disziplin erforderlich.

Was der Modulare Monolith mit Jardis bringt.

Die Einfachheit eines einzelnen Deployments. Die Klarheit klar getrennter Domains.

> Struktur

Module die Grenzen durchsetzen

Kein Verlass auf Entwickler-Disziplin. Die Paketstruktur macht unerlaubte Domain-Zugriffe strukturell unmöglich. Die Architektur-Regeln sind im Dateisystem verankert.

> Unabhängigkeit

Teams arbeiten parallel ohne Konflikte

Jedes Team besitzt seinen Bounded Context. Änderungen in einem Modul berühren andere nicht. Parallele Entwicklung ohne Koordinations-Overhead.

> Pragmatismus

Kein Microservice-Overhead

Kein Service-Mesh, kein Distributed Tracing, kein Netzwerk-Latenz-Debugging. Die Domain-Grenzen sind sauber, das Deployment bleibt einfach.

Bereit, euren Monolithen intern sauber zu strukturieren?

Auf die Waitlist

Struktur kostet weniger als Chaos.

Kostenloser Trial

Teste Jardis 7 Tage kostenlos

Lass Jardis an deiner echten Domäne los. Discovery, Struktur und dein erster Platform Build.

Join Waitlist
20 Discovery Runs
5 Structure Builds
1 Platform Build
Alle Jardis Packages als Open Source
Jardis Base
29 €pro Monat

Die komplette DDD-Architektur mit allen Klassen und Contracts. Dein Team schreibt Features, nicht Infrastruktur.

Join Waitlist
Unlimited Discovery Runs
Unlimited Structure Builds
Alle 26 Jardis Packages enthalten
PHPStan Level 8 von Anfang an
Jardis Pro
180 €pro Monat

Die komplette Business-Logik mit Handlern, Validierung und Pipelines. Was früher ein Sprint war, ist jetzt ein Build.

Join Waitlist
Alles aus Jardis Base
Commands, Queries, Events direkt implementiert
Platform Code in Sekunden statt Wochen
Weitere Runs für 89 € einzeln
Enterprise

Mehr als 20 Platform Builds pro Monat?

Lass uns sprechen

Sei dabei, wenn Jardis startet.

Trag dich ein. Du bekommst Zugang, sobald wir live gehen. Inklusive kostenlosem Trial.

100+ Entwickler warten bereits auf den Launch

Neugierig, wie Jardis funktioniert?

Jardis entdecken

Häufige Fragen

Antworten zum Modularen Monolith mit Jardis.

Eine Ordnerstruktur ist eine Konvention. Ein Modularer Monolith mit eigenständigen PHP-Packages erzwingt Grenzen auf Namespace-Ebene. Unerlaubte Cross-Domain-Zugriffe sind strukturell ausgeschlossen, nicht nur per Review-Disziplin.