donnemartin/system-design-primer

Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards.

View on GitHub ↗Jump to charts ↓

Summary Information

Updated 50 minutes ago
Added to GitGenius on November 25th, 2024
Created on February 26th, 2017
Open Issues & Pull Requests: 601 (+0)
Number of forks: 57,834
Total Stargazers: 363,803 (+10)
Total Subscribers: 6,845 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 17.4 days
Mean response time: 476.5 days
90th percentile: 2167.4 days
Tracked items: 123

How this project is maintained

Around half of the issues opened in the past year never receive a reply. 98% of open issues come from outside the core team, so the backlog reflects real-world use rather than internal planning. Only 4% of issues opened in the past year have been closed. Three people close 59% of everything that gets resolved.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 268
New in 7 days: 2
Closed in 7 days: 0
Avg open age: 1,459 days
Stale 30+ days: 256
Stale 90+ days: 238

Recent activity

Opened in 7 days: 2
Closed in 7 days: 0
Comments in 7 days: 0
Events in 7 days: 0

Top labels

  • needs-review (214)
  • help wanted (43)
  • translation (23)
  • feature-request (19)
  • user-feedback-wanted (18)
  • bug (13)
  • enhancement (13)
  • question (13)

Most active issues this week

No issue events were indexed in the last 7 days.

Detailed Description

The System Design Primer is a comprehensive educational resource created by donnemartin that teaches large-scale system design principles and prepares candidates for system design interviews. The repository serves as an organized collection of resources addressing the fragmented nature of system design information scattered across the web. It covers fundamental concepts including load balancing, distributed systems, microservices, scalability, performance optimization, and software architecture patterns.

The repository's core purpose is twofold: helping engineers become better designers of scalable systems and providing interview preparation materials. It includes a structured study guide that helps candidates determine what topics to focus on based on their experience level, technical background, and target companies. The guide acknowledges that interview expectations vary significantly depending on candidate seniority, with more experienced candidates and those in architect or team lead roles expected to know more about system design than individual contributors.

A distinctive feature of the System Design Primer is its inclusion of Anki flashcard decks designed to leverage spaced repetition for retaining key concepts. The repository provides three separate decks: a System Design deck, a System Design Exercises deck, and an Object Oriented Design Exercises deck. These flashcards are optimized for on-the-go studying through the Anki platform. The repository also links to a sister project called Interactive Coding Challenges, which provides additional coding interview preparation materials and an additional Anki deck focused on coding problems.

The repository covers an extensive index of system design topics organized hierarchically, including performance versus scalability, latency versus throughput, availability versus consistency, the CAP theorem, consistency patterns, availability patterns, domain name systems, content delivery networks, load balancing strategies, horizontal scaling, reverse proxies, microservices, service discovery, database systems including relational and NoSQL options, caching strategies, asynchronous communication patterns, and various communication protocols. Each section includes trade-off discussions and links to deeper resources.

The repository supports extensive internationalization with translations available in Japanese, Simplified Chinese, Traditional Chinese, Arabic, Bengali, Portuguese, German, Greek, Hebrew, Italian, Korean, Persian, Polish, Russian, Spanish, Thai, Turkish, Vietnamese, and French, with active translation efforts ongoing.

The repository's scope extends beyond theoretical knowledge to practical interview preparation, offering system design interview questions with solutions, object-oriented design interview questions with solutions, discussions, code examples, and diagrams. It includes reference materials such as a powers of two table and latency numbers that programmers should know. The repository also features real-world architectures and company engineering blogs for practical context. The project welcomes contributions for fixing errors, improving sections, adding new sections, and translations, with guidelines provided in the Contributing document.