iT邦幫忙

鐵人檔案

2026 iThome 鐵人賽
回列表
Software Development

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

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

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

Day 21 一個人讓系統爆炸:Hot User 與 Hot Post

昨天在討論 Fan-out 時提到,擁有幾千萬追蹤者的帳號一發文,就可能讓 Fan-out on Write 的寫入量瞬間爆炸,所以今天就把這個狀況抽出來單獨討...

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

Day 22 深入探討 Search System

我們的 PokeThreads 走到現在,已經是一個具備 Load Balancer、Stateless Server、Sharded Database、Cac...

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

Day 23 Counter System 如何 Scaling

PokeThreads 裡有一種資料,我們從很早就開始提到,卻從來沒有認真設計過,就是計數(Counter)。 Day 8 討論 Cache 的時候,用 Lik...

2026-09-21 ‧ 由 crowley3141 分享
DAY 24

Day 24 深入 Notification System

Day 11 我們做出了最陽春的 Notification,Day 12 用 Message Queue 把它從同步流程裡拆了出去: Like API 只負責...

2026-09-22 ‧ 由 crowley3141 分享
DAY 25

Day 25 Observability 讓你知道系統壞在哪

走過這麼多次的設計與迭代,PokeThreads 已經不是一個「單純」的系統了。 一個 GET /feed Request,背後可能經過: API Gatewa...

2026-09-23 ‧ 由 crowley3141 分享
DAY 26

Day 26 社群網站的 Frontend

前面內容幾乎都在講後端,今天把視角切回前端。 回想 Day 3,我們的 Feed API GET /feed?cursor=abc123&limit=2...

2026-09-24 ‧ 由 crowley3141 分享
DAY 27

Day 27 Multi-region 與 Data Center

到目前為止,我們的 PokeThreads 已是一套有相當程度的分散式系統,元件包含 Load Balancer、Stateless Server、Read R...

2026-09-25 ‧ 由 crowley3141 分享
DAY 28

Day 28 Threat Modeling 研究哪裡會出包

前面我們都在處理使用者變多的問題。今天討論資安層面,換一個角度提問: 「如果有人存心想搞垮這個系統,或是想從裡面偷走一些不該拿到的東西,他會從哪裡下手?」...

2026-09-26 ‧ 由 crowley3141 分享
DAY 29

Day 29 資安不能只靠一道牆:Security Architecture

昨天盤點了 PokeThreads 的攻擊面,列出幾個明確的缺口:擋不住分散式的爬蟲與洗版、看不懂檔案內容、管不到內部服務之間的信任、也完全沒有「這個人能不能做...

2026-09-27 ‧ 由 crowley3141 分享
DAY 30

Day 30 從一台 Server 到今天的系統設計回顧

30 天前,這個系列是從一句話開始的: System Design 的第一步,不是畫架構圖,而是先把問題問清楚。 今天是最後一天,與其再加一個新元件,不如看...

2026-09-28 ‧ 由 crowley3141 分享