Lab 01: System starten und Portal verstehen
Ziel
Docker Compose Stack starten, Portale oeffnen, Systemkarte lesen
Befehle
docker compose up -d
docker compose ps
Erwartete Ausgabe
- alle Container laufen
- index.html zeigt Academy Einstieg
Aufgaben
- Welche Systeme sind im Stack?
- Welche Ports sind wichtig?
Loesung und Lernkontrolle
Containerstatus dokumentieren und URLs in Projektkarte pruefen.
Lab 02: REST Bestellung annehmen
Ziel
Order Accept Flow ausloesen
Befehle
curl -i -X POST http://localhost:8080/api/orders/ORD-LAB-02/accept
Erwartete Ausgabe
- HTTP 200
- Status ACCEPTED
Aufgaben
- Welche Schichten werden durchlaufen?
Loesung und Lernkontrolle
REST -> UseCase -> Payment -> DB -> Outbox.
Lab 03: PostgreSQL Orders pruefen
Ziel
Datenbank nach REST Flow inspizieren
Befehle
docker compose exec postgres psql -U order_user -d orderdb -c "select * from order_platform.orders;"
Erwartete Ausgabe
- Order sichtbar
Aufgaben
- Welche Tabelle gehoert zur Domain?
Loesung und Lernkontrolle
order_platform.orders enthaelt den fachlichen Zustand.
Lab 04: Outbox verfolgen
Ziel
Outbox Event pruefen
Befehle
docker compose exec postgres psql -U order_user -d orderdb -c "select event_type,status from outbox.events;"
Erwartete Ausgabe
- OrderAccepted Event
Aufgaben
- Warum steht Event erst in DB?
Loesung und Lernkontrolle
Outbox entkoppelt DB-Commit vom Broker-Publish.
Lab 05: RabbitMQ Queue pruefen
Ziel
Broker und Queue kontrollieren
Befehle
open http://localhost:15672
rabbitmqctl list_queues name messages
Erwartete Ausgabe
- billing.order-accepted vorhanden
Aufgaben
- Welche Rolle hat Routing Key?
Loesung und Lernkontrolle
Routing key verbindet Eventtyp mit Queue.
Lab 06: Keycloak Token holen
Ziel
JWT erzeugen und API mit Token rufen
Befehle
./scripts/security/get-keycloak-token.sh order-admin admin
Erwartete Ausgabe
- access_token vorhanden
Aufgaben
- Was ist 401? Was ist 403?
Loesung und Lernkontrolle
401 ungueltig/fehlend, 403 Rolle fehlt.
Lab 07: Security Negativtest
Ziel
order-reader darf keine Admin Aktion
Befehle
TOKEN=$(./scripts/security/get-keycloak-token.sh order-reader reader)
curl -i -H "Authorization: Bearer $TOKEN" -X POST ...
Erwartete Ausgabe
- HTTP 403
Aufgaben
- Warum ist das gut?
Loesung und Lernkontrolle
Least privilege wird praktisch sichtbar.
Lab 08: Payment Fehler simulieren
Ziel
WireMock Fehlerfall aktivieren
Befehle
curl -i http://localhost:8089/__admin/mappings
curl -X POST http://localhost:8089/payment/authorize
Erwartete Ausgabe
- Fehlerantwort oder Delay
Aufgaben
- Was macht Resilience?
Loesung und Lernkontrolle
Timeout/Retry/Circuit Breaker begrenzen Schaden.
Lab 09: Circuit Breaker beobachten
Ziel
Metriken und Status pruefen
Befehle
curl http://localhost:8080/actuator/metrics
curl http://localhost:8080/actuator/prometheus
Erwartete Ausgabe
- Resilience Metriken sichtbar
Aufgaben
- Wann soll Circuit oeffnen?
Loesung und Lernkontrolle
Bei wiederholten Fehlern statt Systemueberlast.
Lab 10: Prometheus Targets pruefen
Ziel
Scrape-Ziele ansehen
Befehle
curl http://localhost:9090/api/v1/targets
Erwartete Ausgabe
- order-runtime target up
Aufgaben
- Warum ist /actuator/prometheus offen?
Loesung und Lernkontrolle
Prometheus braucht lesenden Zugriff auf Metriken.
Lab 11: Grafana Dashboard lesen
Ziel
Dashboard oeffnen und Panels interpretieren
Befehle
open http://localhost:3000
Erwartete Ausgabe
- Dashboard sichtbar
Aufgaben
- Welche Metrik ist fachlich?
Loesung und Lernkontrolle
Technische und fachliche Metriken trennen.
Lab 12: Backup erstellen
Ziel
PostgreSQL Backup ausfuehren
Befehle
./scripts/database/backup-postgres.sh
Erwartete Ausgabe
- Backup-Datei entsteht
Aufgaben
- Wo wird Backup abgelegt?
Loesung und Lernkontrolle
Backup muss versioniert und pruefbar sein.
Lab 13: Restore ueben
Ziel
Backup in Test-DB wiederherstellen
Befehle
./scripts/database/restore-postgres.sh backup-file
Erwartete Ausgabe
- Restore ohne Fehler
Aufgaben
- Warum in Test-DB?
Loesung und Lernkontrolle
Restore nie zuerst in Produktion testen.
Lab 14: Maven Quality Gate
Ziel
Build und Tests ausfuehren
Befehle
mvn -q verify
Erwartete Ausgabe
- BUILD SUCCESS
Aufgaben
- Welche Module werden gebaut?
Loesung und Lernkontrolle
CI/CD fuehrt dieselben Gates reproduzierbar aus.
Lab 15: SBOM erzeugen
Ziel
Abhaengigkeiten sichtbar machen
Befehle
mvn cyclonedx:makeAggregateBom
Erwartete Ausgabe
- bom.xml oder bom.json
Aufgaben
- Warum braucht Betrieb SBOM?
Loesung und Lernkontrolle
Security und Lizenzbewertung brauchen Inventar.
Lab 16: Kubernetes Manifeste rendern
Ziel
Kustomize/Helm pruefen
Befehle
kubectl kustomize deploy/kustomize/overlays/local
helm template order-runtime deploy/helm/order-runtime
Erwartete Ausgabe
- YAML Ausgabe
Aufgaben
- Welche Werte sind environment-spezifisch?
Loesung und Lernkontrolle
Deployment als Code macht Unterschiede sichtbar.
Lab 17: CrashLoop Diagnose simulieren
Ziel
Fehlerdiagnose mit kubectl lernen
Befehle
kubectl describe pod <pod>
kubectl logs <pod> --previous
Erwartete Ausgabe
- Events/Logs zeigen Ursache
Aufgaben
- Was zuerst lesen?
Loesung und Lernkontrolle
Events zeigen Startfehler, Logs zeigen Laufzeitfehler.
Lab 18: DLQ Analyse
Ziel
Dead Letter Messages untersuchen
Befehle
rabbitmqctl list_queues name messages
rabbitmqctl get_queue_messages ...
Erwartete Ausgabe
- DLQ Count sichtbar
Aufgaben
- Wann replayen?
Loesung und Lernkontrolle
Erst Ursache fixen, dann Replay.
Lab 19: Incident Mini-Drill
Ziel
Alert annehmen und Runbook folgen
Befehle
curl /actuator/health
docker compose logs runtime
Erwartete Ausgabe
- Ursache dokumentiert
Aufgaben
- Welche Evidenz braucht Review?
Loesung und Lernkontrolle
Incident Response ist Prozess plus technische Diagnose.
Lab 20: End-to-End Abschluss
Ziel
Flow komplett von API bis Dashboard nachvollziehen
Befehle
curl -X POST ...
SQL select
RabbitMQ pruefen
Prometheus pruefen
Erwartete Ausgabe
- alle Stationen sichtbar
Aufgaben
- Kannst du den Flow erklaeren?
Loesung und Lernkontrolle
Das ist der Abschluss: verstehen, ausfuehren, pruefen, erklaeren.