# 遷移與上線設計 (Migration Rollout Design) 知識合約指南 ## 概述 `migration-rollout-design` 是知識合約,用來提供遷移與上線設計的原則與模式。涵蓋向後相容、上線策略、Canary Deployment、Feature Flags、Schema Evolution 與 Rollback。供 `design-architecture` 在定義 Migration & Rollout Strategy 時參考。 ## 核心原則 ### 向後相容優先 - 新版本必須與舊版本共存於遷移期間 - API 必須向後相容直到所有消費者都遷移完成 - 資料庫結構必須同時支援舊版和新版程式碼 ### 增量勝過 Big-Bang - 增量遷移,一步一步來 - 每步必須可獨立部署與逆轉 - Big-Bang 遷移風險高,逆轉困難 ### 預設 Rollback - 每個遷移步驟必須有明確的 rollback 計畫 - Feature Flags 可實現即時 rollback,無需重新部署 ## 設計重點 - **上線策略**:Blue-Green Deployment、Canary Deployment、Rolling Deployment、Feature Flag Deployment - **Feature Flags**:Release flags、Operational flags、Experiment flags、Permission flags - **Schema Evolution**:Additive Changes(安全)vs Destructive Changes(需遷移) - **Migration Strategy**:Expand → Migrate → Contract 三階段 - **Rollback**:Application Rollback、Database Rollback 與決策矩陣 ## 知識合約職責 - 提供遷移與上線設計的理論指引 - 不直接產生遷移腳本或上線腳本 ## 不應做的事 - 不替系統選擇特定部署策略 - 不定義具體的 Feature Flag 名稱或值 - 不產生遷移或部署腳本