Every deployed system is a chain of small, specialized parts passing traffic to each other. This is a map of that chain — the patterns, the traffic controllers, the containers, and the cloud pieces that hold it together.
The hop-by-hop version. Nothing skipped: security checks, routing, business logic, and the async work that happens after the response has already gone back.
The same features can be shipped as one deployable unit, as many independent services, or as functions that only exist while they run. Each shape trades simplicity for flexibility differently.
A load balancer sits in front of every replica and picks one for each incoming request. The algorithm it uses changes how evenly, and how intelligently, traffic gets spread.
Cycles through servers in fixed order, one request after another.
Sends the request to whichever server currently has the fewest open connections.
Gives bigger servers a larger share of traffic based on assigned capacity weights.
Routes the same client to the same server every time, based on their IP.
Routes each request to the data center or edge location physically closest to it.
Skips any server failing its health check until it reports healthy again.
Docker packages an app and everything it needs into one portable image. Kubernetes takes that image and keeps many copies of it alive, healthy, and reachable across a cluster of machines.
Every provider offers a version of the same building blocks. Knowing the job each block does matters more than memorizing any one vendor's name for it.
Beyond the core path, these are the parts that make a system resilient, observable, and safe to change.