Covers: Client-Side vs Server-Side Discovery, Service Registries, Service Mesh (Istio/Envoy), Kubernetes DNS
The Problem That Didn't Exist in the Monolith
In a monolith, calling another module is simple: OrderService.create(data). It's a function call. The compiler resolves the address. It always works (assuming the code compiles).
In microservices, "calling another service" means: where is it, right now, on the network?
This sounds trivial until you consider what's actually happening in a production environment:






