SIBYL System

AWSのELBを使用せずにBlue-Green Deploymentする

AWSを辞めてさくらVPSに戻りますなんて記事書きましたが、リザーブドインスタンスを一年間契約していたことから結局そのまま継続して利用している私です。

可能な限りAWSのコストを下げようと取り組みを行っている最中で、RDSを捨ててEC2上にpostgres serviceを稼働させるなど、本当にそれAWSの意味あるの状態になってきていますが、今はいろんなデザインパターンを試すということで。

今回はELBを使うのを辞めたいと思います。元々提供しているサービスのEC2マシンは冗長化しておらずBlue-Green Deploymentのために使用していました。

Blue-Green Deploymentとは

Blue-Green Deploymentはサービスのアップデートにかかるダウンタイムを抑えるための仕組みです。ルータの行き先を(アップデート済みの)別のマシンに切り替えることでデプロイを行います。もし何かしらのトラブルが発生してロールバックする必要がある場合はルータの行き先を元のマシンに切り替えることでダウンタイムなしでロールバックを行います。

新環境と旧環境で合わせて、倍のマシンを用意する必要があるため、オンプレ環境では難しいですが、クラウドなら一時的なマシン台数増加は簡単です。

私が提供しているサービスではELBの接続マシンを切り替えることでダウンタイムを抑えつつデプロイを行っていました。個人的なアイディアとしてはRoute53の設定を変更することでBlue-Green Deploymentを実現することなども考えていたのですが、TTLの更新タイミングによってエンドユーザー別に参照先が変わってしまうことを考えるとちょっとまずいなとも思っていました。

最近デザインパターンの本を見ていたらEIPを切り替えることでBlue-Green Deploymentを行っているパターンがあったのでそちらを試してみることに。

 

現在の構成図

作り直した構成図

これでELBを使わずにBlue-Green Deploymentができますね。EIPの紐付けを変更するだけでデプロイ完了です。問題なく稼働していることを確認し、安全だと思った時点で前のマシンを破棄しましょう。

EIPの切り替えはEC2ペインメニューのErastic IPから、割り当てられているIPに対して右クリックでコンテキストメニューを開き、アドレスの関連付けを選択します。

あとは新しい環境をデプロイ済みのインスタンスを選択するだけです。

モバイルバージョンを終了