我把 300 行 if-else 拆成狀態機,然後後悔了一半
這篇沒有什麼驚心動魄的線上事故,就是一個關於「過度設計」的自我檢討。我把一段醜到不行的訂單狀態判斷——大概三百行的巢狀 ifelse——重構成了一台漂亮的狀態機。同事都說好看。半年後我回頭看,一半覺得…
繼續閱讀 →這篇沒有什麼驚心動魄的線上事故,就是一個關於「過度設計」的自我檢討。我把一段醜到不行的訂單狀態判斷——大概三百行的巢狀 ifelse——重構成了一台漂亮的狀態機。同事都說好看。半年後我回頭看,一半覺得…
繼續閱讀 →凌晨三點多,值班手機響了。對帳服務噴出一堆「主鍵衝突」的錯誤——有兩筆完全不同的訂單,拿到了一模一樣的訂單編號。我們的訂單 ID 是用 Snowflake 演算法自己產的,理論上全域唯一、絕不重複。結…
繼續閱讀 →有一次線上 DB 的 CPU 莫名其妙飆到 90%,但 QPS 沒有暴增,慢查詢日誌也沒特別多。我查了快一個小時才發現真正的兇手:一堆「使用者早就取消、但後端還在跑」的查詢。前端請求逾時、使用者關了分…
繼續閱讀 →我換過幾次工作,也以面試官的身分面過大概兩三百個人。有一陣子,我幾乎每週都要花掉好幾個下午坐在會議室裡,看著對面那個緊張到把履歷捏出摺痕的人,心裡盤算著「我願不願意每天跟這個人一起 debug」。後來…
繼續閱讀 →從一次搶購事故說起 那是一個很普通的週四晚上八點。我們在做一檔限量商品的搶購活動,行銷估計大概會有幾萬人同時湧進來。後端服務早就壓測過了,DB 也升級到更高規格,我心想應該穩。 結果開賣後不到三十秒,…
繼續閱讀 →我以前真的把人講跑過 我講一件不太光彩的事。 大概是我入行第四、五年的時候,技術上自認小有底氣,做過撮合引擎的核心,扛過幾次大流量。有一次公司要上一個新功能,PM 來找我估時間,順便問我為什麼前一個版…
繼續閱讀 →一次「應該很安全」的改名 那次我很有信心,結果翻車翻得很難看。 需求只是把一個欄位改個更清楚的名字。我在一個 migration 裡把欄位 rename 了,程式碼也同步改成用新名字,兩個一起打包上線…
繼續閱讀 →我寫程式快十五年了。這段時間裡,我看著 jQuery 從神壇上跌下來,看著 AngularJS 整碗砸掉重練變成 Angular,看著 React 從一個臉書內部專案變成半個前端世界的共主,看著容器化…
繼續閱讀 →做後端做久了,你會發現有一類 bug 特別陰險:平常都好好的,壓力測試也過了,上線跑了三個月相安無事,結果某天半夜流量一尖峰,帳就對不上了。客訴進來說「我明明只點了一次提現,怎麼被扣兩次」,或是行銷活…
繼續閱讀 →Tech Hub 由台灣的後端工程師 Leo Wu 經營。我做過加密貨幣/證券交易所的撮合引擎與訂單系統、整合過多家金流(冪等、對帳、Webhook)、也建過後台管理系統與高併發的活動搶購網站,並以 .NET Core 搭配 Vue 做全端開發。
這個站的目標是「深度勝過數量」:文章少而精,每篇都源自正式環境的真實取捨與失敗經驗。 關於