# 部署 - Blue/Green,Canary Deployment


# 前言

Blue/Green Deployment (藍綠部署) 是一個相較於 Rolling Update (滾動更新) 更有部署彈性的方式之一,而 Canary Deployment (金絲雀部署) 是基於 Blue/Green Deployment 的延伸應用,其中 Blue/Green Deployment 能夠比 Rolling Update 更有彈性的理由是,是新舊版本同時並存,當新版在部署期間發生問題都可以隨時快速 Rollback 到舊版本。


# Blue/Green Deployment , Canary Deployment 特性

# 優點

  • Zerodowntime: 與 Rolling Update 相同
  • 相比於 Rolling Update 在部署期間有請求請來可能會被訪問到舊版系統或是新版,但 Blue/Green 可以一次性的換版比較不會遇到這種問題,可以預防沒做 API 向下兼容的問題。
  • 降低發版風險,即便新版系統通過一堆測試,但老話一句即便測試環境再像 Production 他就不是 Production,但 Blue Greening Deployment 由於新舊都部署的情況,可以做到更全面的測試
  • 彈性部署 通常雲端服務會有提供部分流量轉換到新版系統的方案
  • 實現 A/B Testing 其實也是拜上述所賜我們能夠引導一些使用者使用新版協助測試

# 缺點

  • 高成本 因為你一次部兩套
  • 資料庫問題,如果新舊版系統資料表定義不同,很有可能很難達到 Blue/Green Deployment

# Canary Deployment

Canary Deploymeny (金絲雀佈屬),基本上跟 Blue/Green Deployment 相同,但是他更能夠去規避風險,差別就在 Canary Deployment 可以分階段的轉換系統,而不是一步到位直接轉換

透過 Canary Deployment 我們可以慢慢的部署新的小服務單元,慢慢地去跟新系統,當失敗的時候影響使用者的程度也比較低。


# 參考資料

  • 進階持續部署 – 使用 Blue/Green、Canary 降低發版風險
  • 【從題目中學習 k8s】-【Day10】第二題 - Deployment Rolling Update
  • What Is Canary Deployment?
  • 部署策略簡介:藍綠部署 vs 金絲雀部署 vs 其他部署