Case Studies:系統設計案例分析
這個目錄的軸是**「拆解別人家的技術系統」**。資料來自:
- 各公司的技術部落格(Netflix Tech Blog、Uber Engineering、Stripe Engineering…)
- 技術論文(Google Dynamo、Amazon Aurora、Facebook TAO…)
- 研討會 talks(QCon、AWS re:Invent、KubeCon、RustConf…)
- Open Source 原始碼(PostgreSQL、Redis、Kubernetes、Git…)
跟姊妹目錄的差別:
| 目錄 | 軸 |
|---|
| case-studies/(本目錄) | 拆別人家技術系統(Twitter、K8s 怎麼運作) |
| business-cases/ | 拆別人家商業系統(金流、訂閱、分潤) |
| system-design/ | 系統設計方法論(怎麼從零設計) |
| ops-notes/ | 自己踩過的坑 |
Stage:🌱 seed(還沒寫) / 🌿 growing / 🌳 mature
子目錄規劃
| 主題群 | 案例數 | 子目錄路徑 |
|---|
| C01 社群/動態 | 4 | 先扁平(未達 5) |
| C02 影音串流 | 4 | 先扁平 |
| C03 金融/支付 | 4 | 先扁平 |
| C04 即時通訊 | 4 | 先扁平 |
| C05 搜尋/地圖/派單 | 4 | 先扁平 |
| C06 電商 | 4 | 先扁平 |
| C07 基礎建設 OSS | 8 | case-studies/oss/ |
| C08 AI/ML 系統 | 4 | 先扁平 |
| C09 台灣在地 | 3 | 先扁平(需公開資料) |
C01 社群/動態系統
| # | 案例 | 分析重點 | stage |
|---|
| 01 | Twitter Timeline | Fan-out on write vs read、cache 策略 | 🌱 |
| 02 | Instagram Feed | ML 排序、圖片 CDN | 🌱 |
| 03 | TikTok 推薦引擎 | 短影音、實時推薦、用戶模型 | 🌱 |
| 04 | Threads 遷移 | 從 Instagram 拉新、ActivityPub 整合 | 🌱 |
C02 影音串流
| # | 案例 | 分析重點 | stage |
|---|
| 01 | Netflix CDN 與 Open Connect | CDN 部署、峰值處理 | 🌱 |
| 02 | YouTube 轉碼 Pipeline | 多解析度、adaptive bitrate | 🌱 |
| 03 | Zoom 視訊架構 | Jitter buffer、SFU vs MCU | 🌱 |
| 04 | Twitch 低延遲串流 | LL-HLS vs WebRTC | 🌱 |
C03 金融 / 支付
| # | 案例 | 分析重點 | stage |
|---|
| 01 | Stripe Payment Architecture | Idempotency、冪等性、對帳 | 🌱 |
| 02 | 街口支付結構推估 | 第三方支付、對銀行整合 | 🌱 |
| 03 | Line Pay 結構推估 | 跨境支付、匯率處理 | 🌱 |
| 04 | Plaid / Open Banking | 銀行 API 整合 | 🌱 |
C04 即時通訊
| # | 案例 | 分析重點 | stage |
|---|
| 01 | Discord:Voice Gateway + Guilds | Elixir/Rust、大型公會廣播 | 🌱 |
| 02 | WhatsApp Erlang 架構 | 2 billion users、單機 million connections | 🌱 |
| 03 | Slack 架構演進 | Monolith → 拆分 | 🌱 |
| 04 | Signal E2EE 協議 | Double Ratchet、Sealed Sender | 🌱 |
C05 搜尋 / 地圖 / 派單
| # | 案例 | 分析重點 | stage |
|---|
| 01 | Google Search | 索引、排名、Crawler | 🌱 |
| 02 | Uber Dispatch 派單 | H3 地理索引、實時配對 | 🌱 |
| 03 | Google Maps 路徑規劃 | 圖演算法、Contraction Hierarchies | 🌱 |
| 04 | DoorDash 訂單分派 | 餐廳、外送員、客戶三方協調 | 🌱 |
C06 電商
| # | 案例 | 分析重點 | stage |
|---|
| 01 | Amazon Retail Architecture | Service-oriented、每個團隊一個服務 | 🌱 |
| 02 | Shopee 搶購(雙 11) | 熱點處理、限流 | 🌱 |
| 03 | PChome 24h 物流整合 | 即時庫存、出貨 | 🌱 |
| 04 | Shopify Multi-tenant | SaaS 多租戶、效能隔離 | 🌱 |
C07 基礎建設 / OSS
拆解 open source 原始碼。
| # | 案例 | 分析重點 | 連結 | stage |
|---|
| 01 | PostgreSQL MVCC | 多版本並發控制 | Database | 🌱 |
| 02 | Redis Data Structures | SDS、Dict、Ziplist、Skiplist | redis-data-structures | 🌿 |
| 03 | Kafka Log Architecture | append-only log、partition | — | 🌱 |
| 04 | Kubernetes Control Plane | API Server、etcd、Controller | K8s | 🌿 |
| 05 | Git Internals | Tree、Commit、DAG | Git | 🌿 |
| 06 | Elasticsearch Inverted Index | 倒排索引、分片 | ES | 🌿 |
| 07 | Nginx Event Loop | epoll、master-worker | — | 🌱 |
| 08 | SQLite 單檔資料庫 | 為什麼全世界最多 DB | — | 🌱 |
C08 AI / ML 系統
| # | 案例 | 分析重點 | stage |
|---|
| 01 | OpenAI ChatGPT Architecture 推估 | 大規模 inference、quotas | 🌱 |
| 02 | GitHub Copilot | IDE 整合、latency 控制 | 🌱 |
| 03 | Perplexity:AI Search | Retrieval + Generation | 🌱 |
| 04 | Anthropic Claude:agent 架構 | Tool use、Context management | 🌱 |
C09 台灣在地系統(需公開資料夠多才寫)
| # | 案例 | 來源要求 | stage |
|---|
| 01 | 酷澎 / KKday / Pinkoi 公開技術分享 | 需有 talks / blog | 🌱 |
| 02 | 91APP / Shopline / CYBERBIZ | 需有 tech blog | 🌱 |
| 03 | 玉山銀行 / 中信金 數位轉型 | 需有 conf 分享 | 🌱 |
寫作流程
每篇 case-study 應該:
- 資料來源全部標註(tech blog 連結、paper DOI、talk 影片)
- 區分「確認」vs「推估」:不要把推測寫成事實
- 圖勝於文:架構圖、資料流圖
- 重點是「為什麼這樣設計」:不只 what,要 why
- 結尾取捨:這個系統選了什麼 tradeoff、犧牲了什麼
模板:
# 背景:為什麼這個系統值得拆
# 規模:處理多大流量、多少資料
# 架構圖
# 關鍵設計決策(逐個拆解)
# Tradeoff:選了什麼、犧牲了什麼
# 我們能學到什麼
# 資料來源(reference 全部)
進度統計
- 主題群:9(C01~C09)
- 總案例:約 35
- 🌿 growing:3(K8s、Git、Elasticsearch 已有基礎可延伸)
- 🌱 seed:32
- 🌳 mature:0
下一步
- 先做 C07 基礎建設/OSS:有原始碼可查,事實性強,寫作最穩
- 再做 C01/C04 社群/即時通訊:話題性高、公開資料多
- C09 台灣在地:等公開資料累積