Synchronous communication is easy to reason about but can lead to Cascading Failures. If Service A waits for Service B, and B is slow, Service A will eventually crash too.
A Service Mesh is an infrastructure layer that handles communication for you. It provides **Automatic Retries**, **Mutual TLS**, and **Observability** without you writing any code in your .NET service. It essentially puts a 'Sidecar' proxy next to every pod to manage the network traffic.
Q: "When should you NOT use gRPC?"
Architect Answer: "gRPC is difficult for browsers to use directly (requires gRPC-Web). If your primary client is a Frontend/Mobile app, a normal REST/HTTP API is often better. Use gRPC for 'Backend-to-Backend' communication where performance and type safety are critical, but keep your public-facing gateway on REST."