這是一個關於「技術債」與「新舊系統交替(Legacy System Migration)」的故事。
這次台灣元老級的部落格平台——痞客邦(PIXNET),從 12/03 開始在 FB 公告改版作業,這場原本預期順利升級的行動,直到 12/10 依然處於「戰時搶救」狀態。
這給了資訊圈一個巨大的討論題材。改版出包在業界雖不稀奇,但對於這種台灣在地流量極高、累積資料量龐大的內容網站而言,長達一週的服務不穩定,絕對是教科書等級的案例。
秉著「吃瓜」兼「技術研究」的精神,我們以 專案管理以及工程師的雙重視角,來解析這場風暴。暴風雨前的寧靜(12/03)
在 12/03 痞客邦於FB第一則公告發出時,可能有敏銳的開發者已經嗅到了一絲不尋常的氣氛。
【維護預告】關於目前的顯示異常與明日時程
大家今天使用時,可能會遇到「人氣數字不見」或「圖片顯示有誤」的狀況。這部分是因為我們正在為明天的改版做前置準備...
這則公告透露了一個令人不安的訊號:「前置準備」竟然影響到了「線上環境(Production)」。
這在技術上暗示了一個極高風險的操作:團隊可能在正式切換前,就試圖對運作中的資料庫(Live Database)進行結構變更或同步寫入。
通常行規是「Don't test in production(不要在正式環境測試)」,但對於累積了十幾年、資料量可能達 PB 等級的老牌網站,要複製一個 1:1 的「模擬環境(Staging)」成本極高且極其困難。因此,他們極可能是在「飛機還在飛行時,一邊嘗試更換引擎」。
而且就公告來看,不是喜悅的官宣明天要改版的事情,而是帶著歉意表示遇到系統上的問題。
不得不踩的煞車(12/04)
隔天上午 10 點,官方發出了延期公告。
【重要通知】原訂今日 (12/4) 改版延期...
關於人氣數字與圖片異常,因改版前置作業已啟動,目前看到的顯示異常(如數字歸零、圖裂)為系統切換過渡現象...
就我大膽猜測,這不是單純的延期,這是「撤退失敗」。
公告中提到的「過渡現象」其實是非常委婉的說法。從 PM 的角度解讀,這意味著新舊系統的資料介接已經出現了邏輯衝突(Race Condition),而且無法瞬間還原。這時候如果不喊卡,硬上的結果可能是全站崩潰。
孤注一擲的決斷(12/05 - 12/07)
直到 12/05,官方確認 12/07 執行架構升級,並明確指出從「後台管理」開始。
【改版時間確認】PIXNET 升級作業將於週日 (12/7) 執行
維護期間將暫停「會員登入」與「後台管理」功能...
這意味著,這次的改版策略是「先換大腦(後台/資料庫核心),再換四肢(前台顯示)」。然而,12/07 才是工程團隊惡夢的開始。
深陷泥沼——為何無法「Rollback(回滾)」?
最讓人頭皮發麻的,是 12/07 之後的狀況。
身為 PM,當改版失敗,黃金準則是:「切回舊版(Rollback)!馬上!」
但為什麼痞客邦沒有切回去?為什麼要讓網站掛在那邊搶救七天?這通常只有一個原因:他們已經越過了「不可回逆點(Point of No Return)」。
這就像是動手術動到一半,心臟已經換了一半,這時候發現新心臟尺寸不合,但也無法把舊心臟塞回去了。
讓我們再換個角度,從工程師的視角推演,可能的技術劇本如下:
1. 資料結構(Schema)的不可逆變更
這很可能是一場典型的「新舊系統並行失敗」。
新的資料庫架構已經寫入,舊的資料欄位可能已被轉換(Migration)甚至捨棄(Drop)。若此刻硬要切回舊版程式碼,舊程式會讀不懂新資料庫的結構,導致全站 Error 500。
2. 圖片與路徑的斷鏈(Broken Links)
公告中反覆提到的「圖裂」,通常不是圖片檔案真的消失了,而是「索引(Index)」亂了。
- 舊架構:可能依賴實體路徑,如 `/images/2010/user123/001.jpg`。
- 新架構:可能改為雲端物件儲存(Object Storage)搭配 Hash ID,如 `/s3/ax9-b2d-111`。
一旦中間的「對照表(Mapping Table)」在遷移過程中損壞或沒跑完,這幾億張圖片就像圖書館裡被撕掉標籤的書,書還在,但沒人找得到它在哪。
3. 開發團隊的現況:Fix Forward(向前修復)
想像一下現在痞客邦工程團隊的狀況:
外有百萬用戶怒吼,內有管理層壓力。工程師們面對的是一個「混合體(Hybrid Monster)」,既不是穩定的舊版,也不是完成的新版。
他們無法回頭,只能執行「Fix Forward」:在正式環境上,硬著頭皮把 Bug 一個一個修好。這解釋了為什麼會有「部分功能正常、部分壞掉」的現象。
一個未完待續的技術債代價
從 PM 的角度復盤,這次災難的核心問題可能不在於技術能力不足,而在於「低估了老舊系統(Legacy System)的複雜度」。
痞客邦是一個網路界的「活化石」,程式碼裡可能藏著 十幾年前寫的、無人能懂的邏輯(Spaghetti Code,義大利麵程式碼)。這次升級聽起來像是想把地基打掉重練,但...
12/03 的「人氣數字消失」就是一個警訊:新舊系統在對接數據時,即時運算的邏輯已經崩潰了。那時候如果 PM 果斷喊卡,或許還有救。但 12/04 宣布延期,12/07 又硬著頭皮上,這顯示了內部可能有「非上不可」的時間壓力(可能是伺服器合約到期、資安合規要求,抑或是...)。
目前的搶救,是用「時間換取空間」。團隊不是在修 Bug,而是在一片廢墟中,試圖把資料一磚一瓦地搬到新房子裡,而且這房子屋頂還在漏水。
目前戰況技術分析表
圖檔裂圖 | 檔案路徑重寫 (URL Rewrite) 規則錯誤,或 CDN 對應失效。
若無完整備份對照表,部分舊圖連結可能永久失效(需重新建立索引)。
人氣歸零|統計計數器 (Counter) 轉移失敗,或新舊快取機制 (Redis/Memcached) 衝突。
除非有保留完整 Log,否則歷史數據可能需重新計算或歸零。
無法登入/後台錯誤**|會員系統 (SSO) 與權限驗證 (Auth) 機制正在更換。
安全性風險最高,也是目前團隊優先順序最高的搶修點(P0 級別)。
這故事說到這裡,作為同行,我們只能祈禱痞客邦工程師們的肝還撐得住,且資料庫的備份(Backup)是完整可用的。這場戰役,註定會成為台灣資訊圈的經典案例。












