Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/puncsky/system-design-and-architecture
Learn how to design large-scale systems. Prep for the system design interview.
https://github.com/puncsky/system-design-and-architecture
architecture design design-patterns design-system development interview interview-practice interview-questions system-design web
Last synced: 22 days ago
JSON representation
Learn how to design large-scale systems. Prep for the system design interview.
- Host: GitHub
- URL: https://github.com/puncsky/system-design-and-architecture
- Owner: puncsky
- Created: 2019-09-25T08:40:41.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2024-04-07T03:10:50.000Z (7 months ago)
- Last Synced: 2024-10-01T13:24:58.362Z (about 1 month ago)
- Topics: architecture, design, design-patterns, design-system, development, interview, interview-practice, interview-questions, system-design, web
- Language: Makefile
- Homepage: http://tianpan.co/hacking-the-software-engineer-interview
- Size: 256 KB
- Stars: 2,555
- Watchers: 98
- Forks: 583
- Open Issues: 26
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- jimsghstars - puncsky/system-design-and-architecture - Learn how to design large-scale systems. Prep for the system design interview. (Makefile)
README
System Design and Architecture
> β οΈ 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:
1. π 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.
2. π 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.
3. π€² 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. πΆββοΈ 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](https://cloud.google.com/apis/design).
* Object-oriented design. Its importance is quite overestimated by mediocre engineers.## How to use this book?
* 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*.### System Design in Practice
| Product | Question |
| --- | --- |
| | [Designing Instagram or Pinterest](./en/2016-02-13-crack-the-system-design-interview.md) |
| | [Designing Uber](./en/120-designing-uber.md) | |
| | [How Facebook Scale its Social Graph Store? TAO](./en/49-facebook-tao.md) |
| | [How Netflix Serves Viewing Data?](./en/45-how-to-design-netflix-view-state-service.md) |
| | [How to design robust and predictable APIs with idempotency?](./en/43-how-to-design-robust-and-predictable-apis-with-idempotency.md) |
| | [How to stream video over HTTP for mobile devices? HTTP Live Streaming (HLS)](./en/38-how-to-stream-video-over-http.md) |
| | [Designing a distributed logging system](./en/61-what-is-apache-kafka.md) |
| | [Designing a URL shortener](./en/84-designing-a-url-shortener.md) |
| | [Designing a KV store with external storage](./en/97-designing-a-kv-store-with-external-storage.md) |
| | [Designing a distributed in-memory KV store or Memcached](./en/174-designing-memcached.md) |
| | [Designing Facebook photo storage](./en/121-designing-facebook-photo-storage.md) |
| | [Designing Stock Exchange](./en/161-designing-stock-exchange.md) |
| | [Designing Smart Notification of Stock Price Changes](./en/162-designing-smart-notification-of-stock-price-changes.md) |
| | [Designing Square Cash or PayPal Money Transfer System](./en/167-designing-paypal-money-transfer.md) |
| | [Designing payment webhook](./en/166-designing-payment-webhook.md) |
| | [Designing a metric system](./en/168-designing-a-metric-system.md) |
| | [Designing a recommendation system](./en/140-designing-a-recommendation-system.md) |
| | [Designing Airbnb or a hotel booking system](./en/177-designing-Airbnb-or-a-hotel-booking-system.md) |
| | [Lyft's Marketing Automation Platform -- Symphony](./en/178-lyft-marketing-automation-symphony.md) |
| | [Designing typeahead search or autocomplete](./en/179-designing-typeahead-search-or-autocomplete.md) |
| | [Designing a Load Balancer or Dropbox Bandaid](./en/182-designing-l7-load-balancer.md) |
| | [Fraud Detection with Semi-supervised Learning](./en/136-fraud-detection-with-semi-supervised-learning.md) |
| | [Designing Online Judge or Leetcode](https://tianpan.co/notes/243-designing-online-judge-or-leetcode) |### System Design Theories
* [Introduction to Architecture](./en/145-introduction-to-architecture.md)
* [How to scale a web service?](./en/41-how-to-scale-a-web-service.md)
* [ACID vs BASE](./en/2018-07-26-acid-vs-base.md)
* [Data Partition and Routing](./en/2018-07-21-data-partition-and-routing.md)
* [Replica, Consistency, and CAP theorem](./en/2018-07-24-replica-and-consistency.md)
* [Load Balancer Types](./en/2018-07-23-load-balancer-types.md)
* [Concurrency Model](./en/181-concurrency-models.md)
* [Improving availability with failover](./en/85-improving-availability-with-failover.md)
* [Bloom Filter](./en/68-bloom-filter.md)
* [Skiplist](./en/69-skiplist.md)
* [B tree vs. B+ tree](./en/2018-07-22-b-tree-vs-b-plus-tree.md)
* [Intro to Relational Database](./en/80-relational-database.md)
* [4 Kinds of No-SQL](./en/78-four-kinds-of-no-sql.md)
* [Key value cache](./en/122-key-value-cache.md)
* [Stream and Batch Processing Frameworks](./en/137-stream-and-batch-processing.md)
* [Cloud Design Patterns](./en/2018-07-10-cloud-design-patterns.md)
* [Public API Choices](./en/66-public-api-choices.md)
* [Lambda Architecture](./en/83-lambda-architecture.md)
* [iOS Architecture Patterns Revisited](./en/123-ios-architecture-patterns-revisited.md)
* [What can we communicate in soft skills interview?](./en/63-soft-skills-interview.md)
* [Experience Deep Dive](./en/2018-07-20-experience-deep-dive.md)
* [3 Programming Paradigms](./en/11-three-programming-paradigms.md)
* [SOLID Design Principles](./en/12-solid-design-principles.md)
* How to do capacity planning?### Prepare for an Interview effectively
* 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[[Chinese Edition](./zh-CN/README.md)]
## Who's Tian Pan?
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.
## Join us for further discussion!
* [Telegram](https://t.me/system_design_and_architecture)
* [Discord](https://discord.gg/Pb5YbK3ykN)---
## LicenseGPL v3
If you found this resource helpful, give it a π otherwise contribute to it and give it a βοΈ.