Introduction to Modern System Design
Get an overview of the topics we’ll cover in this course.
Understanding System Design
System design is the process of defining components and their integration, APIs, and data models to build large-scale systems that meet a specified set of functional and non-functional requirements.
System design uses the concepts of computer networking, parallel computing, and distributed systems to craft systems that scale well and are performant. Distributed systems scale well by nature. However, distributed systems are inherently complex. The discipline of system design helps us tame this complexity and get the work done.
System design aims to build systems that are reliable, effective, and maintainable, among other characteristics.
Reliable systems handle faults, failures, and errors.
Effective systems meet all user needs and business requirements.
Maintainable systems are flexible and easy to scale up or down. The ability to add new features also comes under the umbrella of maintainability.
Modern System Design using building blocks
We have separated out commonly-used design elements, such as load balancers, as the basic building blocks for high-level system design. This serves two purposes. First, it allows us to discuss all the building blocks in detail and discuss their interesting mini-design problems. Second, when we tackle a design problem, we can concentrate on problem-specific aspects, ...