Projektbeschreibungen und Ablauf Master 1.1
Dieses Dokument beschreibt, was die Maven-Module in Master 1 tun und wie der Ablauf durch die Versionen funktioniert. Die gleichen Kurzbeschreibungen sind direkt in den jeweiligen Modulordnern als README.md und README.html integriert.
Gesamtidee
Master 1 ist als Lernleiter aufgebaut: V01 beginnt mit klarer Modularisierung, V02 vertieft Clean Architecture, V03 fuegt Outbox und Events hinzu, V04 zeigt Security/Observability, V05 fuehrt Richtung Cloud-Native Betrieb.
End-to-End-Ablauf ueber die Lernleiter
- V01: Bestellung wird ueber Controller angenommen, Application Use Case erzeugt Domain-Order und speichert ueber Repository-Port.
- V02: Derselbe Ablauf wird sauberer ueber DTO, Mapper, Facade, Use Cases und Ports strukturiert.
- V03: Die Bestellung erzeugt Domain Events; OutboxRecord und Publisher sichern die spaetere Event-Auslieferung.
- V04: Query- und Service-Aufrufe werden ueber Security Proxy, Approval Policies, Audit und Metrics abgesichert und beobachtbar gemacht.
- V05: Command- und Query-Seite werden getrennt; Saga, Billing Gateway, Legacy Adapter und OpenShift/Kubernetes-Artefakte zeigen den Betriebspfad.
Moduluebersicht
| Modul | Typ | Was es tut | Ablaufrolle |
|---|---|---|---|
v01-modular-baseline/order-domain |
Domain-Modul | Enthaelt das einfache Bestellmodell mit Wertobjekten, Status und grundlegenden Invarianten. | Application erzeugt eine Order ueber fachliche Methoden.; Order prueft Invarianten und wechselt den Status. |
v01-modular-baseline/order-application |
Use-Case-Modul | Definiert den einfachen Bestell-Use-Case und die Ports, ueber die Domain und Adapter verbunden werden. | Controller erstellt ein PlaceOrderCommand.; Use Case erzeugt Domain-Objekte und nutzt PricingPolicy. |
v01-modular-baseline/order-adapter-memory |
Outbound Adapter | Stellt eine einfache In-Memory-Persistenz bereit, damit die Modulgrenzen ohne echte Datenbank sichtbar werden. | Use Case ruft OrderRepository.save.; InMemoryOrderRepository speichert die Order im Speicher. |
v01-modular-baseline/order-app |
Bootstrap / Inbound Adapter | Startet die einfache Anwendung und stellt einen REST-nahen Einstieg in den Bestellprozess dar. | HTTP/Controller-Aufruf kommt herein.; Controller baut ein Command. |
v02-clean-architecture-deep-dive/order-domain |
Clean-Domain | Vertieft die Domain mit sauberer Trennung von CustomerId, OrderId und Order-Aggregate. | Use Case erstellt Domain-Objekte.; Domain enthaelt nur Regeln und Zustandswechsel. |
v02-clean-architecture-deep-dive/order-application |
Use-Case- und Port-Schicht | Zeigt Clean Architecture mit Commands, Use Cases und Repository-Port. | Inbound Adapter uebergibt Command.; Use Case steuert fachlichen Ablauf. |
v02-clean-architecture-deep-dive/order-adapters |
Inbound/Outbound Adapter | Kapselt REST, DTO-Mapping, Facade und In-Memory-Persistenz als technische Raender. | REST empfaengt Request.; DTO Mapper uebersetzt in Command. |
v02-clean-architecture-deep-dive/order-bootstrap |
Runtime Composition | Verdrahtet Clean-Architecture-Bausteine in einer lauffaehigen Startkonfiguration. | Application startet.; Bootstrap erzeugt/verdrahtet Use Cases und Adapter. |
v03-event-driven-outbox-deep-dive/order-domain |
Event-faehige Domain | Erweitert die Bestellung um Domain Events und OrderPlaced als fachliches Ereignis. | Order wird platziert.; Domain erzeugt OrderPlaced. |
v03-event-driven-outbox-deep-dive/order-application |
Use Case + Outbox Port | Verbindet Bestellablauf mit Outbox-Records, Publisher-Template und Ports fuer robuste Event-Auslieferung. | PlaceOrderUseCase speichert Order.; OutboxRecord wird erzeugt. |
v03-event-driven-outbox-deep-dive/order-outbox-adapter |
Messaging/Outbox Adapter | Implementiert Outbox-Repository und idempotente Nachrichtenverarbeitung als lernbare Infrastrukturgrenze. | Application speichert OutboxRecord.; DefaultOutboxPublisher liest und publiziert. |
v03-event-driven-outbox-deep-dive/order-bootstrap |
Runtime Composition | Startet die V03-Variante mit Domain Events und Outbox-Fluss. | Runtime startet V03.; Use Case erzeugt Bestellung und Outbox. |
v04-security-observability-deep-dive/order-core |
Core Query/Rules | Buendelt Query-Service und Spezifikationen als fachlichen Kern fuer Security- und Observability-Dekorationen. | Query wird angefordert.; Security Proxy prueft Zugriff. |
v04-security-observability-deep-dive/order-security |
Security Boundary | Zeigt Zugriffskontrolle, Approval Policies und Security Proxy rund um fachliche Services. | Client ruft Query/Approval an.; Security Proxy prueft Context. |
v04-security-observability-deep-dive/order-observability |
Audit/Metrics Decorator | Fuegt Audit und Metriken hinzu, ohne den Kernservice mit Querschnittslogik zu vermischen. | Service-Aufruf geht durch Decorator.; Audit zeichnet fachlichen Zugriff auf. |
v04-security-observability-deep-dive/order-bootstrap |
Runtime Composition | Verdrahtet Core, Security und Observability zu einer nachvollziehbaren Laufzeitvariante. | Runtime startet V04.; Services werden mit Proxy und Decorator verbunden. |
v05-cloud-native-ops-deep-dive/order-command |
Command/CQRS Write Side | Enthaelt die schreibende Seite fuer Bestellungen mit Command Handler und SubmitOrderCommand. | API erzeugt SubmitOrderCommand.; Command Handler validiert und verarbeitet. |
v05-cloud-native-ops-deep-dive/order-query |
CQRS Read Side | Zeigt ein separates Lesemodell und Query Handler fuer schnelle fachliche Abfragen. | API fragt Query Handler.; Read Model liefert optimierte Sicht. |
v05-cloud-native-ops-deep-dive/order-integration |
Legacy/Process Integration | Kapselt Billing-Anbindung und Fulfillment-Prozess als Gateway, ACL und Saga. | Command-Seite loest Integration aus.; Saga ruft BillingGateway. |
v05-cloud-native-ops-deep-dive/order-runtime |
Cloud-Native Runtime | Stellt API und Startklasse fuer die cloud-native Variante bereit. | Container startet Runtime.; OrderApi nimmt Requests an. |
Lese-Reihenfolge
versions/v01-modular-baseline/PROJECTS.htmlfuer die Basis.versions/v02-clean-architecture-deep-dive/PROJECTS.htmlfuer Ports, Mapper und Use Cases.versions/v03-event-driven-outbox-deep-dive/PROJECTS.htmlfuer Events und Outbox.versions/v04-security-observability-deep-dive/PROJECTS.htmlfuer Security und Observability.versions/v05-cloud-native-ops-deep-dive/PROJECTS.htmlfuer CQRS, Saga und Cloud Native.
Wichtigste Entwurfsmuster im Master-1-Ablauf
- Aggregate Root:
Orderschuetzt Konsistenz. - Value Object:
Money,OrderId,CustomerIdmachen Fachbegriffe typisiert. - Command Pattern: Commands transportieren Use-Case-Wuensche.
- Application Service: Use Cases orchestrieren ohne Infrastrukturdetails.
- Ports and Adapters: Application kennt Ports; Adapter implementieren Technik.
- DTO + Mapper: Web-/API-Modelle werden von Domain-Modellen getrennt.
- Facade: vereinfacht Zugriff auf mehrere Use Cases.
- Transactional Outbox: Event-Auslieferung wird robust vorbereitet.
- Idempotent Consumer: doppelte Nachrichten werden abgefangen.
- Proxy/Decorator/Policy: Security und Observability bleiben sauber vom Kern getrennt.
- CQRS + Saga + Anti-Corruption Layer: V05 zeigt getrennte Lese-/Schreibmodelle und Legacy-Integration.