← Trang chủ

ĐÃ REVIEW & SẴN SÀNG CÀI ĐẶT

System Design Primer

donnemartin/system-design-primer

Cuốn kinh thánh mã nguồn mở về thiết kế hệ thống phân tán quy mô lớn với hơn 363k sao, gồm khung tư duy 4 bước, 8 bài toán kinh điển và Anki flashcards.

TỪNG BƯỚC

Hướng dẫn cài đặt System Design Primer

Hướng dẫn từng bước nằm ngay trên trang này, viết cho người chưa từng cài phần mềm từ GitHub.

Cập nhật 30/9/2026
Ảnh xem trước của System Design Primer trên GitHub
Sao GitHub
377.267
Ngôn ngữ
Python
Đã thêm
22/9/2026

Cách cài đặt System Design Primer từng bước

Làm lần lượt từ trên xuống. Mỗi khung chữ xám là một lệnh: chép nguyên dòng, dán vào cửa sổ dòng lệnh rồi nhấn Enter.

Chưa từng dùng dòng lệnh? Đọc phần này trước (1 phút)

Dòng lệnh (Terminal) là một cửa sổ để gõ lệnh cho máy tính. Bạn không cần hiểu lệnh, chỉ cần chép đúng và dán vào.

  1. Windows: nhấn phím Windows, gõ "PowerShell", rồi nhấn Enter.
  2. macOS: nhấn Command + Space, gõ "Terminal", rồi nhấn Enter.
  3. Linux: nhấn Ctrl + Alt + T.
  4. Chép một lệnh trong hướng dẫn, bấm chuột phải vào cửa sổ vừa mở để dán (macOS: Command + V), rồi nhấn Enter.
  5. Chờ lệnh chạy xong (con trỏ nhấp nháy trở lại ở dòng mới) rồi mới làm lệnh tiếp theo.

Dòng bắt đầu bằng dấu # chỉ là ghi chú, không cần chép. Nếu hiện chữ đỏ báo lỗi, xem mục lỗi thường gặp ở cuối hướng dẫn.

1. System Design Primer là gì?

System Design Primer là một bộ tài liệu học miễn phí về thiết kế hệ thống lớn (cách các trang như Twitter, Amazon chịu được hàng triệu người dùng cùng lúc). Tác giả Donne Martin gom các kiến thức nằm rải rác trên mạng thành một lộ trình có thứ tự, kèm bài tập phỏng vấn có lời giải và ba bộ thẻ ghi nhớ Anki.

Nói thẳng: đây không phải phần mềm để cài. Nó là một "cuốn sách" đặt trên GitHub, viết cho lập trình viên và người sắp phỏng vấn vào công ty công nghệ. Bạn không cần cài gì để đọc. Phần "cài đặt" trong bài này thực chất là: mở đúng chỗ, tải về để đọc khi không có mạng, và nạp thẻ vào Anki.

Tài liệu phát hành theo giấy phép Creative Commons Attribution 4.0 (CC BY 4.0), tức là được dùng và chia sẻ tự do miễn ghi nguồn.

Hợp với bạn nếu:

  • Bạn đang học lập trình hoặc đã đi làm và sắp phỏng vấn vòng "system design".
  • Bạn muốn hiểu các khái niệm như bộ nhớ đệm (cache), cân bằng tải (load balancer), cơ sở dữ liệu SQL và NoSQL.
  • Bạn đọc được tiếng Anh ở mức tài liệu kỹ thuật.

Chưa hợp nếu:

  • Bạn chưa biết lập trình. Tài liệu giả định bạn đã hiểu web, máy chủ và cơ sở dữ liệu ở mức cơ bản.
  • Bạn cần bản tiếng Việt đầy đủ. Hiện chỉ có bản tiếng Anh, tiếng Nhật, tiếng Trung giản thể và tiếng Trung phồn thể là hoàn chỉnh; bản tiếng Việt mới ở dạng đang kêu gọi dịch.
  • Bạn tìm một khóa học có video, bài kiểm tra và chứng chỉ.

2. Cần chuẩn bị gì?

Để đọc trên web, bạn chỉ cần một trình duyệt trên điện thoại hoặc máy tính, và mạng Internet. Không cần tài khoản GitHub.

Những thứ dưới đây chỉ cần nếu bạn muốn làm thêm:

Bạn muốnCần thêmLà gì, tải ở đâu
Học bằng thẻ ghi nhớAnkiỨng dụng thẻ ghi nhớ lặp lại ngắt quãng (nhắc lại đúng lúc bạn sắp quên). Tải tại https://apps.ankiweb.net/
Tải cả bộ về máy và cập nhật bằng một lệnhGitCông cụ tải và đồng bộ mã nguồn. Tải tại https://git-scm.com/downloads
Tự tạo file sách điện tử EPUBPandoc và một môi trường chạy được lệnh bashPandoc là công cụ chuyển đổi định dạng văn bản. Tải tại https://pandoc.org/installing.html

Tất cả đều miễn phí trên máy tính. Không cần khóa API, không cần thẻ thanh toán. Ba bộ thẻ Anki rất nhẹ, tổng cộng chưa tới 1 MB.

3. Cài đặt từng bước

Bước 1: Mở tài liệu trên web (cách dễ nhất)

Mở địa chỉ sau bằng trình duyệt:

https://github.com/donnemartin/system-design-primer

Kéo xuống dưới danh sách file, bạn sẽ thấy tiêu đề "The System Design Primer" và một hình sơ đồ hệ thống. Thấy vậy là đúng. Toàn bộ nội dung chính nằm ngay trên trang này.

Ở dòng trên cùng của nội dung có các liên kết đổi ngôn ngữ. "日本語", "简体中文", "繁體中文" mở ra bản dịch hoàn chỉnh. Các ngôn ngữ còn lại, kể cả "tiếng Việt", chỉ dẫn tới trang thảo luận về việc dịch, chưa phải bản dịch.

Lưu ý: Trên điện thoại, GitHub có thể thu gọn nội dung. Bấm "View all of README.md" (hoặc nút tương tự) để xem đầy đủ.

Bước 2: Tải về để đọc khi không có mạng

Cách không cần dòng lệnh: trên trang repo, bấm nút xanh Code, chọn Download ZIP. Giải nén file vừa tải. Bạn sẽ có một thư mục chứa README.md, thư mục solutions (lời giải), images (hình) và resources (thẻ Anki).

Cách dùng Git (tiện cập nhật về sau):

git clone https://github.com/donnemartin/system-design-primer.git

Chạy xong, một thư mục system-design-primer xuất hiện ở nơi bạn đang đứng. Thấy thư mục này có file README.md là đúng.

Lưu ý: File .md là văn bản Markdown. Mở bằng Notepad thì chỉ thấy chữ và ký hiệu, không thấy hình. Muốn xem đẹp như trên web, hãy mở bằng một trình soạn thảo có chế độ xem trước Markdown, ví dụ Visual Studio Code (https://code.visualstudio.com/).

Bước 3: Cài Anki và nạp ba bộ thẻ

  1. Tải và cài Anki từ https://apps.ankiweb.net/.
  2. Trong thư mục đã tải ở Bước 2, vào resources/flash_cards. Ở đó có ba file:
    • System Design.apkg: khái niệm thiết kế hệ thống.
    • System Design Exercises.apkg: bài tập thiết kế hệ thống.
    • OO Design.apkg: bài tập thiết kế hướng đối tượng.
  3. Bấm đúp vào từng file. Anki sẽ mở và nhập thẻ.

Nếu bạn không tải cả bộ, có thể vào thư mục resources/flash_cards ngay trên GitHub, bấm vào từng file rồi bấm nút tải xuống (biểu tượng mũi tên, "Download raw file").

Thấy gì là đúng: màn hình chính của Anki hiện thêm các bộ thẻ mới với số thẻ cần học trong ngày.

Bước 4 (không bắt buộc): Tạo file sách điện tử EPUB

Repo có sẵn kịch bản generate-epub.sh ghép README và các lời giải thành file EPUB để đọc trên máy đọc sách. Kịch bản cần Pandoc và chạy bằng bash (có sẵn trên macOS và Linux; trên Windows dùng Git Bash đi kèm Git, hoặc WSL).

Đứng trong thư mục system-design-primer rồi chạy:

bash generate-epub.sh

Thấy gì là đúng: màn hình in ra các dòng "Generating ..." rồi "Done!", và trong thư mục có thêm README.epub (tiếng Anh, kèm lời giải) cùng các file EPUB cho bản tiếng Nhật và tiếng Trung.

4. Dùng lần đầu

Tài liệu rất dài. Đừng đọc từ đầu tới cuối. Hãy đi theo thứ tự tác giả gợi ý:

  1. Tìm mục "System design topics: start here". Mục này bảo bạn xem một bài giảng về khả năng mở rộng của Harvard và đọc một loạt bài viết về khả năng mở rộng. Hai thứ này cho bạn bức tranh tổng thể: mở rộng dọc, mở rộng ngang, bộ nhớ đệm, cân bằng tải, nhân bản và phân vùng cơ sở dữ liệu.
  2. Đọc ba cặp đánh đổi: hiệu năng với khả năng mở rộng, độ trễ với thông lượng, tính sẵn sàng với tính nhất quán. Câu được nhắc đi nhắc lại trong tài liệu là: mọi thứ đều là đánh đổi.
  3. Xem bảng "Study guide". Bảng chia ba mức thời gian ôn: ngắn, vừa, dài. Thời gian ngắn thì ưu tiên học rộng và làm vài bài; thời gian dài thì học sâu hơn và làm gần hết các bài.
  4. Học cách trả lời bốn bước ở mục "How to approach a system design interview question": làm rõ yêu cầu và ràng buộc, vẽ thiết kế tổng quát, đi sâu từng thành phần chính, rồi mở rộng và xử lý điểm nghẽn.
  5. Làm thử một bài. Bài dễ bắt đầu nhất là "Design Pastebin.com (or Bit.ly)". Tự viết lời giải theo bốn bước, rồi mở thư mục solutions/system_design/pastebin để so với lời giải mẫu.

Kết quả đầu tiên trông thế nào: bạn có một trang giấy ghi yêu cầu, một sơ đồ khối của hệ thống rút gọn link, và biết mình thiếu phần nào so với lời giải mẫu.

Song song, mở Anki mỗi ngày và học bộ "System Design". Tác giả mô tả các bộ thẻ này là tiện để học khi đang di chuyển.

Tổng cộng có 8 bài thiết kế hệ thống có lời giải (Pastebin, dòng thời gian Twitter, trình thu thập web, Mint.com, mạng xã hội, kho khóa–giá trị cho máy tìm kiếm, xếp hạng bán hàng của Amazon, hệ thống hàng triệu người dùng trên AWS) và 6 bài thiết kế hướng đối tượng. Phần hướng đối tượng được ghi là còn đang phát triển.

5. Lỗi thường gặp và cách sửa

Dấu hiệuNguyên nhânCách sửa
Bấm vào file .apkg trên GitHub nhưng chỉ thấy một trang web, không tải đượcGitHub hiển thị trang thông tin file, không tự tảiBấm nút tải xuống ("Download raw file") ở góc phải trang đó, hoặc tải cả bộ bằng "Download ZIP"
Bấm đúp file .apkg thì máy hỏi mở bằng gìChưa cài Anki, hoặc file chưa gắn với AnkiCài Anki, rồi trong Anki chọn File > Import và trỏ tới file
Gõ git clone báo "git: command not found" hoặc "git is not recognized"Máy chưa có Git, hoặc cửa sổ dòng lệnh mở trước khi càiCài Git, đóng rồi mở lại cửa sổ dòng lệnh. Không muốn cài thì dùng "Download ZIP"
Chạy generate-epub.sh báo "Error: pandoc is not installed."Kịch bản kiểm tra Pandoc trước khi chạyCài Pandoc rồi chạy lại
Mở README.md đã tải về chỉ thấy chữ thô, không có hìnhNotepad không hiển thị MarkdownMở bằng trình soạn thảo có xem trước Markdown, hoặc đọc trên web
File lời giải .ipynb mở ra toàn ký tự khó hiểuĐây là sổ tay Jupyter, không phải văn bản thườngXem trực tiếp trên GitHub (GitHub hiển thị được), hoặc dùng Jupyter nếu bạn đã quen
Một số liên kết tham khảo bị chếtTài liệu trỏ ra nhiều blog bên ngoài đã đổi địa chỉThử dán địa chỉ vào https://web.archive.org/ để xem bản lưu

Nếu phát hiện nội dung sai, tác giả nhận góp ý qua mục Issues và Pull requests của repo; quy định nằm trong file CONTRIBUTING.md.

6. Gỡ cài đặt / cập nhật

Cập nhật:

  • Nếu tải bằng Git, đứng trong thư mục system-design-primer và chạy:
git pull
  • Nếu tải bằng ZIP, tải lại file ZIP mới và thay thư mục cũ.
  • Đọc trên web thì luôn là bản mới nhất, không phải làm gì.

Repo không phát hành theo số phiên bản (trang Releases trống). Nội dung được sửa trực tiếp trên nhánh chính master, nên "bản mới nhất" chính là thứ bạn thấy trên trang repo hôm nay.

Gỡ:

  • Xóa thư mục system-design-primer (hoặc thư mục đã giải nén).
  • Trong Anki, bấm vào biểu tượng bánh răng bên cạnh từng bộ thẻ và chọn Delete để xóa bộ thẻ.
  • Anki, Git, Pandoc gỡ theo cách gỡ ứng dụng thông thường của hệ điều hành, nếu bạn không dùng cho việc khác.

7. Câu hỏi hay gặp

Có mất tiền không? Không. Tài liệu và ba bộ thẻ đều miễn phí theo giấy phép CC BY 4.0. Bạn được chia sẻ lại, miễn ghi nguồn tác giả.

Có cần mạng không? Đọc trên web thì cần. Sau khi tải về (ZIP hoặc Git) và nạp thẻ vào Anki, bạn học được khi không có mạng. Riêng các liên kết "đọc thêm" vẫn cần mạng vì chúng dẫn ra trang ngoài.

Có phải học hết mới đi phỏng vấn được không? Không. Chính tài liệu trả lời câu này: bạn không cần biết mọi thứ. Mức độ bị hỏi phụ thuộc kinh nghiệm, vị trí ứng tuyển và công ty. Lời khuyên là học rộng trước, rồi đào sâu vài mảng.

Có bản tiếng Việt không? Chưa có bản hoàn chỉnh trong repo. Liên kết "tiếng Việt" ở đầu trang dẫn tới một trang thảo luận về việc dịch. Hướng dẫn đóng góp bản dịch nằm trong file TRANSLATIONS.md.

Dữ liệu của tôi có bị gửi đi đâu không? Tài liệu chỉ là văn bản và hình, không chạy chương trình nào trên máy bạn. Anki lưu thẻ ngay trên máy; việc đồng bộ qua tài khoản AnkiWeb là tùy chọn của Anki, không liên quan tới repo này.

GitHot tự viết và kiểm tra lại với tài liệu chính thức của dự án. Thấy bước nào sai hoặc khó hiểu, hãy nhắn cho GitHot qua các kênh ở cuối trang.

XEM TẠI SAO NÓ HOT

Xem review gốc

Quay lại video đã dẫn bạn đến đây.

Xem trên TikTok ↗

Không bỏ lỡ repo tiếp theo

Mỗi repo mới đều có video review kèm hướng dẫn cài đặt tại đây.

Theo dõi trên TikTok ↗