Move images and solution under docs

pull/1081/head
Ido777 2025-05-11 15:03:38 +03:00 committed by Ido Ophir
parent cb28c0d58c
commit 91b67a57f0
145 changed files with 90 additions and 135 deletions

View File

@ -15,6 +15,9 @@ Under the following terms:
- **Attribution**: You must give appropriate credit, provide a link to the license, and indicate if changes were made.
## New Content
All modifications and additions in [System Design Primer Update](https://github.com/ido777/system-design-primer-update) are made in the spirit of open collaboration and innovation and for now are licensed under the same license as the original content but this might change in the future.

View File

@ -1,12 +1,45 @@
# System Design Primer Update
# System Design Primer: Update Edition
## Overview
Welcome to the **System Design Primer: Update Edition**. This project is an evolution of the original [System Design Primer](https://github.com/donnemartin/system-design-primer), tailored for the era of 2025 & Generative AI.
## Introduction
### 1. Software Development in 2025: Kubernetes & Generative AI
The world of software development has evolved dramatically since 2017. Today, systems are designed for distribution from day one, powered by Kubernetes, container orchestration, and the rise of Generative AI. This shift demands fresh perspectives on architecture, scalability, and operational practices.
### 2. Why We Need an Updated Edition
- **Outdated Core Content**: The majority of the original material dates back to 2017. Foundational chapters on scaling, fault tolerance, and microservices were written before Kubernetes became ubiquitous.
- **Generative AI Impact**: Emerging AI-driven patterns—from inference pipelines to LLM-powered observability—are not covered in the legacy primer. Incorporating these topics will keep the guide relevant.
- **Stagnant Maintenance**: Even minor fixes—typo corrections, link updates, and broken URL patches—have gone unaddressed for at least two years. Examples include [is this awesome repo no longer been updated?](https://github.com/donnemartin/system-design-primer/issues/840) that was opened at **Feb 2024** or [Indieflashblog link is dead](https://github.com/donnemartin/system-design-primer/issues/501) that was opened at **Jan 2021**.
### 3. Community Call to Action
The original repo served countless learners and interview candidates, but its current lack of maintenance makes it effectively obsolete. If you find value in revitalizing this resource:
- ⭐ **Star this fork** so it gains visibility
- 📝 **Contribute fixes** for typos, link repairs, and outdated examples
- 💡 **Submit enhancements** on Kubernetes best practices, AI-powered architectures, and modern tooling
Together, we can create a state-of-the-art primer that reflects the realities of cloud-native, AI-augmented system design in 2025 and beyond.
## What's New?
See [System Design at a Glance]([./design-glance.md](https://github.com/ido777/system-design-primer-update/blob/main/CHANGELOG.md)) for a comprehensive list of changes.
## Here to Learn
Welcome! This is the official English version of the System Design Primer Update which is a new version of the System Design Primer.
👉 Start here: [Study Guide](./study_guide.md)
👉 The System Design Primer Update [README](./README.md)
👉 Solve System Design Interview Questions [Solutions](./solutions.md)
👉 Solve System Design Interview Questions [Questions & Solutions](./solutions.md)
👉 Identified Gaps while solving read the relevant sections in [System Design at a Glance](./design-glance.md)
If you're interested in contributing or translating, check out the [contribution guidelines](../CONTRIBUTING.md) (coming soon).
If you're interested in contributing or translating, check out the [contribution guidelines](https://github.com/ido777/system-design-primer-update/blob/main/CONTRIBUTING.md).

View File

@ -102,65 +102,6 @@ flowchart TB
style Assess fill:#FFF0F5,stroke:#993366,stroke-width:4px,rx:6,ry:6
```
🗺️ Table of Contents
- [System Design Interview Study Guide](#system-design-interview-study-guide)
- [Understand What a System Design Interview Is *Really* About](#understand-what-a-system-design-interview-is-really-about)
- [Cracking the system](#cracking-the-system)
- [A Strategic Framework for System Design Interview Preparation](#a-strategic-framework-for-system-design-interview-preparation)
- [Interviewer's perspective.](#interviewers-perspective)
- [Interviewer's Goals in System Design Interview](#interviewers-goals-in-system-design-interview)
- [Alex Xu's four-phase framework for the system design interview](#alex-xus-four-phase-framework-for-the-system-design-interview)
- [From Insight to Interview Mastery](#from-insight-to-interview-mastery)
- [Critical Behaviors in the Interview Room](#critical-behaviors-in-the-interview-room)
- [✅ ABC Cheat Codes - A way to memorize during the interview](#-abc-cheat-codes---a-way-to-memorize-during-the-interview)
- [🔁 Interview ABC Loop](#-interview-abc-loop)
- [🎯 ABC for Preparation](#-abc-for-preparation)
- [🗣️ ABC Dialogue Loop](#-abc--dialogue-loop)
- [🧠 ABC - Thinking Process](#-abc---thinking-process)
- [Phase 1: Understand the Problem \& Establish Design Scope](#phase-1-understand-the-problem--establish-design-scope)
- [🎯 Interviewer's Goal](#-interviewers-goal)
- [✅ Candidate's Strategy](#-candidates-strategy)
- [🧭 Phase one Ask ABC - Ask wide open questions on the below subjects:](#-phase-one-ask-abc---ask-wide-open-questions-on-the-below-subjects)
- [🔍 Example Dialogue (Pastebin)](#-example-dialogue-pastebin)
- [🧭 For more examples of the scoping dialogue](#-for-more-examples-of-the-scoping-dialogue)
- [🧭 Phase one Breakdown ABC - Brief the requirements with breakdown at mind:](#-phase-one-breakdown-abc---brief-the-requirements-with-breakdown-at-mind)
- [🔍 Example Breakdown (Pastebin)](#-example-breakdown-pastebin)
- [Phase 2: Propose a High-Level Design \& Get Buy-In](#phase-2-propose-a-high-level-design--get-buy-in)
- [🎯 Interviewer's Goal](#-interviewers-goal-1)
- [🛠️ Candidate's Strategy](#-candidates-strategy)
- [How to create the high level design](#how-to-create-the-high-level-design)
- [Optional: use cases --\> Sequence diagram](#optional-use-cases-----sequence-diagram)
- [Important: Actually we can use mermaid to draw the sequence diagram, maybe even in the interview room.](#important-actually-we-can-use-mermaid-to-draw-the-sequence-diagram-maybe-even-in-the-interview-room)
- [Background tasks](#background-tasks)
- [🧭 Phase two ABC - Propose a high-level design](#-phase-two-abc---propose-a-high-level-design)
- [Block diagram](#block-diagram)
- [Get buy-in](#get-buy-in)
- [Phase 2.5: After Gaining Buy-In and Before the Deep Dive](#phase-25-after-gaining-buy-in-and-before-the-deep-dive)
- [🎯 Interviewers Goal: **Decide Whats Next**](#-interviewers-goal-decide-whats-next)
- [✅ Candidates Strategy: **Steer the Conversation Strategically**](#-candidates-strategy-steer-the-conversation-strategically)
- [Phase 3: Deep Dive into Key Components](#phase-3-deep-dive-into-key-components)
- [🎯 Interviewer's Goal](#--interviewers-goal)
- [✅ Candidate's Strategy](#-candidates-strategy-1)
- [🧭 ABC Process for Phase 3](#-abc-process-for-phase-3)
- [Phase 4: Wrap Up](#phase-4-wrap-up)
- [🎯 Interviewer's Goal](#--interviewers-goal-1)
- [✅ Candidate's Strategy](#-candidates-strategy-2)
- [🧭 ABC Process for Phase 4](#-abc-process-for-phase-4)
- [Gap Assessment](#gap-assessment)
- [System design interview practice](#system-design-interview-practice)
- [System design knowledge](#system-design-knowledge)
- [Refresh Your knowledge](#refresh-your-knowledge)
- [Personal Learning Plan](#personal-learning-plan)
- [System design interview](#system-design-interview)
- [Timeline matters](#timeline-matters)
- [System design knowledge](#system-design-knowledge-1)
- [Timeline matters](#timeline-matters-1)
- [Learning Loop](#learning-loop)
- [Repetition is the mother of all skills](#repetition-is-the-mother-of-all-skills)
- [FAQ](#faq)
- [Source(s) and further reading](#sources-and-further-reading)
- [References](#references)
## Understand What a System Design Interview Is *Really* About
@ -183,8 +124,8 @@ Many candidates focus on memorizing architectures instead of engaging in a colla
---
# Cracking the system
## A Strategic Framework for System Design Interview Preparation
## Cracking the system
### A Strategic Framework for System Design Interview Preparation
---
@ -206,7 +147,7 @@ Don't worry - we will go into details in the next sections, but for now let's ju
---
### Interviewer's perspective.
#### Interviewer's perspective.
Before talking about the solution - system design interview guide, let's understand the problem.
The interviewer decides on your success in the interview, so let's reverse engineer the process of the system design interview from the interviewer point of view.
@ -218,7 +159,7 @@ The limited time is a challenge for the interviewer, therefore the interviewer w
Understand the interviewer's goals and triggers will help you to prepare for the interview and to be more effective during the interview.
### Interviewer's Goals in System Design Interview
#### Interviewer's Goals in System Design Interview
1. **Evaluate Communication and Clarification Skills**
During the *problem clarification* phase, the interviewer wants to see if the candidate can ask the right questions, uncover hidden constraints, and frame the problem with precision — just like they would in real-world ambiguity.
@ -370,7 +311,7 @@ Communicate Your Thoughts Effectively
# Phase 1: Understand the Problem & Establish Design Scope
## Phase 1: Understand the Problem & Establish Design Scope
### 🎯 Interviewer's Goal
@ -522,7 +463,7 @@ We will use this structure later on to create the high level design. However at
Another goal is to verify that we have all the details we need to start the high level design. We want the high level be a straight forward step that is driven from the requirements (more on this in the next section).
# Phase 2: Propose a High-Level Design & Get Buy-In
## Phase 2: Propose a High-Level Design & Get Buy-In
### 🎯 Interviewer's Goal
@ -753,7 +694,7 @@ Heres an improved and clearer version of your paragraph, preserving all the o
---
## Phase 2.5: After Gaining Buy-In and Before the Deep Dive
### Phase 2.5: After Gaining Buy-In and Before the Deep Dive
> This phase is not part of Alex Xus original framework but has been added to emphasize a crucial **pivot** point in the interview process — the transition from high-level design to a deep dive.
@ -785,7 +726,7 @@ These are **common areas of discussion** that apply to many designs. Mastering t
# Phase 3: Deep Dive into Key Components
## Phase 3: Deep Dive into Key Components
### 🎯 Interviewer's Goal
@ -971,3 +912,4 @@ More (original repo) resources:
* [The system design interview](http://www.hiredintech.com/system-design)
* [Intro to Architecture and Systems Design Interviews](https://www.youtube.com/watch?v=ZgdS0EUmn70)
* [System design template](https://leetcode.com/discuss/career/229177/My-System-Design-Template)

View File

Before

Width:  |  Height:  |  Size: 100 KiB

After

Width:  |  Height:  |  Size: 100 KiB

View File

Before

Width:  |  Height:  |  Size: 252 KiB

After

Width:  |  Height:  |  Size: 252 KiB

View File

Before

Width:  |  Height:  |  Size: 210 KiB

After

Width:  |  Height:  |  Size: 210 KiB

View File

Before

Width:  |  Height:  |  Size: 108 KiB

After

Width:  |  Height:  |  Size: 108 KiB

View File

Before

Width:  |  Height:  |  Size: 87 KiB

After

Width:  |  Height:  |  Size: 87 KiB

View File

Before

Width:  |  Height:  |  Size: 168 KiB

After

Width:  |  Height:  |  Size: 168 KiB

View File

Before

Width:  |  Height:  |  Size: 243 KiB

After

Width:  |  Height:  |  Size: 243 KiB

View File

Before

Width:  |  Height:  |  Size: 66 KiB

After

Width:  |  Height:  |  Size: 66 KiB

View File

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

View File

Before

Width:  |  Height:  |  Size: 212 KiB

After

Width:  |  Height:  |  Size: 212 KiB

View File

Before

Width:  |  Height:  |  Size: 189 KiB

After

Width:  |  Height:  |  Size: 189 KiB

View File

Before

Width:  |  Height:  |  Size: 167 KiB

After

Width:  |  Height:  |  Size: 167 KiB

View File

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 44 KiB

View File

Before

Width:  |  Height:  |  Size: 482 KiB

After

Width:  |  Height:  |  Size: 482 KiB

View File

Before

Width:  |  Height:  |  Size: 249 KiB

After

Width:  |  Height:  |  Size: 249 KiB

View File

Before

Width:  |  Height:  |  Size: 290 KiB

After

Width:  |  Height:  |  Size: 290 KiB

View File

Before

Width:  |  Height:  |  Size: 1.8 MiB

After

Width:  |  Height:  |  Size: 1.8 MiB

View File

Before

Width:  |  Height:  |  Size: 543 KiB

After

Width:  |  Height:  |  Size: 543 KiB

View File

Before

Width:  |  Height:  |  Size: 194 KiB

After

Width:  |  Height:  |  Size: 194 KiB

View File

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 36 KiB

View File

Before

Width:  |  Height:  |  Size: 127 KiB

After

Width:  |  Height:  |  Size: 127 KiB

View File

Before

Width:  |  Height:  |  Size: 160 KiB

After

Width:  |  Height:  |  Size: 160 KiB

View File

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 41 KiB

View File

Before

Width:  |  Height:  |  Size: 62 KiB

After

Width:  |  Height:  |  Size: 62 KiB

View File

Before

Width:  |  Height:  |  Size: 105 KiB

After

Width:  |  Height:  |  Size: 105 KiB

View File

Before

Width:  |  Height:  |  Size: 315 KiB

After

Width:  |  Height:  |  Size: 315 KiB

View File

Before

Width:  |  Height:  |  Size: 334 KiB

After

Width:  |  Height:  |  Size: 334 KiB

View File

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 35 KiB

View File

Before

Width:  |  Height:  |  Size: 180 KiB

After

Width:  |  Height:  |  Size: 180 KiB

View File

Before

Width:  |  Height:  |  Size: 111 KiB

After

Width:  |  Height:  |  Size: 111 KiB

View File

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View File

Before

Width:  |  Height:  |  Size: 1.8 MiB

After

Width:  |  Height:  |  Size: 1.8 MiB

View File

Before

Width:  |  Height:  |  Size: 139 KiB

After

Width:  |  Height:  |  Size: 139 KiB

View File

Before

Width:  |  Height:  |  Size: 505 KiB

After

Width:  |  Height:  |  Size: 505 KiB

View File

Before

Width:  |  Height:  |  Size: 6.8 MiB

After

Width:  |  Height:  |  Size: 6.8 MiB

View File

Before

Width:  |  Height:  |  Size: 145 KiB

After

Width:  |  Height:  |  Size: 145 KiB

View File

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 58 KiB

View File

Before

Width:  |  Height:  |  Size: 147 KiB

After

Width:  |  Height:  |  Size: 147 KiB

View File

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

Before

Width:  |  Height:  |  Size: 1.3 MiB

After

Width:  |  Height:  |  Size: 1.3 MiB

View File

@ -1,62 +1,11 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0; url=en/" />
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>Language Selector</title>
<style>
body {
font-family: sans-serif;
padding: 2rem;
text-align: center;
}
select {
font-size: 1rem;
padding: 0.5rem;
}
</style>
<title>Redirecting...</title>
</head>
<body>
<h1>🌍 Select Your Language</h1>
<p>You will be redirected to the selected documentation language.</p>
<select id="languageSelect">
<option value="en/">English</option>
<option value="zh-Hans/">简体中文 (Simplified Chinese)</option>
<option value="zh-TW/">繁體中文 (Traditional Chinese)</option>
</select>
<br/><br/>
<button onclick="redirectToSelected()">Go</button>
<script>
const supportedLangs = {
'zh-Hans': 'zh-Hans/',
'zh-CN': 'zh-Hans/',
'zh': 'zh-Hans/',
'zh-TW': 'zh-TW/',
'en': 'en/'
};
function getBrowserLangFolder() {
const lang = navigator.language || navigator.userLanguage || 'en';
return supportedLangs[lang] || 'en/';
}
function redirectToSelected() {
const folder = document.getElementById('languageSelect').value;
window.location.href = folder;
}
// Auto-redirect if landing directly
window.onload = function () {
if (!window.location.hash && window.location.pathname.endsWith('/index.html')) {
const preferred = getBrowserLangFolder();
window.location.href = preferred;
}
};
</script>
<p>If you are not redirected automatically, <a href="en/">click here</a>.</p>
</body>
</html>

View File

Before

Width:  |  Height:  |  Size: 290 KiB

After

Width:  |  Height:  |  Size: 290 KiB

View File

Before

Width:  |  Height:  |  Size: 119 KiB

After

Width:  |  Height:  |  Size: 119 KiB

View File

Before

Width:  |  Height:  |  Size: 211 KiB

After

Width:  |  Height:  |  Size: 211 KiB

View File

Before

Width:  |  Height:  |  Size: 83 KiB

After

Width:  |  Height:  |  Size: 83 KiB

View File

Before

Width:  |  Height:  |  Size: 108 KiB

After

Width:  |  Height:  |  Size: 108 KiB

View File

Before

Width:  |  Height:  |  Size: 60 KiB

After

Width:  |  Height:  |  Size: 60 KiB

View File

Before

Width:  |  Height:  |  Size: 213 KiB

After

Width:  |  Height:  |  Size: 213 KiB

View File

Before

Width:  |  Height:  |  Size: 78 KiB

After

Width:  |  Height:  |  Size: 78 KiB

View File

Before

Width:  |  Height:  |  Size: 280 KiB

After

Width:  |  Height:  |  Size: 280 KiB

View File

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

View File

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 43 KiB

View File

Before

Width:  |  Height:  |  Size: 117 KiB

After

Width:  |  Height:  |  Size: 117 KiB

View File

Before

Width:  |  Height:  |  Size: 173 KiB

After

Width:  |  Height:  |  Size: 173 KiB

View File

Before

Width:  |  Height:  |  Size: 180 KiB

After

Width:  |  Height:  |  Size: 180 KiB

View File

Before

Width:  |  Height:  |  Size: 191 KiB

After

Width:  |  Height:  |  Size: 191 KiB

View File

Before

Width:  |  Height:  |  Size: 316 KiB

After

Width:  |  Height:  |  Size: 316 KiB

View File

Before

Width:  |  Height:  |  Size: 128 KiB

After

Width:  |  Height:  |  Size: 128 KiB

View File

Before

Width:  |  Height:  |  Size: 59 KiB

After

Width:  |  Height:  |  Size: 59 KiB

View File

Before

Width:  |  Height:  |  Size: 335 KiB

After

Width:  |  Height:  |  Size: 335 KiB

View File

Before

Width:  |  Height:  |  Size: 185 KiB

After

Width:  |  Height:  |  Size: 185 KiB

View File

Before

Width:  |  Height:  |  Size: 194 KiB

After

Width:  |  Height:  |  Size: 194 KiB

View File

Before

Width:  |  Height:  |  Size: 108 KiB

After

Width:  |  Height:  |  Size: 108 KiB

View File

@ -16,8 +16,7 @@ plugins:
default_language: en
languages:
en: English
zh: 简体中文
zh-Hant: 繁體中文
markdown_extensions:
- admonition
@ -34,3 +33,32 @@ markdown_extensions:
- pymdownx.tasklist
- toc:
permalink: true
nav:
- Home: en/index.md
- About: https://github.com/ido777/system-design-primer-update/blob/main/README.md
- Contributing: https://github.com/ido777/system-design-primer-update/blob/main/CONTRIBUTING.md
- License: https://github.com/ido777/system-design-primer-update/blob/main/LICENSE.md
- Changelog: https://github.com/ido777/system-design-primer-update/blob/main/CHANGELOG.md
- English:
- Overview: en/index.md
- Start Here: en/study_guide.md
- System Design at a Glance: en/design-glance.md
- 简体中文 (Simplified Chinese):
- 简体中文主页: zh/design-glance.md
- 繁體中文 (Traditional Chinese):
- 繁體中文首頁: zh-Hant/design-glance.md
- العربية (Arabic):
- الصفحة الرئيسية: ar/design-glance.md
- 日本語 (Japanese):
- 日本語のホーム: ja/design-glance.md
- Türkçe (Turkish):
- Türkçe Anasayfa: tr/design-glance.md