⚠️ The 2nd Edition is still a work in progress.
The book System Design and Architecture has helped millions of software engineers worldwide to succeed in the Internet industry since 2015. Here is why it works:
- 🌎 Real-world engineering. It comes from real-world examples of FANNG and many other silicon valley companies. And it outlines how to build real-world Internet products and services.
- 🍕 Easy to digest. System design at the right level of abstraction is like a map to route you to your destination with the shortest cut. There are charts, diagrams, and step-by-step guides - all for you to acquire the minimum actionable knowledge to excel system design interviews and get started building.
- 🤲 Full-coverage. It strives to be "the book" for you to master most of the system design use-cases, from backend to frontend and from zero to hero.
- 🚶♀️ 4-step framework. This book approaches and solve problems in a systematic and repeatable way: 1) Clarify requirements 2) Sketch out the high-level design 3) Discuss individual components and how they interact with each other 4) Wrap up with blind spots or bottlenecks.
What's different in the 2nd Edition? From 2015 to 2022, we saw mobile ate the world, cloud-native computing came across Kubernetes, and web3 went through ups and downs. There are always new companies at different stages of their lifecycles taking the lead in the Internet industry. I am interested in how they work, aren't you? So in the 2nd Edition, I will
- add more interesting content with new companies and products.
- rewrite existing content with new trends in the industry.
- add more charts and diagrams with step-by-step guides.
- add a PDF edition of the book.
- deduplicate repetitive content so that each design takes its unique abstraction.
What is out of this book's scope?
- API design for specific domains. Please go to Google's API design guide.
- Object-oriented design. Its importance is quite overestimated by mediocre engineers.
- For professionals (Google L5 or above), go directly to System Design in Practice.
- For junior and intermediate programmers (Google L3/L4), go to System Design Theories and then read System Design in Practice.
- For beginners, go to Prepare for an Interview effectively, then read System Design Theories, and finally go to System Design in Practice.
- Introduction to Architecture
- How to scale a web service?
- ACID vs BASE
- Data Partition and Routing
- Replica, Consistency, and CAP theorem
- Load Balancer Types
- Concurrency Model
- Improving availability with failover
- Bloom Filter
- Skiplist
- B tree vs. B+ tree
- Intro to Relational Database
- 4 Kinds of No-SQL
- Key value cache
- Stream and Batch Processing Frameworks
- Cloud Design Patterns
- Public API Choices
- Lambda Architecture
- iOS Architecture Patterns Revisited
- What can we communicate in soft skills interview?
- Experience Deep Dive
- 3 Programming Paradigms
- SOLID Design Principles
- How to do capacity planning?
- Introduction to software engineer interview
- How to crack the coding interview, for real?
- How to communicate in the interview?
- Experience deep dive
- Culture fit
- Be a software engineer - a hero's journey
Tian Pan has been a high-performing software engineer and engineering manager working in the San Francisco Bay Area for 10 years, previously worked at Uber, Oracle, IoTeX, and Microsoft.
GPL v3
If you found this resource helpful, give it a 🌟 otherwise contribute to it and give it a ⭐️.