ブルーグリーンデプロイメントの効果と課題:OpenStack上に構築する、ブルーグリーンデプロイメント実践入門(3)(3/3 ページ)
本連載では、「OpenStackを基盤としたブルーグリーンデプロイメント」を実現する“現場目線”のノウハウを解説していきます。今回は、「ブルーグリーンデプロイメントの効果と課題」を説明します。
ブルーグリーンデプロイメントの課題と対策
続いて、ブルーグリーンデプロイメントの課題を考察します。
課題の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.
関連記事
- OpenStackが今求められる理由とは何か? エンジニアにとってなぜ重要なのか?
スピーディなビジネス展開が収益向上の鍵となっている今、システム整備にも一層のスピードと柔軟性が求められている。こうした中、なぜOpenStackが企業の注目を集めているのか? 今あらためてOpenStackのエキスパートに聞く。 - いまさら聞けないOpenStack〜よく知られた「常識」と知っておくべき「常識」
日本OpenStackユーザ会の全面協力を得て、OpenStackを徹底的に深掘りする本特集。第2回はレッドハット クラウドエバンジェリストの中井悦司氏が「OpenStackでできること」「OpenStackを使う上で必要なこと」を分かりやすく解説する。 - いまさら聞けない「DevOps」
最近さまざまなイベントやブログエントリで見かける「DevOps」。この言葉をひもとき、なぜ「Dev」と「Ops」が衝突するのか、その解決に必要な要素とは何かを分かりやすく解説します。 - 継続的デリバリ/デプロイを実現する手法・ツールまとめ
バージョン管理や継続的インテグレーションとも密接に関わる継続的デリバリ/デプロイメントの概要や主なツール、経緯、実践事例を紹介。実践手法として「ブルーグリーン・デプロイメント」「Immutable Infrastructure」が注目だ。 - 現代のソフトウェア/サービス開発で構成管理が重要になった5つの理由
「DevOps」という言葉にもあるように、ソフトウェア構成管理は、インフラ運用に取り入れられるなど、変わりつつある時代だ。本連載では、そのトレンドにフォーカスして、現在のソフトウェア開発に有効な構成管理のノウハウをお伝えする