ミドルウェア、ライブラリ、OSなどのソフトウェア実装の冗長化
##解決したい課題
glibcの脆弱性「GHOST」、OpenSSLの脆弱性「Heartbleed」、bashの脆弱性「ShellShock」といったソフトウェアの抱えるバグや不具合に起因する問題が発生した場合、単純なインスタンス冗長化では即座に問題を解決することができない。
もしシステムを停止させない場合は、脆弱性が解決されるまで問題のあるソフトウェアを稼働させることになる。またクラウドサービス事業者が提供するマネージドDBやロードバランサの詳細な内部実装についてはユーザ側からは確認することができないことが多いため、クラウドサービス事業者側の対応が完了するまで問題のあるソフトウェアを稼働させることになる。
##クラウドでの解決/パターンの説明
異なったミドルウェアや異なったOSを組み合わせて本番系システムと同様の機能を提供するシステムをあらかじめ構築しておく。これによって、一方のソフトウェア実装に問題があった場合にも即座に異なったソフトウェアで構成されたシステム上でサービスを再開させることが可能である。
この手法を実現する際にクラウドを活用することで、たとえば通常時はLinux環境で動作するシステムに相当するシステムをWindows環境上で構築しAMI化しておき、必要になった際にのみ起動することができる。
##実装
- 現行のシステム構成を確認し、それと異なるミドルウェアやOSなどのソフトウェアを組み合わせて現行のシステムと同機能のシステムを構築しAMI化する。
- 現行システムが使用するソフトウェアに問題が発見された際に、即座に待機していた同機能AMIを立ち上げる。
- たとえばWebサーバへの対応策としては、新しくアクセスを振り分ける先としてこの異なる実装のAMIから作成したインスタンスを指定する方法も考えられる。
##利点
- 現行システムが利用するソフトウェア上で問題が発見されても、早期にサービスを再開できる。
##注意点
- 同じミドルウェアを利用する場合でも、別OS上で動作させる場合は設定や仕様が異なる可能性があることに注意する。
- システムの保守にN倍近くのコスト(同機能システムを増やした分のコスト)がかかる。