工作的這幾年實作 (或見過) 許多產品與應用程式的佈署,但常常與書上的名詞銜接不起來,這邊簡單紀錄一下各種部署策略的說明,也提供有需要的朋友參考,若有錯誤或任何建議,歡迎各位前輩不吝提出。




Big-Bang (大爆炸)

  1. 一次且全面性的部署方法
  2. 可以一次性完整更新
  3. 如名稱所示,整體的解決方案一次性應用在整個系統
  4. 因應服務相依,需要各團隊進行協調 
  5. 通常需要花費較長時間進行部署,除了持續交接,也可能需要較長停機時間



Rolling (滾動式)

  1. 較節省資源,但意外著需要停機 (暫停服務)
  2. 部署期間無法確認系統能完整正常運作
  3. 部署失敗需要恢復 (Roll Back),且恢復過程可能耗時費力
  4. 進行流程:
    1. 停止某些服務並更新後,啟用這些服務
    2. 持續停止另一群服務、更新 與 啟用
    3. 持續到過版結束
    4. 若有問題則逐一退回前一版本


Blue-green deployments (藍綠部署)

  1. 主要減少發佈時的停機時間 (可能無需停機)
  2. 可以快速撤回發佈
  3. 需要兩套系統進行切換 (需要資源較多)
  4. 進行流程:
    1. 綠色為目前對外服務的系統,藍色為準備發佈系統(不提供服務)
    2. 兩套系統皆功能完整且通過測試
    3. 佈署時切換兩套系統
    4. 若新版本有問題,可以隨時切回上一個版本


Canary releases (金絲雀部署)

  1. 適用於大規模更版
  2. 適用於對新版本穩定性缺乏信心 (或版本更動內容較大)
  3. 部署時間較長 
  4. 進行流程:
    1. 將其中幾台伺服器更新新版本
    2. 導引少部分 (10%) 真實流量進行測試
    3. 確認沒有問題即全面更新版本
    4. 若有問題只需移除新版本伺服器即可