【ぜろだうんたいむでぷろい】

ゼロダウンタイムデプロイ とは?

公開:
💡 お客さんを待たせない、走りながらの衣装チェンジ
📌 このページのポイント
ゼロダウンタイムデプロイの代表的手法 ブルーグリーン v1 v2 LB切替 ローリング v2 v2 v1 v1 順番に更新 カナリア v1 (95%) v2 5% 共通の特徴: ユーザーへのサービス停止なし ブルーグリーン 即座に切替可能 ロールバックが容易 環境が2倍必要 ローリング リソース効率が良い 段階的に更新 新旧が混在する時間 カナリア リスク最小で検証 影響範囲を限定 切替に時間がかかる
ゼロダウンタイムデプロイのイメージ
ひよこ ひよこ
アプリをアップデートするとき、どうしても止まっちゃうものなの?
ペンギン先生 ペンギン先生
昔はメンテナンス画面を出して『ただいまサービスを停止しています』ってやるのが普通だったんだ。でも今は24時間止められないサービスが多いから、ゼロダウンタイムデプロイが当たり前になってきたよ
ひよこ ひよこ
止めずにどうやって切り替えるの?
ペンギン先生 ペンギン先生
代表的なのはブルーグリーンデプロイだよ。現在稼働中の環境(ブルー)とは別に新バージョンの環境(グリーン)を用意して、ロードバランサーの向き先を切り替えるんだ。一瞬で切り替わるからユーザーは気づかないよ
ひよこ ひよこ
他にもやり方はあるのかな?
ペンギン先生 ペンギン先生
ローリングアップデートサーバーを1台ずつ順番に更新していく方式だね。カナリアリリースは全体の数%だけ新バージョンにして様子を見る方式。どれも一長一短があるから、サービスの特性に合わせて選ぶんだよ
ひよこ ひよこ
データベースの変更があるときは大変そうだね?
ペンギン先生 ペンギン先生
そこが一番の難関なんだ。カラム追加は比較的安全だけど、カラム削除や名前変更は旧バージョンと新バージョンの両方が動いてる間に互換性を保つ必要がある。Expand-Contractパターンで段階的に変更するのがベストプラクティスだよ
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「ゼロダウンタイムデプロイ」って出てきたら「サービス無停止でリリースする技術」と思えればだいたいOK!
📖 おまけ:英語の意味
「Zero Downtime Deployment」 = 停止時間ゼロのデプロイ
💬 Downtimeは「停止時間」の意味で、それをゼロにするデプロイということだよ
← 用語集にもどる