系統架構筆記 - 常見的五種部署策略
這篇文章簡單紀錄了常見的五種部署策略: Big Bang Deployment、Rolling Deployment (滾動部署)、Blue-Green Deployment (藍綠部署)、Canary Deployment (金絲雀部署) 與 Shadow Deployment (影子部署)。
Big Bang Deployment
名字聽起來很 Dramatic 的部署策略,將舊版本完全下線後部署新版本。
- 優點:
- easy、一次性完成
- 缺點:
- 有 downtime,一般生產環境下不會使用
Rolling Deployment (滾動部署)
將舊版本逐步 (one by one) 更新為新版本,在這個過程中,舊版本和新版本會共存一段時間。
- 優點:
- no downtime
- 缺點:
- 新舊版本間沒有隔離,可能需要處理版本之間的相容性與數據一致性
- rollback 也是逐步滾回去,複雜且耗時
Blue-Green Deployment (藍綠部署)
同時維護兩個平行的環境,一個為主要環境 (Blue),另一個為即將上線的新版本 (Green),於測試環境測試完新版本後,直接將兩個環境的流量做切換。
- 優點:
- no downtime
- 直接切換流量即可完成版本切換,rollback 也是
- 缺點:
- 要同時維護兩個環境,成本高
Canary Deployment (金絲雀部署)
將新版本釋出給少量用戶做測試,測試沒問題後才將剩下的部署為新版本。
- 優點:
- no downtime
- 能於生產環境中評估新版本效能,降低新版本風險
- rollback 較容易
- 缺點:
- 部署時間較長
- 某些問題無法靠少量用戶就發現
- 與 Rolling Deployment 的差異
- Canary Deployment 是階段式的過程,先部署少部分,確定沒問題才擴大部署
- Rolling Deployment 則連續的過程,一次對整個系統做升級,只是過程上是逐步部署
Shadow Deployment (影子部署)
同時維護兩個平行的環境,新版本在幕後運行 (in the shadow),使用者的 request 會被複製一份到新版本用於測試
- 優點:
- 不會對使用者造成實際影響,同時能測試新版本效能
- 缺點
- 實作上比較困難
- 成本高
其他: Feature Toggle
封面的圖片裡還有提到一個 Feature Toggle,概念是在程式中設計一個開關來控制新功能的狀態,可以針對特定用戶開啟,用來觀察新功能的效能、反饋如何,通常是用來做 A/B Test,本質上跟前面提到的幾個部署方法有點差異。