最近のインフラ系技術が興味深い 〜Blue Green DeploymentとImmutale Infrastructure〜

これまでは Javascript を中心としたクライアントサイドの技術が結構活発でしたが、去年あたりからインフラ周りの技術の流れがおもしろく、興味深いなと感じています。特にタイトルにも書いてある Immutable Infrastructure は最近は話題に上がることも多いです。ということで Immutable Infrastructure が提唱された背景にある技術の一つである Blue Green Deployment とそれを一歩進めたアプローチ Immutable Infrastructure についてまとめてみました。

Blue Green Deployment

まずは Blue Green Deployment について。これはブルーとグリーンの2つの環境を用意し、サーバにデプロイするたびにルーターやロードバランサで向き先を変更させる手法です。ブルーがアクティブとして稼働していた場合、グリーンに変更を加え、変更完了後にブルーに向いている向き先をグリーンに変更することでバージョンアップを行います。

これによる利点は問題があった際の切り戻しが簡単に行えます。元々アクティブだったブルーに向き先を戻すだけで対応できます。

欠点としてはコストがかかるという点です。2つの環境が必要なため、単純にサーバ台数も2倍必要になります。

Immutable Infrastructure

続いて、Immutable Infrastructure。名前を訳すと「不変なインフラ環境」。つまり一度運用に乗ったサーバについてはいっさい変更は加えず、変更が必要な場合は新規でサーバを立ち上げ、不要になったサーバは破棄するという手法です。そのためクラウドの利用が前提です。

利点は毎回クリーンな環境を扱うことができ、それによりデプロイ失敗を防ぐことができます。クリーンな環境なので、長年変更を繰り返されてきたサーバに比べ、すべてのサーバが同じ状態であるという保証ができます。また、使い捨てであることから Blue Green Deployment の欠点であるコストについても解消されるかと思います。

ただ Immutable Infrastructure にも欠点はあります。それはログが残らないということです。これについては別途ログを集約するためのストレージを用意するなどの対応が必要になってきます。

まとめ

クラウドの利用により、簡単に仮想サーバを構築できるようになり Immutable Infrastructure のような使い捨てができるようになりました。それらを実現するための技術である「Packer」や「Docker」にも注目していきたいと思います。

 

※参考