ADR-0007: Eureka fuer das Compose-Profil, Kubernetes-native Discovery fuer das K8s-Profil

Status

Akzeptiert (2026-08-04)

Kontext

"Service Discovery" beantwortet die Frage "unter welcher Netzwerkadresse erreiche ich gerade eine Instanz von member-service?" - relevant, sobald es mehr als eine Instanz geben kann oder Adressen sich dynamisch aendern (Container-Neustarts, Auto-Scaling).

Es gibt zwei grundsaetzlich verschiedene Ansaetze:

Entscheidung

Wir betreiben beides, je nach Deployment-Profil, mit demselben Anwendungscode:

Konsequenzen

Positiv

Negativ / Trade-offs

Nachtrag (Phase 13): Feign-Clients nutzen Eureka jetzt tatsaechlich zur Adressaufloesung

Zunaechst registrierten sich catalog-service/member-service/lending-service zwar bei Eureka (sichtbar im Dashboard unter :8761), aber lending-services Feign-Clients riefen sie trotzdem ueber feste, in application.yml/docker-compose.yml (Dateiname unveraendert) konfigurierte URLs auf - die Eureka-Registry wurde also nie tatsaechlich zur ADRESSAUSWAHL genutzt (siehe documentation/docs/07-pattern-katalog/pattern-katalog.md, war dort als Vertiefungsaufgabe gefuehrt). Inzwischen behoben: spring-cloud-starter-loadbalancer als Dependency ergaenzt, @FeignClient(..., url = "${...:}") (leerer Default) laesst Feign bei fehlender expliziter URL automatisch auf namensbasierte Eureka-/LoadBalancer-Aufloesung zurueckfallen. Nur die VOLL containerisierte Compose-Umgebung (infra/docker-compose.yml) setzt die URL tatsaechlich leer - die "Local"-Stufe (lending-service via IDE) behaelt feste URLs als Default, da ein bloss lokal laufender IDE-Prozess Eureka-registrierte container-interne IP-Adressen anderer, containerisierter Services nicht zuverlaessig erreichen kann. Das Kubernetes-Profil ist unveraendert: kein Eureka, feste K8s-DNS-Namen ueber Helm-Werte.

Alternativen erwogen

⌂ Cockpit