Zum Inhalt springen

Änderungen, die Dinge kaputt machen, die nichts damit zu tun haben

Ihr ändert den Checkout. Zwei Tage später meldet der Support, dass Bestellhistorie nicht mehr lädt. Das ist kein Zufall. Es ist fehlende Domain-Isolation. Jardis verhindert das strukturell.

Warum ihr nach jedem Deployment zittert.

Regression Bugs sind kein Qualitätsproblem. Sie sind ein Strukturproblem. Wenn Domain-Grenzen fehlen, ist jede Änderung eine potenzielle Zeitbombe in einem anderen Teil des Systems.

Jedes Deployment ist ein Blindflug

Tests sind grün. Der Code Review war sauber. Trotzdem bricht nach dem Deployment etwas, das niemand angefasst hat. Domain-Grenzen existieren nur als Konvention, nicht als Struktur. Wer prüft schon jeden indirekten Seiteneffekt?

Versteckte Abhängigkeiten die niemand kennt

Module sind direkt miteinander verknüpft, ohne dass es die Dokumentation zeigt. Billing kennt User-Interna. Order greift auf Payment-Tabellen zu. Sobald sich eine Seite ändert, kann die andere brechen.

Manuelle Regression-Tests skalieren nicht

Wachsende Codebasen machen vollständige Regression-Tests teurer mit jedem Sprint. Teams testen weniger, deployen vorsichtiger, und liefern trotzdem Regressions aus. Die Codebasis wird so groß, dass niemand mehr den Überblick hat.

Wie Jardis Regression Bugs strukturell verhindert.

Der Jardis Builder generiert Bounded Contexts als physisch getrennte PHP-Packages. Module können nicht auf fremde Domain-Interna zugreifen. Was sich nicht berühren kann, kann sich nicht gegenseitig brechen.

PHYSISCHE ISOLATION

Abhängigkeiten die das Dateisystem erzwingt

Jeder Bounded Context wird ein eigenständiges PHP-Package mit expliziten Schnittstellen. Billing kann nicht direkt auf User-Daten zugreifen. Order kann nicht auf Payment-Tabellen lesen. Diese Grenzen sind keine Richtlinien, sondern physische Strukturen im Dateisystem. Versteckte Abhängigkeiten sind strukturell ausgeschlossen.

EXPLIZITE CONTRACTS

Keine stillen Annahmen zwischen Domains

Der Builder generiert API Contracts für jeden Bounded Context: OpenAPI und gRPC-Definitionen als formale Schnittstellen. Wenn Domain A mit Domain B kommunizieren will, muss das explizit über diese Contracts passieren. Keine impliziten Datenbankzugriffe, keine stillen Annahmen, keine Überraschungen nach dem Deployment.

KONSISTENTE CQRS-STRUKTUR

Änderungen bleiben in ihrer Domain

Commands und Queries werden für jeden Bounded Context getrennt generiert. Eine Command-Änderung in Checkout beeinflusst keine Queries in Order-History. Die klare CQRS-Trennung innerhalb jedes PHP-Packages bedeutet, dass Seiteneffekte strukturell auf die jeweilige Domain beschränkt bleiben.

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)
ISOLATION
0
unbeabsichtigte Domain-AbhängigkeitenJardis generiert Bounded Contexts als physisch getrennte Packages. Cross-Domain-Zugriffe sind strukturell ausgeschlossen.
80%
Architektur-Code generiert
100%
explizite API Contracts pro Domain
CONFIDENCE
50%
schnellere EntwicklungWenn Regressions strukturell verhindert werden, entfällt das manuelle Nachverfolgen von Seiteneffekten. Euer Team deployt mit Zuversicht.

Was sich ändert, wenn Domain-Grenzen physisch existieren.

Nicht weniger Bugs durch mehr Tests. Sondern weniger Bugs durch eine Architektur, die bestimmte Fehler strukturell unmöglich macht.

> Deployment-Sicherheit

Deployen ohne Angst vor Fernwirkungen

Wenn Domain-Grenzen physisch erzwungen sind, bleibt eine Änderung in ihrem Kontext. Checkout-Änderungen brechen keine Order-History. Das Team deployed mit Klarheit darüber, was sich tatsächlich ändert.

> Klare Schnittstellen

Jede Kommunikation zwischen Domains ist explizit

Generierte API Contracts machen Domain-Kommunikation sichtbar. Keine versteckten Datenbankzugriffe mehr. Wenn sich ein Contract ändert, ist das eine bewusste Entscheidung, keine unbeabsichtigte Konsequenz.

> Zuverlässige Tests

Domains unabhängig testen, nicht das Gesamtsystem

Jeder Bounded Context ist ein eigenständiges Package, das isoliert getestet werden kann. Kein aufwendiges Test-Setup für Gesamtsystem-Integrationstests. Vertrauen durch Isolation statt durch vollständige Abdeckung.

Bereit, Deployments ohne Regression-Angst durchzuführen?

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 auf die wichtigsten Fragen zu Jardis und Regression Bugs.

Tests validieren Verhalten innerhalb einer Domain. Aber wenn zwei Domains internen State teilen, fängt ein Test in Domain A den Seiteneffekt in Domain B nicht ab. Jardis eliminiert diese Fehlerklasse, indem Kopplung zwischen Domains physisch unmöglich wird.