続いて、ブルーグリーンデプロイメントの課題を考察します。
課題の1つは、「自動切り替えの手法に応じて、さまざまな考察が必要となる」ことです。
ブルーグリーンデプロイメントでは、DNS、ロードバランサー、NATのいずれかを用いてブルー系とグリーン系環境の自動切り替えを実現します。それぞれに異なる課題があります。
まずDNSで切り替える方法は、DNSキャッシュの影響によって、切り替えに数秒から数分を要することが課題に挙がります。これは、「DNSの浸透待ち」などと呼ばれる課題です。DNSを早く浸透させるために、キャッシュ保持期間であるTTL(Time To Live)パラメータを短くすると、今度はDNSサーバのパフォーマンスや、DNSキャッシュポイズニングといったセキュリティ上の懸念が増えてしまいます。また、完全に環境が切り替わっていない時間帯にブルー/グリーンの両系へアクセスされる可能性もあります。こちらはアプリケーションレベルで不整合などが起こらないように考慮しておく必要があります。
ロードバランサーで切り替える方法も、前述した両系への同時アクセス、あるいは両系へのアクセスが不能になるタイミングの存在が課題となります。例えば、ロードバランサー配下に新しいノードを追加した場合には、すぐにそのノードが使われず、ヘルスチェック機構によって数十秒程度の死活監視が行われてから利用されます。このため、本番系を切り替えただけでは、どのノードもアクセスが不能になる時間帯ができてしまいます。この解決のために、追加した系がオンラインになった時点で旧本番系を除去する施策を取る施策も考えられるでしょう。しかし、追加した系がオンラインになるタイミングは正確に把握できず、厳密な指定もできません。やはり、両系へアクセスできてしまう問題は残ります(図2)。
NATで切り替える方法は、HTTPのKeep-Alive接続によって切り替えが発生しない状況が生じます。OpenStack Neutronにおけるデフォルトの実装ではiptablesのNATテーブルを利用してフローティングIPを実現しますが、TCPセッションの確立時点しかNATテーブルが評価されません。HTTP Keep-Aliveは確立済みTCPセッションを使い回すために、HTTP通信が頻繁に行われるような場合にはNATテーブルが評価されず、切り替えが発生しないのです。
なお、2017年1月現在ではほとんどの通信がHTTP/1.1であり、デフォルトでKeep-Aliveが有効です。このKeep-Alive対策として、ユニアデックスの構築したブルーグリーンデプロイメントソリューションでは、LBaaSのソースコードに改変を行ってKeep-Aliveを無効化しています。
アプリケーションの更新に伴う本番系の切り替え時には、ブルーグリーンデプロイメント特有の考慮が必要です。特にデータベースに課題があります。
リレーショナルデータベースには、「データベースのバージョニング」と呼ばれる手法が有効です。通常データベースのスキーマを変更する場合は、バックアップを取得した上で「DDL(Data Definition Language)」を発行します。さらに、追加したカラムの初期値設定などのデータの洗い替えを実施します。
データベースのバージョニングにおいては、データベース自身にデータベースバージョンを記録します。アプリケーション起動時などにこのバージョン名を評価して、アプリケーションが認識するバージョンと異なるデータベースを検出した場合には、バージョンアップ、またはバージョンダウンのDDLを発行してスキーマを変更し、さらに、必要に応じてデータの洗い替えを実施するようにします。こう対処しておくことで、本番系の切り替え時にデータベースを正しく認識し、矛盾のない動作を実現することが可能となります。
今回は、ブルーグリーンデプロイメントの効果とその課題を解説しました。昨今のITインフラ管理者には、単にシステムのお守りをしていればよいのではなく、ビジネス躍進の担い手としての役割がより強く求められてきています。特に継続的インテグレーション、継続的デリバリーといった開発現場の潮流が運用のスタイルを大きく変える渦となっています。この流れは今後さらに加速するでしょう。
次回は、実際にOpenStackにブルーグリーンデプロイメントを構築する手順を紹介します。お楽しみに。
ユニアデックス株式会社 自社IP電話関連プロダクトなど、ソフトウェア開発を経験した後、近年はSDNやOpenStack、IoTなどに関するR&Dを担当。IKEAでDIYが休日の楽しみ。
ユニアデックス株式会社 パワポと戯れるOpenStack商品企画担当。バックパック片手に世界をぶらり旅。次の旅先を妄想中。
Copyright © ITmedia, Inc. All Rights Reserved.