Praxis-Labs Tiefenfinalisierung

Die Labs sind als echte Uebungen mit Aufgabe, Befehlen, Erwartung, Loesung und Reflexion aufgebaut.

← Zurueck zum Index

Lab 01 - Stack bewusst starten

Ziel: Docker Compose Stack sauber hochfahren und jeden Dienst pruefen.

Aufgabe: Fuehre die Befehle aus und notiere, welche Komponente beteiligt ist.

docker compose up -d
docker compose ps
docker compose logs postgres --tail=30

Erwartete Beobachtung:
- Alle Container sind running oder healthy.
- Adminer, RabbitMQ, Keycloak und Grafana sind erreichbar.

Loesung / Auswertung:
1. Pruefe zuerst den technischen Status.
2. Vergleiche dann Datenbank, Queue, Log oder HTTP-Antwort.
3. Notiere nicht nur, dass es funktioniert, sondern warum.

Varianten:
- Fuehre denselben Schritt mit bewusst falscher Konfiguration aus.
- Suche den Fehler mit dem Fehlerkatalog.
- Erstelle einen Screenshot oder eine kurze Notiz fuer spaetere Wiederholung.

Lab 02 - Bestellung annehmen

Ziel: REST Flow ausloesen und Datenbankwirkung verstehen.

Aufgabe: Fuehre die Befehle aus und notiere, welche Komponente beteiligt ist.

curl -X POST http://localhost:8080/api/orders/ORD-LAB-02/accept
select * from order_platform.orders where order_id='ORD-LAB-02';

Erwartete Beobachtung:
- Order existiert.
- Status ist ACCEPTED.

Loesung / Auswertung:
1. Pruefe zuerst den technischen Status.
2. Vergleiche dann Datenbank, Queue, Log oder HTTP-Antwort.
3. Notiere nicht nur, dass es funktioniert, sondern warum.

Varianten:
- Fuehre denselben Schritt mit bewusst falscher Konfiguration aus.
- Suche den Fehler mit dem Fehlerkatalog.
- Erstelle einen Screenshot oder eine kurze Notiz fuer spaetere Wiederholung.

Lab 03 - Outbox verfolgen

Ziel: Outbox Event von NEW nach PUBLISHED beobachten.

Aufgabe: Fuehre die Befehle aus und notiere, welche Komponente beteiligt ist.

select event_id,event_type,status from outbox.events order by event_id desc;
sleep 6
select event_id,event_type,status,published_at from outbox.events order by event_id desc;

Erwartete Beobachtung:
- Event ist gespeichert.
- Relay markiert es als PUBLISHED.

Loesung / Auswertung:
1. Pruefe zuerst den technischen Status.
2. Vergleiche dann Datenbank, Queue, Log oder HTTP-Antwort.
3. Notiere nicht nur, dass es funktioniert, sondern warum.

Varianten:
- Fuehre denselben Schritt mit bewusst falscher Konfiguration aus.
- Suche den Fehler mit dem Fehlerkatalog.
- Erstelle einen Screenshot oder eine kurze Notiz fuer spaetere Wiederholung.

Lab 04 - RabbitMQ Queue pruefen

Ziel: Exchange, Routing Key und Consumer nachvollziehen.

Aufgabe: Fuehre die Befehle aus und notiere, welche Komponente beteiligt ist.

curl -u order_user:order_pass http://localhost:15672/api/queues/%2F/billing.order-accepted
docker compose logs rabbitmq --tail=80

Erwartete Beobachtung:
- Queue existiert.
- Messages werden geroutet oder konsumiert.

Loesung / Auswertung:
1. Pruefe zuerst den technischen Status.
2. Vergleiche dann Datenbank, Queue, Log oder HTTP-Antwort.
3. Notiere nicht nur, dass es funktioniert, sondern warum.

Varianten:
- Fuehre denselben Schritt mit bewusst falscher Konfiguration aus.
- Suche den Fehler mit dem Fehlerkatalog.
- Erstelle einen Screenshot oder eine kurze Notiz fuer spaetere Wiederholung.

Lab 05 - Keycloak Positivtest

Ziel: Mit order-admin Token geschuetzten Endpoint aufrufen.

Aufgabe: Fuehre die Befehle aus und notiere, welche Komponente beteiligt ist.

./scripts/security/get-keycloak-token.sh order-admin admin
./scripts/security/call-secured-order-flow.sh

Erwartete Beobachtung:
- HTTP 200 oder erfolgreicher REST Flow.

Loesung / Auswertung:
1. Pruefe zuerst den technischen Status.
2. Vergleiche dann Datenbank, Queue, Log oder HTTP-Antwort.
3. Notiere nicht nur, dass es funktioniert, sondern warum.

Varianten:
- Fuehre denselben Schritt mit bewusst falscher Konfiguration aus.
- Suche den Fehler mit dem Fehlerkatalog.
- Erstelle einen Screenshot oder eine kurze Notiz fuer spaetere Wiederholung.

Lab 06 - Keycloak Negativtest

Ziel: Mit order-reader die Grenze zwischen 401 und 403 verstehen.

Aufgabe: Fuehre die Befehle aus und notiere, welche Komponente beteiligt ist.

./scripts/security/get-keycloak-token.sh order-reader reader
curl -i -X POST http://localhost:8080/api/orders/ORD-LAB-06/accept -H "Authorization: Bearer $TOKEN"

Erwartete Beobachtung:
- Token gueltig, aber Rolle reicht nicht.
- Erwartung: 403.

Loesung / Auswertung:
1. Pruefe zuerst den technischen Status.
2. Vergleiche dann Datenbank, Queue, Log oder HTTP-Antwort.
3. Notiere nicht nur, dass es funktioniert, sondern warum.

Varianten:
- Fuehre denselben Schritt mit bewusst falscher Konfiguration aus.
- Suche den Fehler mit dem Fehlerkatalog.
- Erstelle einen Screenshot oder eine kurze Notiz fuer spaetere Wiederholung.

Lab 07 - WireMock Payment Fehler

Ziel: Providerfehler simulieren und Resilience beobachten.

Aufgabe: Fuehre die Befehle aus und notiere, welche Komponente beteiligt ist.

curl http://localhost:8089/__admin/mappings
curl -i -X POST http://localhost:8089/payment/authorize

Erwartete Beobachtung:
- Mapping ist sichtbar.
- Fehler kann ueber Mapping variiert werden.

Loesung / Auswertung:
1. Pruefe zuerst den technischen Status.
2. Vergleiche dann Datenbank, Queue, Log oder HTTP-Antwort.
3. Notiere nicht nur, dass es funktioniert, sondern warum.

Varianten:
- Fuehre denselben Schritt mit bewusst falscher Konfiguration aus.
- Suche den Fehler mit dem Fehlerkatalog.
- Erstelle einen Screenshot oder eine kurze Notiz fuer spaetere Wiederholung.

Lab 08 - Prometheus Target pruefen

Ziel: Runtime Metriken von Prometheus aus betrachten.

Aufgabe: Fuehre die Befehle aus und notiere, welche Komponente beteiligt ist.

curl http://localhost:8080/actuator/prometheus | head
curl http://localhost:9090/api/v1/targets

Erwartete Beobachtung:
- Runtime liefert Metriken.
- Prometheus Target ist UP.

Loesung / Auswertung:
1. Pruefe zuerst den technischen Status.
2. Vergleiche dann Datenbank, Queue, Log oder HTTP-Antwort.
3. Notiere nicht nur, dass es funktioniert, sondern warum.

Varianten:
- Fuehre denselben Schritt mit bewusst falscher Konfiguration aus.
- Suche den Fehler mit dem Fehlerkatalog.
- Erstelle einen Screenshot oder eine kurze Notiz fuer spaetere Wiederholung.

Lab 09 - Grafana Dashboard lesen

Ziel: Metriken fachlich interpretieren.

Aufgabe: Fuehre die Befehle aus und notiere, welche Komponente beteiligt ist.

open http://localhost:3000
admin/admin

Erwartete Beobachtung:
- Dashboard zeigt HTTP, Latenz oder Outbox-Signale.

Loesung / Auswertung:
1. Pruefe zuerst den technischen Status.
2. Vergleiche dann Datenbank, Queue, Log oder HTTP-Antwort.
3. Notiere nicht nur, dass es funktioniert, sondern warum.

Varianten:
- Fuehre denselben Schritt mit bewusst falscher Konfiguration aus.
- Suche den Fehler mit dem Fehlerkatalog.
- Erstelle einen Screenshot oder eine kurze Notiz fuer spaetere Wiederholung.

Lab 10 - Maven Architekturgrenze pruefen

Ziel: Domain darf keine Spring-Abhaengigkeit haben.

Aufgabe: Fuehre die Befehle aus und notiere, welche Komponente beteiligt ist.

grep -R "org.springframework" maven-project/domain/src/main/java || true
mvn -pl domain test

Erwartete Beobachtung:
- Kein Spring Import in domain.

Loesung / Auswertung:
1. Pruefe zuerst den technischen Status.
2. Vergleiche dann Datenbank, Queue, Log oder HTTP-Antwort.
3. Notiere nicht nur, dass es funktioniert, sondern warum.

Varianten:
- Fuehre denselben Schritt mit bewusst falscher Konfiguration aus.
- Suche den Fehler mit dem Fehlerkatalog.
- Erstelle einen Screenshot oder eine kurze Notiz fuer spaetere Wiederholung.

Lab 11 - Integrationstests starten

Ziel: Testcontainers und Failsafe ausfuehren.

Aufgabe: Fuehre die Befehle aus und notiere, welche Komponente beteiligt ist.

./scripts/tests/run-phase4-e2e.sh
mvn -pl integration-tests -am verify

Erwartete Beobachtung:
- *IT.java Tests werden ausgefuehrt.

Loesung / Auswertung:
1. Pruefe zuerst den technischen Status.
2. Vergleiche dann Datenbank, Queue, Log oder HTTP-Antwort.
3. Notiere nicht nur, dass es funktioniert, sondern warum.

Varianten:
- Fuehre denselben Schritt mit bewusst falscher Konfiguration aus.
- Suche den Fehler mit dem Fehlerkatalog.
- Erstelle einen Screenshot oder eine kurze Notiz fuer spaetere Wiederholung.

Lab 12 - Backup erstellen

Ziel: Datenbankdump erstellen und kontrollieren.

Aufgabe: Fuehre die Befehle aus und notiere, welche Komponente beteiligt ist.

./scripts/db/backup-postgres.sh
ls -lh backups/

Erwartete Beobachtung:
- Backup-Datei existiert und ist groesser als 0 Bytes.

Loesung / Auswertung:
1. Pruefe zuerst den technischen Status.
2. Vergleiche dann Datenbank, Queue, Log oder HTTP-Antwort.
3. Notiere nicht nur, dass es funktioniert, sondern warum.

Varianten:
- Fuehre denselben Schritt mit bewusst falscher Konfiguration aus.
- Suche den Fehler mit dem Fehlerkatalog.
- Erstelle einen Screenshot oder eine kurze Notiz fuer spaetere Wiederholung.

Lab 13 - Restore gedanklich vorbereiten

Ziel: Restore nicht blind ausfuehren, sondern Ziel pruefen.

Aufgabe: Fuehre die Befehle aus und notiere, welche Komponente beteiligt ist.

kubectl config current-context || true
psql -h localhost -U order_user -d orderdb -c "select current_database();"

Erwartete Beobachtung:
- Zielumgebung ist bewusst gewaehlt.

Loesung / Auswertung:
1. Pruefe zuerst den technischen Status.
2. Vergleiche dann Datenbank, Queue, Log oder HTTP-Antwort.
3. Notiere nicht nur, dass es funktioniert, sondern warum.

Varianten:
- Fuehre denselben Schritt mit bewusst falscher Konfiguration aus.
- Suche den Fehler mit dem Fehlerkatalog.
- Erstelle einen Screenshot oder eine kurze Notiz fuer spaetere Wiederholung.

Lab 14 - Deployment Render pruefen

Ziel: Kustomize/Helm Output ohne Cluster rendern.

Aufgabe: Fuehre die Befehle aus und notiere, welche Komponente beteiligt ist.

kustomize build deployment/kubernetes/overlays/local || true
helm template order-runtime deployment/helm/order-runtime || true

Erwartete Beobachtung:
- Manifest wird generiert oder Fehler ist eindeutig.

Loesung / Auswertung:
1. Pruefe zuerst den technischen Status.
2. Vergleiche dann Datenbank, Queue, Log oder HTTP-Antwort.
3. Notiere nicht nur, dass es funktioniert, sondern warum.

Varianten:
- Fuehre denselben Schritt mit bewusst falscher Konfiguration aus.
- Suche den Fehler mit dem Fehlerkatalog.
- Erstelle einen Screenshot oder eine kurze Notiz fuer spaetere Wiederholung.

Lab 15 - Incident Drill

Ziel: Einen Betriebsfehler strukturiert bearbeiten.

Aufgabe: Fuehre die Befehle aus und notiere, welche Komponente beteiligt ist.

docker compose stop rabbitmq
curl -X POST http://localhost:8080/api/orders/ORD-INCIDENT/accept
select status,count(*) from outbox.events group by status;

Erwartete Beobachtung:
- Outbox/Relay zeigt Fehler.
- Runbook fuehrt zur Wiederherstellung.

Loesung / Auswertung:
1. Pruefe zuerst den technischen Status.
2. Vergleiche dann Datenbank, Queue, Log oder HTTP-Antwort.
3. Notiere nicht nur, dass es funktioniert, sondern warum.

Varianten:
- Fuehre denselben Schritt mit bewusst falscher Konfiguration aus.
- Suche den Fehler mit dem Fehlerkatalog.
- Erstelle einen Screenshot oder eine kurze Notiz fuer spaetere Wiederholung.