2024-11-19 · Pattern
用 Expand 與 Contract 安全地改資料庫結構
先擴充、再遷移、最後收尾,讓新舊程式碼同時運行也不中斷服務。
前言
以零停機重新命名欄位為例,逐步說明雙寫入的過渡期,以及如何確認新舊兩條路徑的資料一致之後,才移除舊欄位。
小事的複利
回顧 Pattern 的工作,真正的收穫都不怎麼華麗:一次命名修正、一個被刪掉的設定、一份再也沒改過的檢查清單。
為什麼它們撐得下來
- 它們由一個人負責,而不是一個委員會。
- 它們上線時,附帶了「何時會失效」的觀察方式。
- 它們拿掉了一個決策,而不是多寫了一份文件。
直接偷走
挑一個這個月你已經抱怨三次的痛點。那就是你的下一個專案——它已經證明過自己的續航力。
結語
大重寫的故事比較好聽;小步複利的系統比較好用。