iT邦幫忙

鐵人檔案

2026 iThome 鐵人賽
回列表
Software Development

系統設計就像九頭蛇:打造社群網站的 30 天 系列

系統設計很像在打九頭蛇:以為砍掉了一個瓶頸,下一秒馬上又冒出新的頭。這系列用 30 天,從最陽春的「瀏覽器 -> Server -> Database」出發,看著一個社群網站隨使用者變多、流量變大,逐一解決系統長大時遇到的問題。這不是一份元件清單,而是練習在每個當下看清真正的瓶頸,選出當下最合理的取捨。

鐵人鍊成 | 共 30 篇文章 | 0 人訂閱 訂閱系列文 RSS系列文
DAY 11

Day 11 Notification System 初型

前面幾天,PokeThreads 的架構已經慢慢演化成分散式系統,不過所有功能都還圍繞在「發文、讀文」上。 只有這麼簡單的功能,實在太像古早時期的社群網站,今天...

2026-09-09 ‧ 由 crowley3141 分享
DAY 12

Day 12 Message Queue 不讓客人等

昨天做出了最陽春的 Notification System,採用最直接的同步方式: Charmander -> POST /posts/:id/like...

2026-09-10 ‧ 由 crowley3141 分享
DAY 13

Day 13 Monolith vs Microservices

到目前為止,PokeThreads 已經具備了 Load Balancer、Read Replica、Cache、Stateless Server、CDN 與...

2026-09-11 ‧ 由 crowley3141 分享
DAY 14

Day 14 API Gateway 負責引導

昨天把 Notification 從 PokeThreads 的 Monolith 拆成了獨立的 Notification Service,跟原本的 API S...

2026-09-12 ‧ 由 crowley3141 分享
DAY 15

Day 15 Rate Limiter 控制流量

昨天在 API Gateway 的職責清單裡,提到它很適合順便做 Rate Limiting,但只是輕輕帶過。今天把這件事攤開來講清楚。 為什麼需要限制流量 限...

2026-09-13 ‧ 由 crowley3141 分享
DAY 16

Day 16 資料庫是否該用 NoSQL

PokeThreads 走到今天,已經不是一個單純的 CRUD 小玩具了,但從 Day 2 開始,Database 一直都是同一種選擇,也就是 SQL。這時候很...

2026-09-14 ‧ 由 crowley3141 分享
DAY 17

Day 17 CAP Theorem - 你無法全都要

昨天討論 SQL 該不該換成 NoSQL,最後留下一個疑問,一旦資料開始分散在不同種類的 Storage 上,SQL、NoSQL、Cache 各存一部分。 怎...

2026-09-15 ‧ 由 crowley3141 分享
DAY 18

Day 18 Database Sharding

Day 17 用 CAP Theorem 收尾時提到一句話:這條線會一路貫穿到後面 Sharding、Counter System 這些主題。今天就從 Shar...

2026-09-16 ‧ 由 crowley3141 分享
DAY 19

Day 19 深入探討 Follow 功能

昨天把 Database 拆成多個 Shard,解決了單一 Database 裝不下所有資料的問題。 今天把這個概念套用在一個具體場景上——Follow 功能,...

2026-09-17 ‧ 由 crowley3141 分享
DAY 20

Day 20 Feed 走向大型系統的 Fan-out 做法

今天回頭加強 Feed 功能,看看原本陽春的做法會有什麼問題。 先回顧原本的做法 Day 3 我們做出了最陽春的 Feed 邏輯: SELECT * FROM...

2026-09-18 ‧ 由 crowley3141 分享