日本語版
System Design Guide
System design is the culmination of engineering expertise. This skill provides a systematic body of knowledge for designing real-world systems, covering the trade-offs between scalability, availability, and consistency.
Target Audience
- Engineers preparing for system design interviews
- Those involved in designing large-scale systems
- Anyone who wants to learn the rationale behind architectural decisions
Prerequisites
- Basic knowledge of web development
- Database fundamentals
- Networking fundamentals
Learning Guide
00-fundamentals — Core Concepts
01-building-blocks — Building Blocks
02-patterns — Design Patterns
03-case-studies — Case Studies
Quick Reference
System Design Framework:
1. Define requirements (functional / non-functional / constraints)
2. Back-of-the-envelope estimation (QPS / storage / bandwidth)
3. High-level design (component diagram)
4. Detailed design (API / DB schema / algorithms)
5. Scalability and bottleneck mitigation
References
- Xu, A. "System Design Interview." ByteByteGo, 2023.
- Kleppmann, M. "Designing Data-Intensive Applications." O'Reilly, 2017.
- Fowler, M. "Patterns of Enterprise Application Architecture." Addison-Wesley, 2002.