We use analytics cookies.We use cookies to analyze site traffic and improve your experience.
Loading...
System Design Masterclass · Microservices Architecture
Free preview: the first 2 parts of this 10-part lesson.
Already bought the course? Sign in to read the whole lesson.
this lesson is part of
System Design Masterclass
Unlock this lesson and the 751 other paid lessons
$25 once, by PayPal
See the System Design courseread the rest of this lesson in
System Design Masterclass
Unlock this lesson and the 751 other paid lessons
$25 once, by PayPal
See the System Design coursein Microservices Architecture
This lesson is part of the full System Design Masterclass. Unlock it along with 769 other lessons for a one-time payment.
One-time payment by card or PayPal
Get Lifetime AccessOne-time payment: UPI, card or netbanking
Get Lifetime Access18 Foundation lessons are free, no payment needed. Try them now
It is easy and good
“It is really nice and good Please join the course”
Your architecture has 30 services. Every service needs:
You could implement these in every service. But that means every service, whether written in Go, Python, Java, or Node.js, needs the same networking logic. Every team maintains the same retry policies, the same TLS configuration, the same thresholds. When you need to change the retry policy, you update 30 services.
Netflix tried the library approach first. They built Ribbon (load balancing), Hystrix (circuit breaking), and Eureka () as Java libraries. It worked, but only for Java services. When teams started writing Go and Python services, they needed to reimplement everything. Maintaining parity across three language implementations became a full-time job.
A moves all of this into the infrastructure layer. Your services handle business logic. The mesh handles networking. Your Go service and your Python service automatically get mTLS, retries, tracing, and load balancing without a single line of networking code.
A has two components:
Data Plane: the sidecar proxies. Every service instance gets a lightweight proxy (typically Envoy) deployed alongside it. All traffic in and out of the service flows through this proxy. The proxy handles encryption, retries, circuit breaking, load balancing, and telemetry collection, transparently.
Control Plane: the brain. A centralized component that configures all the proxies. You tell the control plane "enable mTLS between all services" or "route 5% of traffic to the canary version" and it pushes this configuration to every in the mesh.
| Component | Data Plane (Proxy) | Control Plane |
|---|---|---|
| Role | Handles every network request | Configures the proxies |
| Deployed | One per service instance (sidecar) | Centralized (few instances) |
| Example | Envoy | Istio's Istiod, Linkerd's control plane |
| Handles | TLS, retries, routing, metrics | Policy, configuration, certificate management |
| Failure mode | If one proxy dies, one service is isolated | If control plane dies, proxies use cached config |