Routing and Addressing
The pattern: every node has an address; some node decides which next-hop to send a packet to. Layered: L2 (MAC), L3 (IP), L4 (port), L7 (URL/host). Each layer has a routing decision; bigger ecosystems (BGP) handle inter-domain routing across the public internet.
The trade-off: flexibility vs. complexity. Static routes are simple but break under failure. Dynamic routing protocols (BGP, OSPF) self-heal but add operational complexity. K8s collapses much of this for you (CNI handles pod IPs; kube-proxy handles ClusterIP) but the patterns underneath survive — debugging “why isn’t this packet getting through?” requires understanding all the layers.
Deepens in Year 1 Phase 2: Networking with tcpdump + ip route + traceroute exercises. The cluster-level expression lands in Year 1 Phase 7: Kubernetes + GitOps, and packet-level visibility deepens again in Year 3 Phase 14: Observability + eBPF.
Related patterns
- service-discovery — the layer that turns a logical name into an address to route to.
- load-balancing — once routed to a service, which backend takes the request.
- service-mesh — L7 routing pushed to a per-pod proxy.
- partitioning — addressing and routing as the substrate shards live on.
- defense-in-depth — each layer of the stack is also a place to filter, not just route.