Master 1.1

Project Descriptions

Markdown und HTML wurden synchron erzeugt. Die Beschreibungen sind direkt in den Projektordnern integriert.

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

  1. V01: Bestellung wird ueber Controller angenommen, Application Use Case erzeugt Domain-Order und speichert ueber Repository-Port.
  2. V02: Derselbe Ablauf wird sauberer ueber DTO, Mapper, Facade, Use Cases und Ports strukturiert.
  3. V03: Die Bestellung erzeugt Domain Events; OutboxRecord und Publisher sichern die spaetere Event-Auslieferung.
  4. V04: Query- und Service-Aufrufe werden ueber Security Proxy, Approval Policies, Audit und Metrics abgesichert und beobachtbar gemacht.
  5. 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

  1. versions/v01-modular-baseline/PROJECTS.html fuer die Basis.
  2. versions/v02-clean-architecture-deep-dive/PROJECTS.html fuer Ports, Mapper und Use Cases.
  3. versions/v03-event-driven-outbox-deep-dive/PROJECTS.html fuer Events und Outbox.
  4. versions/v04-security-observability-deep-dive/PROJECTS.html fuer Security und Observability.
  5. versions/v05-cloud-native-ops-deep-dive/PROJECTS.html fuer CQRS, Saga und Cloud Native.

Wichtigste Entwurfsmuster im Master-1-Ablauf

  • Aggregate Root: Order schuetzt Konsistenz.
  • Value Object: Money, OrderId, CustomerId machen 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.
⌂ Cockpit