35 lines
1.5 KiB
Markdown
35 lines
1.5 KiB
Markdown
# 遷移與上線設計 (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 名稱或值
|
||
- 不產生遷移或部署腳本 |