← Back to microservices patterns map
🔍
Microservices Pattern

Service Discovery

Services register and discover dynamic endpoints instead of hardcoding hostnames or IPs.

discovery

Detailed Description

In containerized systems, service instances appear and disappear constantly. Discovery makes this normal.

Kubernetes DNS handles a lot of this automatically, while service registries offer richer metadata and health awareness.

Visual Diagram

Client-Side Discovery
  ServiceA → query [Service Registry]
           ← "UserSvc is at 10.0.1.5:8080"
           → call 10.0.1.5:8080 directly

Server-Side Discovery
  ServiceA → [Load Balancer]
           LB queries registry internally
           → routes to correct instance

Registry: Consul, Eureka, K8s DNS

Tradeoffs

Pros

Dynamic scaling, no hardcoded config

Cons

Registry becomes critical infrastructure

Examples: Consul, Kubernetes DNS, Eureka

Client-Side Discovery

ServiceA -> query [Service Registry]

<- "UserSvc is at 10.0.1.5:8080"

-> call 10.0.1.5:8080 directly

Server-Side Discovery

ServiceA -> [Load Balancer]

LB queries registry internally

-> routes to correct instance

Registry: Consul, Eureka, K8s DNS