Lesson 123

Software Architecture & System Design

Styles · Scaling · The Toolkit

1:00

How to take a system from one user to a million — covering scaling strategies, the request pipeline, caching, database sharding, architectural styles, and designing for failure.

By the end, you can

  • Explain why "architecture" refers specifically to the decisions that are expensive to reverse.
  • Contrast scaling up versus scaling out, and explain why stateless app servers are required for horizontal scaling.
  • Trace a request through the standard pipeline (CDN, load balancer, app servers, cache, database, queue) and state each component's role.
  • Explain the cache-aside read pattern and identify why cache invalidation is the hard part.
  • Distinguish replication from sharding, and state what each technique scales.
  • Compare monolith, microservices, and event-driven architectures by their wins and costs, and choose appropriately for a given context.
  • Perform back-of-envelope estimates (average QPS, storage per month) given a traffic number.
  • Convert an availability percentage to downtime per year, and name the mechanisms that achieve high availability.
  • Apply the CAP theorem to explain the trade-off every distributed system must make.
Up next in Software Engineering & Web
Questions or feedback?