就地與藍綠部署

在 AWS 上自動化部署

Dunieski Otano

Amazon Web Services Solutions Architect

凌晨 2 點的大當機

2.00

  • 一次全量部署失敗
  • 每台伺服器都跑到壞版本
  • 客戶看到錯誤長達 1 小時
  • 回滾還要再做一次完整部署
在 AWS 上自動化部署

為何部署策略很重要

2.1

  • 壞版發佈可能把服務打掛
  • 全量一次=最快、風險最高
  • 逐步推出=較慢、更安全
  • 策略可控管失敗時的影響範圍
在 AWS 上自動化部署

就地部署(In-place)

in-place

  • 部署到服務流量的同一批實例
  • 分批進行:一半再一半;或逐台
  • 每批通過健全檢查才繼續
  • 便宜;不需額外基礎設施
在 AWS 上自動化部署

藍綠部署(Blue/green)

  • Blue=現行正式環境的叢集
  • Green=新版本的全新叢集
  • 負載平衡器切換流量從 blue 到 green
  • 舊叢集保留可用以便快速回滾

blue-green

在 AWS 上自動化部署

Lambda 與 ECS 天生支援藍綠

  • Lambda:透過別名版本指標切換流量
  • ECS:透過替換的 task set 切換流量
  • 不需像 EC2 一樣重複建立叢集
  • 你仍需選擇部署組態

ecs

在 AWS 上自動化部署

就地 vs 藍綠:如何選擇

  • 預算吃緊、低風險修補 → 就地
  • 需要零停機或即時回滾 → 藍綠
  • 單一傳統伺服器 → 就地 唯一可行
  • Lambda 或 ECS → 內建藍綠

decide

在 AWS 上自動化部署

在 CodeDeploy 中回滾

rollback

  • 回滾=重新部署上一個成功修訂版
  • 可在部署失敗時自動觸發
  • 可在CloudWatch 警示時自動觸發
  • 藍綠回滾:把負載平衡器切回去
在 AWS 上自動化部署

一起來練習吧!

在 AWS 上自動化部署

Preparing Video For Download...