ブルーグリーンデプロイの仕組み ― ダウンタイムゼロで本番を切り替える方法
ブルーグリーンデプロイって何なの?色の名前がついてて不思議なんだけど…
へえ!もし新しいバージョンにバグがあったらどうするの?
カナリアリリースやローリングアップデートっていうのも聞くけど、何が違うの?
カナリアリリースは新バージョンにトラフィックの一部(たとえば5%)だけを流して、問題がなければ徐々に比率を上げていく方法だよ。ローリングアップデートはサーバーを1台ずつ順番に更新していく方法。ブルーグリーンは全トラフィックを一気に切り替えるから、シンプルで分かりやすい反面、中間状態がないんだ。
AWSとかKubernetesだと具体的にどうやって実現するの?
AWSならALB(Application Load Balancer)のターゲットグループを2つ用意して、リスナールールで切り替えるのが定番だよ。Kubernetesの場合は、ServiceのselectorラベルをBlueからGreenに書き換えるだけでトラフィックが切り替わる。どちらもインフラの設定変更だけで済むから、アプリのコードを一切触らなくていいんだ。
でもデータベースはどうするの?ブルーとグリーンでDBも2つ用意するの?
環境を2つ維持するってことは、コストも2倍になるんじゃない?
切り替えの瞬間にユーザーのセッションが切れたりしないの?
ブルーグリーンデプロイって大企業だけの話じゃなくて、小さいチームでも使えるの?