Eureka + Ribbon

App ---> Ribbon (client library) ---> multiple service instances
         ^                   |
         |                   v
    Eureka (registry) <------+
  • load balancing happens inside the application process
  • apps must embed Ribbon & talk to Eureka

Envoy

App ---> Envoy proxy -----> Service instances (sidecar)
  • load balancing, discovery, retries, metrics, etc. done in the proxy
  • app code stays clean and unaware of network logic
  • envoy usually deployed as a side-car to the app