部落格文章
【從一台 Server 到分散式架構】第 12 篇:第一個 Microservice——服務邊界與 API Gateway
單體的痛苦已經確認了,但「拆微服務」說起來容易,做起來難。到底要從哪裡下刀?服務邊界怎麼劃才不會越拆越亂?拆完之後,外面的世界要怎麼和這一堆服務溝通?這篇帶著小明,真正動手拆出第一個 Microservice。
2026-03-19
【從一台 Server 到分散式架構】第 11 篇:單體開始痛苦——一改 code 全站都要 deploy
系統越來越大,功能越來越多,小明他們的「單體大程式」開始遇到瓶頸。不是效能問題,而是開發與部署的痛苦:改個小地方也要全站重傳、一人寫錯全站掛掉。這篇來聊聊為什麼我們會開始考慮「拆分服務」。
2026-03-18
【從一台 Server 到分散式架構】第 10 篇:分散式世界的三選二——CAP 定理
當系統跨越多台機器、多個地區運作,你沒辦法同時擁有完美的一致性、可用性、與分區容錯。你只能三選二。這篇用開分店、帳本同步的比喻,帶你理解 CAP 定理,以及實務上大家的取捨。
2026-03-17
【從一台 Server 到分散式架構】第 09 篇:兩間廚房帳本只有一本——多台後端的狀態問題
把網站擴充成多台伺服器後,卻發生「登入後重整網頁又被登出」的詭異 Bug?這是因為每一台伺服器各自記住了不同的「狀態」。這篇我們來聊聊什麼是有狀態(Stateful)與無狀態(Stateless),以及分散式系統如何處理 Session。
2026-03-16
【從一台 Server 到分散式架構】第 08 篇:訂單太多廚房做不完——Message Queue 登場
當瞬間湧入大量訂單,廚房來不及做又不能拒絕客人怎麼辦?引入「排隊區」讓訂單一張張慢慢做。這篇來談 Message Queue(訊息佇列)如何做到非同步解耦與削峰填谷,保護脆弱的資料庫與後端。
2026-03-15
【從一台 Server 到分散式架構】第 07 篇:發信拖慢整個網站——非同步與背景任務
每次有人買課,系統都要發 Email 確認信。但寄信 API 很慢,導致使用者結帳後看著轉圈圈等很久。把「寄信」這種耗時但不需馬上看到結果的任務,交給背後的專人(Worker)處理,這就是同步與非同步的差別。
2026-03-14
【從一台 Server 到分散式架構】第 06 篇:共用一本帳本太慢——讀寫分離與複製
把常問的菜單寫在 Redis 擋住了查詢的壓力,但如果是真正需要寫入帳本的動作(下單、註冊)變多,大家還是要排隊等同一本帳本。這篇來談讀多寫少系統的必經之路:讀寫分離與主從複製。
2026-03-13
【從一台 Server 到分散式架構】第 05 篇:常被問的菜單寫在小黑板——Redis 與快取
每次有人進首頁查「精選課程」,資料庫都要翻整本帳本找出來算一次。既然大家都常看且不常變,不如把這些熱門資料寫在小黑板(Redis)上。這篇來談什麼該快取、快取失效策略,以及常見的打穿與雪崩危機。
2026-03-12
【從一台 Server 到分散式架構】第 04 篇:資料庫變慢了——索引與查詢優化
課程列表、熱門排行查詢變慢,DB 回應時間拉長。帳本越翻越厚,常查的項目若沒做目錄就會慢。加索引、改 query、減少不必要的 join,先在不加機器的前提下把 DB 負擔降下來,為後面的讀寫分離與快取打底。
2026-03-11
【從一台 Server 到分散式架構】第 03 篇:要升級機器,還是多加幾台?——垂直 vs 水平擴充
單機快撐不住了,要先升級 CPU、記憶體,還是加第二台、第三台後端?什麼叫垂直擴充、水平擴充?若選水平,前面要擺誰來分流?Nginx 做負載平衡與反向代理的角色,以及選水平之後會遇到的新問題。
2026-03-10
【從一台 Server 到分散式架構】第 02 篇:Server CPU 爆了——認識負載與瓶頸
用戶變多了,首頁變慢、有時 504。什麼叫負載、什麼叫瓶頸?怎麼判斷是後端還是資料庫在扛不住?從變慢、超時、錯誤變多裡,學會「感覺」到系統需要改變。
2026-03-09
【從一台 Server 到分散式架構】第 01 篇:小明他們做了一個網站——一前、一後、一 DB
系統設計系列的起點:用線上課程平台來說明一個前端、一個後端、一個資料庫。請求怎麼走?什麼叫單體架構?為什麼在用戶少的時候就夠用?
2026-03-08
【從一台 Server 到分散式架構】系列序:為什麼我要寫系統設計?
一個前端工程師的系統設計學習之旅。為什麼系統設計重要?這個系列會討論什麼?用一個網站長成帝國的故事,從一前一後一 DB 走到分散式架構,給大家一個宏觀的起點。
2026-03-07
【心得】2025 WebConf - 工程師奶爸也非常需要的生存指南
從追求完美平衡到接受失衡,從自我懷疑到找回初心。Hannah 的分享讓我明白,在育兒與職涯的拉扯中,我們並不孤單。
2025-12-14

【演講】接案101:不思考就接案?踏錯腳步變災難!
接案前先思考,準備充足才不會慌!從動機檢視到風險評估,從期待調整到準備清單,幫你在跳入接案世界前,先做好充分的思考和準備,讓接案之路走得更順暢。
2025-10-19

React 狀態管理系列02 - 原生狀態管理與外部套件的必要性
從 useState 到 Context API,React 內建狀態管理已經很強,但為什麼還需要外部套件?讓我們從實際開發痛點來分析。
2025-10-19
React 狀態管理系列01 - 為何需要狀態管理?
從 setState 到 prop drilling,再到 Context API,理解 React 為何需要外部狀態管理。
2025-10-19
【演講】從研究室到辦公室:連學校老師也無法教你的必修課
從研究室走進辦公室,目前所學的程式能力能派上用場嗎?學術背景真的能換成職場實力嗎?畢業前的你以為最大的挑戰是論文,但真正的考驗,其實才剛開始。
2025-10-16

【演講】自由接案 Redefine:自由不是只有一種形狀
只有全職接案才是成功的接案?自由接案只能有一種形狀嗎?
2025-09-11

【演講】新書發表簽名會 - 不想上班的勇氣@五倍學院
你是否也思考過,除了朝九晚五的上班生活之外,我還可以怎麼開創新職涯?
2025-08-07

【接案】請問怎麼樣才可以不上班?但我看作者的簡介還是在公司上班...
7/16 我在臉書社團宣傳新書《不想上班的勇氣》上市時,有位讀者提出了一個犀利的問題「請問怎麼樣才可以不上班?但我看作者的簡介還是在公司上班...」
2025-07-16

[接案] 當客戶瘋狂殺價又不尊重專業時,我們真正該看懂的事
當客戶瘋狂殺價、質疑專業時,你該堅持什麼、又該讓出什麼?從真實談判經驗出發,教你看懂殺價背後的心理,建立對等、有底線的合作關係。
2025-07-11
![[接案] 當客戶瘋狂殺價又不尊重專業時,我們真正該看懂的事](https://everflow.sgp1.cdn.digitaloceanspaces.com/taiming/blog/20250711.jpeg)
Vibe Coding vs. Muggle Coding
AI 的崛起確實讓許多工程師感到焦慮,擔心自己的工作會被取代。但仔細觀察會發現,麻瓜與工程師之間的專業鴻溝,並非單純靠 AI 就能彌補。
2025-07-03

[新書發表] 不想上班的勇氣:軟體工作者的第一本接案指南
從如何找到第一個客戶、避開新手常見陷阱,到建立穩定接案管道的具體方法,一步步帶你走出辦公室牢籠。當你能用專業技能自由工作,不必再看老闆臉色,每天起床的鬧鐘聲都會變得悅耳。這不是幻想,而是可以實現的職涯新選擇。現在就開始規劃你的自由工作藍圖,讓你的專業真正為自己創造價值。
2025-07-01
![[新書發表] 不想上班的勇氣:軟體工作者的第一本接案指南](https://everflow.sgp1.cdn.digitaloceanspaces.com/taiming/book/MP22503_%E5%8D%9A%E5%AE%A2%E4%BE%86_1968x1000_0.jpg)
WebConf Taiwan 2024── 接案失敗學:前端、後端、設計端,我還要具備什麼端才能出來江湖闖盪?談小白鼠闖入黑森林被 XXX 的淒慘故事
在個人和小型團隊的接案市場中,僅僅掌握前端、後端或設計技能並不足以保證成功。更多的挑戰在於如何應對現實中的各種情境及困難。成功很難被複製,但是失敗可以。本演講將從失敗學的角度出發,分享接案小白在接案過程中可能遇到的各種意料之外的狀況,以及如何從這些經歷中學習與成長。
2024-12-28
[React Patterns] Compound Pattern 複合元件模式
兩個或兩個以上的 component 結合成一個擁有特定功能或是能夠達成特定任務的 component。
2024-04-30
![[React Patterns] Compound Pattern 複合元件模式](https://everflow.sgp1.cdn.digitaloceanspaces.com/taiming/blog/20240430_react-design-pattern/compound.png)
[React Patterns] Container/Presentational Pattern 容器/展示模式
Container/Presentational 模式是一種強制分離關注點的設計模式。這個模式的核心思想是將視圖(Presentational)與應用程式邏輯(Container)分開。
2024-04-30
![[React Patterns] Container/Presentational Pattern 容器/展示模式](https://everflow.sgp1.cdn.digitaloceanspaces.com/taiming/blog/20240430_react-design-pattern/container-presentation.png)
[React Patterns] Function as Child Component
把一個 function 當作子元素(children)傳給元件,這個 function 會在元件內部被呼叫,並且可以取得元件內部的狀態或資料,然後回傳你想要渲染的內容。
2024-04-30
![[React Patterns] Function as Child Component](https://everflow.sgp1.cdn.digitaloceanspaces.com/taiming/blog/20240430_react-design-pattern/function-as-child.png)
[React Patterns] 高階元件 HOC
Higher-Order Component,將可重複使用的邏輯作為 props 傳遞給整個應用程式中的元件
2024-04-30
![[React Patterns] 高階元件 HOC](https://everflow.sgp1.cdn.digitaloceanspaces.com/taiming/blog/20240430_react-design-pattern/hoc.png)
[React Patterns] Hooks
讓你不必寫 class 就能使用 state 以及其他 React 的功能
2024-04-30
![[React Patterns] Hooks](https://everflow.sgp1.cdn.digitaloceanspaces.com/taiming/blog/20240430_react-design-pattern/hooks.png)
[React Patterns] Render Props
擁有 render prop 的元件接受一個「返回 React 元件的函數」,而不是實現自己的渲染邏輯。在渲染時,該元件呼叫這個函數,並使用它返回的 React 元件。
2024-04-30
![[React Patterns] Render Props](https://everflow.sgp1.cdn.digitaloceanspaces.com/taiming/blog/20240430_react-design-pattern/render-props.png)
【心得】2023 WebConf 為自己留下記錄的參與心得
如果十年後我還是跟現在差不多,那絕對不會是我自己期待的樣子,所以今天也想特別留下一點記錄,一方面不要忘記自己這次得到的收穫,另一方面也不斷提醒自己,努力不要成為十年後想起當年會後悔的模樣。
2023-08-13
哎呀!那些我在做 React 元件庫時,沒注意到的小細節!?
刻一套元件庫,到底難不難?自己做一套有什麼好處?過程當中需要考量哪些部分?今天要跟大家分享那些在做元件庫的過程當中,自己可以做得更好的部分,以及那些被我忽略而犯蠢的小細節。
2023-05-24

iThome 鐵人賽系列書籍-完整出版攻略
今天要來揭開從無到有,出版一本 iThome 鐵人賽系列書籍的神秘面紗。
2022-11-09
