Eliminierung technischer Schulden mit PHPStan, Rector PHP und PHPUnit. Über 20 Jahre Praxiserfahrung in skalierbaren Backends.
- Aktualisiert:
- Autor:
- Roland Golla
Bounded Context: Definition und Einordnung
Bounded Context mit NCA: Schnelle Hilfe vom Experten
Gesetzliche Konformität & Inklusion. Optimierung von Performance und Conversion durch radikal nutzerzentriertes, universelles Design.
Skalierbare KI-Systeme mit echtem Code Ownership. CI/CD, Backup-Strategien und Infrastruktur, die mit deinem Team wächst.
Woran man einen guten Schnitt erkennt
- Sprachwechsel: Dasselbe Wort bedeutet in zwei Abteilungen etwas anderes.
- Eigener Rhythmus: Ein Bereich ändert sich monatlich, der andere einmal im Jahr.
- Klare Verantwortung: Ein Team kann den Bereich alleine ändern und ausrollen.
- Wenige Übergänge: Der Austausch mit anderen Bereichen passt auf eine Seite.
Bounded Context in PHP umsetzen
src/
Sales/
Domain/
Application/
Infrastructure/
Accounting/
Domain/
Application/
Infrastructure/
Shared/
Domain/
deptrac:
layers:
- name: Sales
collectors:
- type: directory
value: src/Sales/.*
- name: Accounting
collectors:
- type: directory
value: src/Accounting/.*
ruleset:
Sales:
- Shared
Accounting:
- Shared
Ein Modell für alles gegen mehrere Bounded Contexts
Grenzen als Arbeitsbereich für KI Agents
A model is a selectively simplified and consciously structured form of knowledge.
Domain Driven Design erklärt: Ubiquitous Language, Bounded Context und Aggregate in PHP und Symfony, plus klare Grenzen für KI Agents im Code.
Mehr erfahrenDie NCA Erfahrung mit Grenzen in gewachsenen Systemen
Wir sind Experten für PHP und helfen Ihnen, Ihre digitalen Herausforderungen zu meistern. Unser erfahrenes Team unterstützt Sie bei PHP Updates, PHP Refactoring und berät Sie remote zu allen Fragen rund um PHP. Mit unseren vollautomatischen CI/CD Deployments und einer robusten Docker-Infrastruktur bringen wir Ihre PHP-Projekte auf das nächste Level. Vertrauen Sie auf unsere Expertise für zuverlässige und skalierbare PHP-Lösungen.
Häufige Fragen zu Bounded Context
Ein Bounded Context ist ein abgegrenzter fachlicher Bereich, in dem ein Modell und seine Begriffe eindeutig gelten. Innerhalb der Grenze bedeutet ein Wort genau eine Sache. Außerhalb darf dasselbe Wort etwas anderes heißen, weil dort ein eigenes Modell gilt. Die Grenze ist eine fachliche Vereinbarung, keine technische Ordnerstruktur.
So wenige wie möglich und so viele wie nötig. In der Praxis liegen die meisten Systeme bei einer einstelligen Zahl. Jeder Kontext kostet Übersetzungsaufwand an der Grenze. Wenn zwei Bereiche ständig dieselben Daten austauschen und immer gemeinsam geändert werden, waren es wahrscheinlich zwei Kontexte zu viel.
Nein. Ein Bounded Context ist eine fachliche Grenze, kein Deployment. Ein modularer Monolith mit klar getrennten Namespaces erfüllt denselben Zweck und ist einfacher zu betreiben. Wenn ein Bereich später eigene Skalierung oder ein eigenes Release braucht, lässt er sich entlang der bestehenden Grenze herauslösen.
Mit Werkzeugen in der Pipeline. Deptrac beschreibt Layer und meldet jeden verbotenen Zugriff. PHP Architecture Tester und PHP Arkitect formulieren Architekturregeln als normale Tests, die mit PHPUnit laufen. Ein Verstoß bricht damit den Build und nicht erst das Code Review, in dem ihn ohnehin niemand sieht.
Weil sie einen begrenzten Arbeitsbereich liefern. Der Code eines Kontexts passt ins Kontextfenster, die Begriffe sind eindeutig und die Testsuite ist klein genug für schnelles Feedback. Der Auftrag lautet dann ändere diesen Bereich statt ändere das System. Architekturtests fangen ab, was der Agent falsch verbindet.
Über die Sprache. Wo ein Begriff seine Bedeutung wechselt, liegt fast immer eine Grenze. Zweiter Hinweis ist die Organisation: Bereiche, die von unterschiedlichen Teams mit unterschiedlichem Rhythmus geändert werden, gehören getrennt. Ein Workshop mit den Fachleuten bringt hier mehr als jede Analyse des bestehenden Codes.
Ein Modul ist eine technische Gliederung, ein Bounded Context eine fachliche. Ein Modul kann Teil eines Kontexts sein, ein Kontext kann aus mehreren Modulen bestehen. Entscheidend ist die Frage nach dem Modell: Gilt innerhalb der Einheit genau eine Bedeutung je Begriff, handelt es sich um einen Bounded Context.
Über eine bewusst gestaltete Schnittstelle. Üblich sind Domain Events, ein schmales Interface oder eine veröffentlichte Sprache, auf die sich beide Seiten einigen. Zum Altsystem hin übersetzt ein Anti Corruption Layer. Direkter Zugriff auf die Datenbank des anderen Kontexts ist der schnellste Weg, die Grenze wieder aufzulösen.
Technisch ja, fachlich nur mit getrennten Tabellen und klaren Eigentumsverhältnissen. Jede Tabelle gehört genau einem Kontext, andere lesen nicht direkt mit. Sobald zwei Kontexte auf dieselbe Tabelle schreiben, ist die Grenze weg, und jede Schemaänderung betrifft wieder beide Seiten gleichzeitig.
Sparsam. Ein Shared Bereich für echte Allgemeinplätze wie Geldbeträge oder Zeitspannen ist sinnvoll. Sobald dort fachliche Logik landet, entsteht ein neuer Monolith in der Mitte. Im Zweifel lieber doppelter Code in zwei Kontexten als eine gemeinsame Klasse, die von beiden Seiten in verschiedene Richtungen gezogen wird.
Ja, das ist der Normalfall. Zuerst wird sichtbar gemacht, was heute zusammenhängt, danach wird das Verhalten mit Tests festgehalten. Erst dann wird verschoben, Stück für Stück, mit Parallel Change für Schema und API. Ein Big Bang Umbau ohne diese Vorarbeit scheitert zuverlässig.
Das hängt vom Zustand des Systems ab. Fehlen Tests und Pipeline, geht der größere Teil in die Absicherung, bevor überhaupt eine Grenze gezogen wird. Bei NCA startet jede Zusammenarbeit mit einem kostenlosen Kennenlernen, danach schätzen wir den Aufwand ein und rechnen transparent minutengenau ab.