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:

  1. Architekt:in01-architektur: Warum sieht das System so aus? Welche Entscheidungen wurden getroffen und warum (ADRs)? Wie hängen die Bounded Contexts zusammen?
  2. Entwickler:in02-entwicklung: Wie ist ein Service intern aufgebaut? Welche Coding-Konventionen gelten? Wie füge ich ein neues Feature hinzu?
  3. Tester:in03-testing: Welche Testarten gibt es, wie führe ich sie aus, wie baue ich Testdaten auf?
  4. Reviewer:in04-review: Worauf achte ich in einem Pull Request? Welche Anti-Patterns sollte ich erkennen?
  5. DevOps05-devops: Wie starte ich die Infrastruktur? Wie deploye ich nach Kubernetes? Wie lese ich Metriken/Traces?
  6. Frontend-Entwickler:in09-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

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
⌂ Cockpit