tldr: sharing a walk-through of an application load balancer design.
Cloud services such as ALBs are distributed system building blocks for design interviews. These building blocks are assumed to "just work". However, their designs are non-trivial. They must operate at hyperscale, have strict availability requirements, and are multi-tenant. Individual cloud services can be more difficult to design than distributed systems built on a cloud platform.
Despite their complexity, cloud services can be derived. Their operating requirements are so constrained that sufficiently realistic designs can share an architectural skeleton. You don't need proprietary knowledge to know how something must be built.
I have found derivations more helpful to learning than descriptions of something that already exists. So I've derived a cloud ALB and hope that it's a useful educational resource for practical distributed system design. The derivation starts with a short educational section on service-specific concepts before starting the design.
This material is for an advanced audience. There are just too many concepts involved to explain everything. The necessary foundation is familiarity with distributed systems, basic networking knowledge (e.g. TCP, TLS, DNS) and basic knowledge of cloud engineering (e.g. control-plane-data-plane separation, configuration distribution, regional services, zones).
If there's interest I can share designs of other cloud services. Each cloud service I've seen has unique architectural challenges. I see a gap between the architectural reasoning between what's required to pass interviews and what appears in production systems. There's definitely a lot more to learn even if you can pass design interviews.
sentient_iot_de•43m ago
Cloud services such as ALBs are distributed system building blocks for design interviews. These building blocks are assumed to "just work". However, their designs are non-trivial. They must operate at hyperscale, have strict availability requirements, and are multi-tenant. Individual cloud services can be more difficult to design than distributed systems built on a cloud platform.
Despite their complexity, cloud services can be derived. Their operating requirements are so constrained that sufficiently realistic designs can share an architectural skeleton. You don't need proprietary knowledge to know how something must be built.
I have found derivations more helpful to learning than descriptions of something that already exists. So I've derived a cloud ALB and hope that it's a useful educational resource for practical distributed system design. The derivation starts with a short educational section on service-specific concepts before starting the design.
This material is for an advanced audience. There are just too many concepts involved to explain everything. The necessary foundation is familiarity with distributed systems, basic networking knowledge (e.g. TCP, TLS, DNS) and basic knowledge of cloud engineering (e.g. control-plane-data-plane separation, configuration distribution, regional services, zones).
If there's interest I can share designs of other cloud services. Each cloud service I've seen has unique architectural challenges. I see a gap between the architectural reasoning between what's required to pass interviews and what appears in production systems. There's definitely a lot more to learn even if you can pass design interviews.