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

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

💡 お客さんを待たせない、走りながらの衣装チェンジ
📌 このページのポイント
ゼロダウンタイムデプロイの代表的手法 ブルーグリーン v1 v2 LB切替 ローリング v2 v2 v1 v1 順番に更新 カナリア v1 (95%) v2 5% 共通の特徴: ユーザーへのサービス停止なし ブルーグリーン 即座に切替可能 ロールバックが容易 環境が2倍必要 ローリング リソース効率が良い 段階的に更新 新旧が混在する時間 カナリア リスク最小で検証 影響範囲を限定 切替に時間がかかる
ゼロダウンタイムデプロイのイメージ
ひよこ ひよこ

アプリをアップデートするとき、どうしても止まっちゃうものなの?

ペンギン先生 ペンギン先生

昔はメンテナンス画面を出して『ただいまサービスを停止しています』ってやるのが普通だったんだ。でも今は24時間止められないサービスが多いから、ゼロダウンタイムデプロイが当たり前になってきたよ

ひよこ ひよこ

止めずにどうやって切り替えるの?

ペンギン先生 ペンギン先生

代表的なのはブルーグリーンデプロイだよ。現在稼働中の環境(ブルー)とは別に新バージョンの環境(グリーン)を用意して、ロードバランサーの向き先を切り替えるんだ。一瞬で切り替わるからユーザーは気づかないよ

ひよこ ひよこ

他にもやり方はあるのかな?

ペンギン先生 ペンギン先生

ローリングアップデートサーバーを1台ずつ順番に更新していく方式だね。カナリアリリースは全体の数%だけ新バージョンにして様子を見る方式。どれも一長一短があるから、サービスの特性に合わせて選ぶんだよ

ひよこ ひよこ

データベースの変更があるときは大変そうだね?

ペンギン先生 ペンギン先生

そこが一番の難関なんだ。カラム追加は比較的安全だけど、カラム削除や名前変更は旧バージョンと新バージョンの両方が動いてる間に互換性を保つ必要がある。Expand-Contractパターンで段階的に変更するのがベストプラクティスだよ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「ゼロダウンタイムデプロイ」って出てきたら「サービス無停止でリリースする技術」と思えればだいたいOK!
📖 おまけ:英語の意味
「Zero Downtime Deployment」 = 停止時間ゼロのデプロイ
💬 Downtimeは「停止時間」の意味で、それをゼロにするデプロイということだよ
← 用語集にもどる