Part III. System Design Use Cases
Ninety percent of the functionality delivered now is better than 100% of it delivered never.
Brian Kernighan and P. J. Plauger
Part III of this book covers some common system design use cases and examples, which we will work through together to build and scale on top of AWS cloud computing services. For all the use cases, we’ll start with figuring out the system requirements, then move to a deep dive into system components, and finally close the chapter with a deployment view on AWS with Day 0 architecture (minimum viable product for a startup with, say, one thousand customers) and Day N architecture (scaling to millions of customers). Along the way, we’ll discuss the bottlenecks that might occur in design, best practices for designing large-scale systems, and comparisons of similar AWS services.
We recommend following the Make It Work, Make It Right, Make It Fast principle, and all the chapters in Part III follow this philosophy. It’s good to be optimistic that one day our system will serve one billion active users, but you don’t have to build the system from day one to support this scale. The goal of huge scale should never hold you back from launching the product—just make sure the system is extensible enough so that if there is a need in the future, it can be evolved as new users are onboarded and new features are introduced. For example, the following amazon.com website screenshot shows the initial launch of the website—there was no ...