開発のドキュメント

【運用】Blue-Green Deployment の意味と注意点についてまとめる

はじめに

アプリケーションの更新作業の際に、よく用いられる BlueGreen-Deployment についてまとめておきます

この記事のゴールは

  • BlueGreen-Deployment が何かわかる
  • BlueGreen-Deployment のメリット・デメリットがわかる

こととします。

Blue-Green Deployment の意味とメリデメについてまとめる

Blue-Green Deployment とは?

Blue-Green Deployment とは

  • Blue と Green の二つの本番相当の環境を用意する
  • 片方(例えば Blue)は本番として公開
  • 片方(例えば Green)は次バージョンのテスト環境(リリース直前)か、前バージョンのロールバック環境(リリース直後)として機能
  • リリースの際には、Green のテスト環境でテストが問題ないことを確認し、Blue から Green にルーターを切り替える
  • ロールバックの際には、Green -> Blue へとルーターを戻す
  • このような仕組みでシステムのダウンタイムをなくすデプロイ手法のこと
  • Martin Fowler という人が 2010 年に提唱

というもの。

ちなみに、インスタンスはそのままに、新しいバージョンのアプリのみをその場で反映させる従来の方法は、In Place という。

反映のスピードごとにも分類できる

ちなみに、デプロイ手法の分類には反映スピードごとで分けるものもあるらしい。

実現方法とは別の軸で、反映のスピードで大まかに以下の 3 つの分類ができます。

  • All at once: 全台を一斉に新しいリビジョンでデプロイする
  • One by one: 1 台ずつ新しいリビジョンをデプロイする
  • Batch: 数台(例えば半数)ずつ新しいリビジョンをデプロイする

    > https://aws.typepad.com/sajp/2015/12/what-is-blue-green-deployment.html
まる
まる

実現方法は、BlueGreen Deployment で、反映は All at once で。みたいな使い方をするっぽい

Blue-Green Deployment のメリット・デメリット

Blue-Green Deployment のメリット

  • ダウンタイムが発生しない
  • ロールバックが簡単

Blue-Green Deployment のデメリット

  • インスタンスを余分に作らなければいけないコストが無駄(クラウドの仕組みが普及してからは、使用料ベースで課金されるのでそこまで無駄にはならないとのこと)
  • スキーマの変更があるケースには別途対応が必要

まとめ

  • BlueGreen Deployment とは、2 つの本番環境を用意して、いい感じに使い回す
  • BlueGreen Deployment 手法を採用すると、ダウンタウンなしでリリースできて、かつロールバックも簡単!
  • スキーマの変更がある場合には注意!
まる
まる

Red/Black デプロイとか、Canary って概念もまた別で勉強したい。

参考 URL

ABOUT ME
aoi maru
aoi maru
94-24/色々実験だ。音楽(@kigurumi_band)とプログラミングやってます。