# 系統設計讀書會:內行人才知道的系統設計面試指南, 第一版
## 背景
這半年比較多都是在解探索性的需求需求(例:會議、地圖系統、跨裝置、IoT 通訊),覺得 AI 可以在一開始輔助畫出 PRD ,但身為開發者的責任,還是要負責評價這份系統設計做得好不好,因此想要閱讀系統設計相關的書籍,來拓展自己對不同產品的理解。
前陣子是看到 [codeframer 大大](https://codefarmer.substack.com/p/system-design-beginner-notes) 在踩系統設計的坑,才想說可以試試看~
### 關於這本書
> 這本書是由老牌系統設計頻道 [ByteByteGo](https://bytebytego.com) 出的系統設計書,比較多是在講如何規劃雲端、後端系統等,有興趣可以翻翻看[電子書](https://books.google.com.tw/books?id=Lo1WEAAAQBAJ&pg=PA1&hl=zh-TW&source=gbs_toc_r&cad=2#v=onepage&q&f=false)。

自己也有點興趣如何回答老牌的面試題:
- 設計一個百萬流量的 DB
- 設計爬蟲程式...
### 對讀書會的期待
- **練習系統設計**:希望是一個人準備一個案例,先是讀過背景,然後提出屬於自己的 [PRD](https://docs.google.com/document/d/1mEMDcHmtQ6twzNlpvF-9maNlAcezpWDtCnyIqWkODZs/edit?tab=t.0#heading=h.7ueoyja6ijay),也很想知道架構如何套到程式碼、或是補充實際案例(這一塊書比較缺乏、要花時間補充)。
- **準備面試題**:比較務實還是會回到 -- 如果是你,會如何回答這題系統面試的題目,以及面對實際需求為主~
- **前端跨全端**:由於專有名詞比較多,自己本身也是主要是寫前端,並不是對 backend 細節都很熟,可能也會根據參與者的 Tech Stack 穿插一些如 [AWS DAV-C02](https://aws.amazon.com/tw/certification/certified-developer-associate/) 的先備知識,或是先熟悉基礎設施才會跳進書的內容,如:
- Week1 導論
- 討論:什麼是好的 PRD? 技術文件簡介
- 第三章:系統設計面試框架
- Week2 導論:介紹 AWS 基礎設施 or 網路概論
- Week3 Case1: 百萬流量的系統設計
- Week4 Case2: ...
- 小結
也很期待與不同職能的夥伴一起討論:)
## 預計規劃
### 參考資料
1. [(必)內行人才知道的系統設計面試指南, 第一版](https://www.tenlong.com.tw/products/9789865028855)
2. [(必)PRD Template](https://docs.google.com/document/d/1mEMDcHmtQ6twzNlpvF-9maNlAcezpWDtCnyIqWkODZs/edit?tab=t.0#heading=h.7ueoyja6ijay) -- 用於聚焦想法、規劃用
3. [(選)Ultimate AWS Certified Developer Associate 2025 DVA-C02](https://www.udemy.com/course/aws-certified-developer-associate-dva-c01/?couponCode=MT240725G1) -- AWS 系統簡介
4. [(選)Full Stack for Front-End Engineers, v3](https://frontendmasters.com/courses/fullstack-v3/) -- 自己一開始前端往全端學習的付費參考教材
5. [(其他)架構圖工具:Mermaid](https://mermaid.js.org)
6. [(其他)架構圖工具:PlantUML](https://plantuml.com/zh/)
7. [(其他)簡報工具:Slidev](https://sli.dev)
### 時間規劃
- 成員:不限
- 時間:雙周、3個月~6個月不等,開始時間可能會抓在 10 月
- 內容:以[(必)內行人才知道的系統設計面試指南, 第一版](https://www.tenlong.com.tw/products/9789865028855) 為主,不過為了真的搞懂整本書在說什麼,可能會視參與者的背景、意願調整書單的多寡。
- 參與方式:原則上一個人會導讀一個案例,如果願意的話也可以藉由讀書會練習分享自己的系統設計範例。
- 至少一次導讀 + 一次筆記工。
- 導讀:介紹章節內容,章節為認領制,由於這本書一章就是一個案例,可能視讀書會的週期 & 人數放生某些章節,不過有人認領一定會讀到!
- 導讀方向:例如:章節介紹、面試題、PRD、其他參考資料
- 筆記工:讀書會結束後統整摘要、遇到的問題&共筆。
> 頻率是雙週一
> 21:00 開始
| 日期 | 章節名稱 | 導讀人 | 筆記工 | 簡報連結 |
|------------|-------------------------------------------|--------|--------|------|
| | 第1章|使用者人數 —— 從零到百萬規模 | 備:雷N | | |
| 10/13 | 第2章|粗略的估算 | 備:雷N | Murky | [筆記](https://hackmd.io/yiTUbrJRQSm5nY7z5ciUXA?view) |
| | 第3章|系統設計面試的框架 | Sam | 柏毅 | |
| | 第4章|設計網路限速器 | 則元 | Murky | [主講筆記](https://impartial-marble-6cc.notion.site/2928c32a5fa780a6a9bfe61ceaf0e819?source=copy_link) 、[隨堂筆記](https://hackmd.io/79bjkPX_TV6Exde0n9e-Wg?view) |
| | 第5章|設計具有一致性的雜湊做法 | 柏毅 | | [主講筆記](https://www.notion.so/CHAPTER-5-DESIGN-CONSISTENT-HASHING-2a62b522f23580c681accb71a85b1ed1?source=copy_link) |
| | 第6章|設計鍵值儲存系統 | 柏毅 | 上竣 | [主講筆記](https://www.notion.so/Ch6-Design-A-Key-value-Store-2b52b522f2358011aafcc9fee93a4275) |
| | Vol 2 Ch 10 <br> Leader Board | 雷N | | | |
| 12/22 | 第7章|設計可用於分散式系統的唯一ID生成器 | Murky | Ray Xie | [主講筆記](https://hackmd.io/@HWjmtqGJQRmj4pwClBcCKg/BkYHi_41bx) |
| 1/5 | 第8章|設計短網址生成器 | Murky | 則元 | [主講筆記](https://hackmd.io/@HWjmtqGJQRmj4pwClBcCKg/B1mC1fBmbl) [隨堂筆記](https://hackmd.io/@QqLoNVPKT3SL2KxU6B-1ng/Hyi7x4tN-g) |
| 1/19 | 第9章|設計網路爬蟲 | Ray Xie | | |
| 2/2 | Vol 2 Ch 12 <br> Digital Wallet | 雷N | | | |
| 3/9 | 第10章|設計通知系統 | 小許 | Steven | |
| 3/30 | 第11章|設計動態訊息系統 | Steven | | [簡報](https://docs.google.com/presentation/d/1gs1cEZlzeKCP0CPU5KEUZMpOy4p3q6HeMKEn428FV8k/edit?usp=sharing) |
| 4/13 | 第12章|設計聊天系統 | 上竣 | Blue | |
| 4/27 | Vol 2 Ch 13 <br> Stock Exchange | 雷N | | | |
| 5/11 | 第13章|設計搜尋文字自動補全系統 | Leo | 小許 | |
| 5/25 | 第14章|設計Youtube | Blue | Sam | |
| 6/8 | 第15章|設計GOOGLE DRIVE | Leo | | |
## 讀書會規則:
- 認領該章節的導讀人有**閱讀責任**及**主持責任**,需要讀完該章節並做筆記(簡報)於讀書會期間分享螢幕畫面帶著與會者導讀,並自行出題目引導大家回答與討論。
- 若導讀人需要請假請於讀書會舉行前一週「自行」到讀書會組別頻道中尋求章節交換。
- 認領該筆記工的人需紀錄讀書會期間的討論,並將筆記上傳至 [GitHub 討論區](https://github.com/Tech-Book-Community)。
- 成員都至少導讀人及筆記工各當一次,意即本次讀書會最多招收 xx 人,這 xx 人都當過一次導讀人及筆記工,最少 x 人,最少人數則會各當過 x 次。
- 若讀書會成員需要請假請自行於讀書會組別頻道中請假。
- 成為「讀書會成員」請務必持有「書籍」(實體、電子皆可),**「旁聽者」不需要準備書籍,也不需要認領章節**。
- **若你在讀書會期間有可能會請假兩次以上,建議以「旁聽者」身份參加(意即不用認領章節,時間到上線即可)。**
- 預計 xx 晚上 20:30 ~ 22:00 舉行第一次讀書會,每雙週 x 舉辦一次,共舉辦 x 次 x 結束。
## 導讀人流程:
- 自我介紹
- 前次回顧
- 本次導讀
- 引導成員每個人至少發言一次
- 自行出本次章節的題目讓每個人至少回答一次
- 成員問題討論
- 引導成員對本次章節的疑問及討論
- 成員回饋導讀人
- 次回日期、章節導讀人及筆記工預告
## 章節
- 日期:
- 導讀人:
- 筆記工:
- 請假:
- 缺席:
- 簡報: