Putting It Together: a fundamental approach to system design
Foundations of Practical System Design
System Design Course for Junior Engineers
Kay Ashaolu
Lesson Overview
- We go over how we will introduce a new way of approaching system design through case studies
- These case studies, and the technology agnostic Building Block approach is formulated to inspire "Senior level intuition" for junior engineers
- Intuition is built when seeing the same Building Blocks used in different case studies
Recap: From Bits to Systems
- Everything in our digital world breaks down to zeros and ones.
- At the lowest level, data is either:
- Stored (as sequences of zeros and ones) - Storage units
- Processed (instructions that transform or utilize those zeros and ones) - Task units
Fundamental Building Blocks
- Combine storage and tasks to create meaningful components.
- These components (building blocks) can be servers, databases, or other well-known constructs.
- Each building block exists to fulfill a specific purpose in the system.
Intuition Over Specifics
- The purpose of this course is to develop intuition, not to memorize implementations.
- By understanding the building block concept, you can reason about any system, regardless of technology specifics.
- This intuition helps you adapt, compare, and even switch technologies when necessary.
The Next Step: 15 Case Studies
- We will explore 15 different applications you interact with in everyday life.
- Each case study:
- Presents requirements and what we want to build.
- Shows how to compose Building Blocks (Task units + Storage unit) to meet those requirements.
- Seeing many examples builds strong intuition, just like in real life.
Starting With Requirements
- Real-world system design starts with defining requirements.
- You determine what the system should do, who uses it, what it stores, and what tasks it performs.
- The case studies will simulate this process:
- Read the prompt.
- Understand the scenario.
- Identify key needs.
Matching Requirements to Building Blocks
- Once requirements are known, we combine Building Blocks to meet them.
- We introduce Building Blocks as the combination of Task units (computation, logic) + Storage units (data persistence, structure).
- Over time, you’ll see patterns: certain Building Blocks appear repeatedly to solve common problems.
Not About the "Best" Design
- There are many valid ways to design a system.
- We focus on understanding the fundamental reasoning process:
- Identify what you need to store.
- Identify what tasks you need to perform.
- Utilize the best Building Blocks to architect your system
Identifying Patterns in Systems
- After examining multiple examples, you’ll recognize repeating patterns:
- Common Building Blocks appear in different contexts.
- Similar trade-offs and considerations emerge regardless of the domain.
Building Long-Term Intuition
- Study all 15 case studies to develop a deep, flexible intuition.
- Refer to the provided guide under this video listing Building Blocks and their real-world technology counterparts.
- Over time, you’ll understand:
- What each technology really provides.
- How to swap or adjust building blocks as needs evolve.
Your Next Steps
- Approach each case study with an open mind.
- Key: Focus on the Building Block concepts rather than think about which specific technology implements those building blocks
- With each example, grow your intuition, making you more confident and versatile in system design.
Putting It Together: a fundamental approach to system design
By kayashaolu
Putting It Together: a fundamental approach to system design
- 26