Lernpfad: Wie dieses Repository nutzen?
Worum geht es?
Eine Enterprise-Bibliotheksverwaltung als Multi-Module-Maven-Projekt (Java 21, Spring Boot 3 mit Jakarta-Namespace, Angular 22), gebaut, um möglichst viele reale Enterprise-Muster an laufendem Code nachzuvollziehen: Microservices, Event-Driven Architecture (Kafka + RabbitMQ), Saga/Outbox, OAuth2/OIDC mit Keycloak, Resilience-Patterns, API-Gateway, Service Discovery, Compose- (Podman) und Kubernetes/Helm-Deployment.
Die fachliche Domäne (Bücher, Ausleihe, Mitglieder, Mahngebühren) ist bewusst einfach gehalten - die Komplexität, die man hier lernen soll, steckt in der Architektur, nicht im Fachproblem.
Aufbau des Repositories
library-enterprise-platform/
├── documentation/ <- dieses Lehrbuch (Markdown, nach Rollen/Themen gegliedert)
│ └── docs/
│ ├── 00-ueberblick/ Einstieg, Lernpfade (hier)
│ ├── 01-architektur/ Architekt:in: C4-Diagramme, ADRs, Domain Model
│ ├── 02-entwicklung/ Entwickler:in: Coding Guidelines, Modul-Walkthrough
│ ├── 03-testing/ Tester:in: Teststrategie, Testarten
│ ├── 04-review/ Reviewer:in: PR-Checkliste, Anti-Patterns
│ ├── 05-devops/ DevOps: Infrastruktur, CI/CD, Observability
│ ├── 06-glossar/ Fach-/Technikbegriffe
│ ├── 07-pattern-katalog/ alle Entwurfsmuster mit Code-Fundstelle
│ ├── 08-tech-stack/ Technologie-Katalog mit Alternativen
│ └── 09-frontend/ Frontend-Entwickler:in: Angular-Lernpfad, Konzept-Referenz,
│ Signals-vs-NgRx-Vergleich
├── library-platform/ <- Maven-Reactor: alle Spring-Boot-Module
├── library-frontend/ <- Angular-SPA (ab Phase 6)
└── infra/ <- docker-compose.yml, Keycloak-Realm, Helm-Chart (ab Phase 7)
../../shared/enterprise-infrastructure/ <- AUSSERHALB dieses Repos (Phase 12): Reverse-Proxy + projekt-
übergreifendes Jenkins, siehe reverse-proxy.md und
shared/enterprise-infrastructure/README.md
Rollenbasierte Lernpfade
Dieses Projekt ist bewusst so dokumentiert, dass du es aus fünf Blickwinkeln durcharbeiten kannst - unabhängig voneinander oder nacheinander:
- Architekt:in → 01-architektur: Warum sieht das System so aus? Welche Entscheidungen wurden getroffen und warum (ADRs)? Wie hängen die Bounded Contexts zusammen?
- Entwickler:in → 02-entwicklung: Wie ist ein Service intern aufgebaut? Welche Coding-Konventionen gelten? Wie füge ich ein neues Feature hinzu?
- Tester:in → 03-testing: Welche Testarten gibt es, wie führe ich sie aus, wie baue ich Testdaten auf?
- Reviewer:in → 04-review: Worauf achte ich in einem Pull Request? Welche Anti-Patterns sollte ich erkennen?
- DevOps → 05-devops: Wie starte ich die Infrastruktur? Wie deploye ich nach Kubernetes? Wie lese ich Metriken/Traces?
- Frontend-Entwickler:in → 09-frontend: Wie ist die Angular-SPA aufgebaut? Was lernt man an ihr über Standalone Components, Signals, funktionale Guards/Interceptors, OIDC/PKCE - und wann lohnt sich NgRx statt Signals? Plus: Angular aktualisieren & migrieren - der durchgeführte Major-Sprung mit allen Regeln und Stolpersteinen. Kommst du aus einer alten Angular-Version (v8 o. ä.)? Starte mit dem Exkurs: Angular 8 → 22 (oder → 18, wenn dein Projekt auf v18 steht).
Quer dazu: das Glossar für Begriffe, der
Pattern-Katalog für Entwurfsmuster mit
Code-Fundstelle, und der Tech-Stack-Katalog für
Technologie-Entscheidungen mit Alternativen. Steckst du an der reinen Syntax von
docker-compose.yml fest (nicht WAS läuft, sondern WIE man die Datei liest)?
docker-compose-syntax-erklaert.md geht jede
Zeile einzeln durch.
Umsetzungsphasen (Baufortschritt)
Das Projekt entsteht phasenweise (siehe Git-Historie, ein Commit pro Phase):
| Phase | Inhalt | Status |
|---|---|---|
| 1 | Fundament: Parent-POM, common-Module, Architektur-Doku, Infra-Grundgerüst | ✅ |
| 2 | catalog-service, member-service | ✅ |
| 3 | lending-service (Saga, Outbox, Resilience4j) | ✅ |
| 4 | reservation-service, fine-service, notification-service | ✅ |
| 5 | api-gateway, config-server, discovery-server | ✅ |
| 6 | Angular-Frontend | ✅ |
| 7 | Kubernetes/Helm, CI-Pipeline, Observability | ✅ |
| 8 | ArchUnit-Vertiefung, E2E, Lasttest, restliche Rollen-Doku | ✅ |
| 9 | Contract Testing (Pact), reactor-weite Coverage-Schwelle, Java 21 Migration | ✅ |
| 10 | Jenkins-Mehrstufen-Pipeline (Local/Test/QS/Prod) | ✅ |
| 11 | Echter kind-Kubernetes-Cluster für die Jenkins-Test-Stufe (echtes Deployment statt Dry-Run) |
✅ |
| 12 | Reverse-Proxy (Traefik) mit sprechenden Hostnamen, projektübergreifendes Jenkins in shared/enterprise-infrastructure/ |
✅ |
Voraussetzungen zum Mitmachen
- IDE: IntelliJ IDEA oder VS Code (mit Java-Extension-Pack + Spring Boot Extension Pack)
- Java 21 (
java -version) - Podman (für
infra/docker-compose.ymlund Testcontainers-Integrationstests) - unter Windows/macOS mitpodman machine;podman composeoder das separatepodman-compose. Dateiname bleibtdocker-compose.yml, Podman liest ihn unverändert. - Node.js + npm (für
library-frontend, ab Phase 6) - Optional: WSL2, falls du Linux-Tools (z. B.
kind/minikubefür Phase 7) bevorzugst
Schnellstart (sobald mind. Phase 1 vorhanden ist):
cd library-platform
mvn clean verify # kompiliert alle Module, führt Unit-/ArchUnit-Tests aus
podman compose -f ../infra/docker-compose.yml up -d # Infrastruktur starten