「把單體系統按照業務功能拆開成多個獨立模組」,聽起來是個理所當然的架構現代化藍圖。但在實際諮詢輔導過程中,我們見過太多團隊在拆分後,才驚覺新模組因為共享資料庫或深層跨表 Join,導致效能暴跌、死鎖(Deadlock)頻繁發生,最終不得不走回合併的老路。
現代化架構的本質是資料邊界的獨立。若資料庫層依然高度耦合,在應用層做任何模組切分都只是空中樓閣。在正式啟動代碼解耦前,我們建議必須完成以下五項關鍵資料庫健檢:
第一項:跨模組外鍵依賴與隱性關聯清查。檢視哪些資料表看似屬於模組 A,卻在模組 B 的代碼中被直接 Update 或 Insert。這些隱性寫入是引發資料不一致的頭號殺手。
第二項:巨型視圖(Views)與複雜預存程序(Stored Procedures)的業務邏輯占比。許多運營十幾年的系統將核心業務規則寫死在 SQL 預存程序中,若未在代碼審查時將這些邏輯完整提取為領域物件,將無法順利進行架構演進。
第三項:分散式交易風險評估。盤點哪些核心業務依賴單一資料庫的 ACID 本地交易。一旦分庫或分服務,原有的 Begin Transaction 將失效,是否具備引入 Saga 模式或最終一致性(Eventual Consistency)的業務容忍度?
第四項:共享狀態字典與列舉表的讀取路徑。系統中是否有被所有模組高頻調用的靜態配置表?若各模組直接查詢資料庫,將形成嚴重的底層相依,應提早設計快取或事件同步方案。
第五項:歷史資料歸檔與冷熱資料分離現況。老舊資料庫往往膨脹至數 TB,其中包含大量無用的歷史日誌。在進行架構切分前先行實施資料歸檔,能顯著降低資料遷移時的風險與時間窗口。
陳冠宏 / 資料架構與現代化顧問
Cloud Streamcore Advisory 資深架構顧問群成員。專注於協助台灣企業化解軟體歷史包袱,落實穩健可行的代碼重構與架構升級。