実現可能なイノベーション: 仮想化についてのモヤモヤを解消する

今日のエンタープライズ・コンピューティングにおいて、仮想化はホットなトピックです。しかし「仮想化」という言葉が表す内容は非常に幅広く、そこに含まれる 1 つひとつの仮想化が企業にもたらすメリットはそれぞれに異なります。この記事では、広く行き渡っている仮想化の形である、サーバー仮想化とアプリケーション仮想化を取り上げ、それぞれのメリットについて説明します。この記事は IBM WebSphere 開発者向け技術ジャーナルの記事です。

Dustin Amrhein, Technical Evangelist, IBM

Author photoDustin Amrhein は、WebSphere Application Server 開発チームのメンバーとして IBM に入社しました。この開発チームに在籍している間は、主に Web サービス・インフラストラクチャーと Web サービス・プログラミング・モデルに取り組んでいました。また、Java ランタイム用の RESTful なサービスのフレームワーク開発も行いました。現在の役割は、WebSphere Client Technical Professional です。



2012年 6月 28日

実現可能なイノベーション」のシリーズでは、新しく登場した技術を開発者と実践者両方の観点から取り上げ、その技術の新たな情報を提供したり、その技術に関するトピックについて議論したりします。そのなかで最先端の IBM WebSphere 製品の紹介もします。

はじめに

このトピックに関するスキルを磨いてください

この記事は、皆さんのスキルを漸進的に磨いていくナレッジ・パスの一部となっています。「クラウド・コンピューティング: Infrastructure as a Service の紹介」を参照してください。

「クラウド・コンピューティング」という言葉を耳にしたとき、皆さんが最初に思い浮かべる言葉は何でしょう?

「エラスティック性 (弾力性)」でしょうか?それとも「使用量に基づく課金」や「セルフサービス」でしょうか?これらはどれも、確かにクラウド・コンピューティングというパラダイムと関連しているため、驚くようなものではありません。しかし最も多くの人が思い浮かべそうなのは、「仮想化」という言葉なのではないでしょうか。

Merriam-Webster のオンライン辞書をちょっと見てみると、「virtualization (仮想化)」という単語の元である「virtual (仮想的な)」という単語には、4 つの定義が挙げられています。私達の場合に最も当てはまる項目では、「being on or simulated on a computer or computer network (コンピューター上またはコンピューター・ネットワーク上にある状態、もしくはコンピューター上またはコンピューター・ネットワーク上でシミュレートされている状態)」と定義されています。私達が IT の世界での「仮想化」について話す多くの場合は、単にコンピューター上の実際のリソース (サーバー上のプロセッサーなど) とそのリソースのコンシューマー (そのサーバー上で実行されるアプリケーションなど) との間にある何らかの抽象化層のことを指しています。控えめな言い方をしても、「仮想化」という言葉の定義そのものや、「仮想化」という言葉について一般に認識されている解釈では、実にさまざまな意味合いで「仮想化」という言葉が用いられる可能性が残されています。実際、クラウド・コンピューティングが登場したのに伴い、「仮想化」という言葉は「サービス」という言葉と同じぐらい過剰な意味を持たされていると言えます。さらに今や、ほとんどすべてのプロバイダーが「仮想化サービス」を提供しています。

念のため言っておきますが、私は「virtualized (仮想)」とか「virtualization (仮想化)」といった言葉を使う上で困っているわけではなく、自らこれらの言葉を極めて頻繁に使っています。しかし、これらの言葉があまりにもいろいろな範囲のものを指して使われるため、その言葉が正確には何を表しており、自分にとってどういう意味があるのかを理解しようとして、多くの人が苦労しているのを目の当たりにもしています。より具体的に言えば、仮想化について私と話をした人が持っている大きな疑問は次の 2 つです。

  • どんな種類の仮想化を採用すればよいのか?
  • そうした仮想化技術には、どんなメリットがあるのか?

この 2 つの疑問への答えを得るために、私はよくユーザーに対して、「現在抱えている問題点をリストアップし、それらに対して受け入れ可能な解決方法を説明してください」と言います。そうした情報が得られると、その状況に適した仮想化手法を特定するのが極めて容易になります。

どの企業においても、その企業の抱える問題点は IT のあらゆる側面に関連していると思いますが、私は通常、ミドルウェア・アプリケーション環境のビルド、デプロイ、管理を行っているチームの人達と話し合います。驚くべきことに、このミドルウェア・アプリケーション環境という領域では、企業が抱える具体的な問題点、さらには業界が抱える具体的な問題点が極めて共通しています。ミドルウェア・アプリケーション環境における問題がどのような形で現れるかは、組織によってほぼ間違いなく異なりますが、その多くの問題の根本原因は大抵同じです。これらの問題には、プロビジョニングに時間がかかる、構成に一貫性がない、アプリケーションの可用性が一定しない、アプリケーションの応答性が確定的でない、設備投資と運用経費が増大している、等々があります。

アプリケーション・ミドルウェアを扱っている人にとっては、こうした問題点のうちの少なくとも 1 つはおなじみのものであるはずです。その場合には、私がこれまで他の無数のユーザーに提案してきた 2 つのタイプの仮想化、つまり「サーバー仮想化」と「アプリケーション仮想化」を提案したいと思います。


仮想マシンのことですか?

クラウド・コンピューティングについての最初の質問を次のように変えてみます。「仮想化」という言葉を耳にしたとき、皆さんが最初に思い浮かべることは何でしょう?

私の経験では、ほとんどすべての人が「仮想マシン」と答えます。仮想マシンが非常に広く使用されていることを考えると、これは十分理解できることです。仮想マシンは、おそらく最も一般的なタイプの仮想化である、サーバー仮想化の基礎をなすものです。

サーバー仮想化は、新しいものではありません。その歴史を辿っていくと、メインフレームと同じくらいの歴史があり、今ではほとんどすべての組織がサーバー仮想化を使用しています。では、サーバー仮想化とは何なのでしょう?ごく簡単に言えば、サーバー仮想化とは、サーバーの物理リソース (CPU、メモリー、ストレージ) を、コンシューマーに表示される論理リソースから抽象化することです。サーバー仮想化を実現する一般的な技術がハイパーバイザーです。ハイパーバイザーは、サーバー上に存在するゲストとサーバーの物理リソースとの間にスケジューリングとメディエーションを行う層を提供します (図 1)。

図 1. ハイパーバイザーによるサーバー仮想化
ハイパーバイザーによるサーバー仮想化

ハイパーバイザー機能は、サーバーのファームウェアに組み込まれている場合もあれば、サーバーにインストールされるソフトウェアとして提供される場合もあります。いずれにせよ、どのようなハイパーバイザーを使用した場合も、基本的な結果は同じです。ハイパーバイザーを使用することにより、1 つのハードウェア上で複数のゲスト (仮想マシン) を実行することができます。これはつまり、ある 1 つのソフトウェア・スタックの複数インスタンスを 1 つの物理マシン上で実行できるということです。ハイパーバイザーの役割は、サーバーの物理リソースへのアクセスを複数のゲストに効率的に提供することです。

サーバー仮想化によって、ミドルウェア・アプリケーション環境をはじめとする多種多様な環境に、さまざまなメリットがもたらされます。主なメリットとしては、リソース使用率を高められることが挙げられます。これにより、非常に多くの組織で共通の問題となっている、極めて多くのサーバーでの低い使用率を改善することができます。ソフトウェア・スタックの複数インスタンスを 1 つのマシンで実行することにより、大抵の場合は 1 つのソフトウェア・スタックをホストするよりも効率的にサーバーを使用できるはずです。アセット使用率を高められるだけではなく、サーバー仮想化によってプロビジョニングの高速化や、設備投資と管理コストの低減も実現することができます。ただし、問題があります。サーバー仮想化によるさまざまなメリットを実現するためには、サーバー仮想化の使用を効果的に管理する必要があります。

そこで IBM WebSphere CloudBurst Appliance を使用すれば、IBM WebSphere Application Server 環境でのサーバー仮想化を効果的に管理することができます。図 2 に示すように、このアプライアンスは仮想化された Web アプリケーション環境のライフサイクル全体に注目し、その環境を管理します。

図 2. WebSphere CloudBurst によってサーバー仮想化を効果的に管理する
WebSphere CloudBurst によってサーバー仮想化を効果的に管理する

WebSphere CloudBurst を使用するには、まず始めにカスタマイズした環境を定義します。その環境は 1 つの仮想マシンで構成されるものであっても、複数の仮想マシンで構成されるものであっても構いません。環境を定義できたら、WebSphere CloudBurst は仮想マシンのデプロイメントと構成の自動化および調整を行い、仮想化されたサーバー上で実行されるカスタマイズされた WebSphere Application Server 環境を作成します。仮想マシンがデプロイされると、WebSphere CloudBurst を使用して仮想環境の管理と監視を中央から行えるようになります。デプロイメントが完了したら、WebSphere CloudBurst から仮想マシンを削除して、仮想マシンが使用していたリソースを組織内の大規模なリソース・プールに確実に返すことができます。仮想化スプロールの危険に屈することなく仮想化技術のメリットを享受するには、サーバー仮想化に対する、このような全体的なアプローチが必要になります


アプリケーション仮想化

プライベート・クラウドに移行しようとしているユーザーと話をするとき、私はよく、サーバー仮想化は単にプライベート・クラウドを実現するための 1 つの手段に過ぎないことを指摘します。サーバー仮想化の重要性やサーバー仮想化によってもたらされる価値をおとしめるつもりはありませんが、プライベート・クラウドを構築しているのであれば、単なるサーバー仮想化以上のことをする必要があります。具体的には、ミドルウェア・アプリケーション環境のためのプライベート・クラウドを構築している場合には、アプリケーション仮想化が不可欠です。

ごく簡単に言えば、アプリケーション仮想化とは、アプリケーションの土台となるインフラストラクチャー・リソース (アプリケーション・サーバーやアプリケーション・クラスターなど) からアプリケーションを抽象化することです。そしてこの抽象化は、より自律的なクラウド・コンピューティング環境を構築する基礎となります。アプリケーション仮想化のメリットをよく理解するためには、アプリケーション仮想化を提供するソリューションを調べてみると役に立ちます。幸い、私はまさにそうしたソリューションを知っています。

IBM WebSphere Virtual Enterprise のアプリケーション仮想化を利用すると、より動的なミドルウェア・アプリケーション環境を構築することができます。なかでも注目すべき点として、アプリケーションを実行する際のパフォーマンス目標を示すサービス・ポリシーを設定することができます。例えば、アプリケーションに対するリクエストの 95% が 2 秒未満の応答時間でなければならない、というサービス・ポリシーを作成することができます。WebSphere Virtual Enterprise はこのサービス・ポリシーを利用して、ポリシーに記述された目標をアプリケーションが確実に達成するように自律的に監視を行います。

図 3 は WebSphere Virtual Enterprise 環境のアーキテクチャーを単純化したものです。特に、アプリケーション仮想化に不可欠の 2 つのコンポーネントである、オンデマンド・ルーター (On-Demand Router) と動的クラスター (Dynamic cluster) があることに注意してください。

図 3. アプリケーション仮想化を利用した動的環境
アプリケーション仮想化を利用した動的環境

WebSphere Virtual Enterprise 環境にリクエストが到着すると、リクエストはオンデマンド・ルーターに転送されます。オンデマンド・ルーターは、ユーザーが設定したサービス・ポリシーに従ってリクエストの優先順位を判断し、インテリジェントにルーティングを行う役割を担っており、転送されてきたリクエストを動的クラスターに送信します。動的クラスターはアプリケーション・サーバーやアプリケーションのインスタンスが利用するリソース・プールを表します。サービス・ポリシーと、システムの現在の状態を基に、WebSphere Virtual Enterprise は動的クラスター内でアプリケーションのインスタンスを自動的にスケーリングし、サービス・ポリシーの中で表現された目標を確実に達成します。

WebSphere Virtual Enterprise は、ポリシー・ベースでアプリケーションをスケーリングする他に、この製品の中核としてのアプリケーション仮想化機能を利用した他の自律型 (オートノミック) 機能も提供します。例えば、アプリケーションにヘルス・ポリシーを追加し、実行時に特定の条件 (例えば Java ヒープの枯渇など) が発生した場合に WebSphere Virtual Enterprise に自動的に修正アクションを実行させることができます。WebSphere Virtual Enterprise はアプリケーション仮想化機能を持っているため、その修正アクションを実行し、アプリケーションの可用性を一定に維持することができます。


仮想化の方式を組み合わせる

ここまでの説明で、サーバー仮想化とアプリケーション仮想化によって、クラウドのような方式をミドルウェア・アプリケーション環境に実現できることが明らかになったことを願います。この時点では、皆さんはこの 2 つの方式の仮想化は相互排他的なのではないか、と思っているかもしれませんが、その答えは完全に「ノー」です。実際、サーバー仮想化とアプリケーション仮想化の両方を組み合わせることによるメリットがいくつもあり、それらのメリットはクラウド・コンピューティング環境にも生かせるはずなのです。

図 4. サーバー仮想化とアプリケーション仮想化とを組み合わせる
サーバー仮想化とアプリケーション仮想化とを組み合わせる

図 4 を見るとわかるように、サーバー仮想化とアプリケーションと仮想化には、それぞれ独特のメリットがあり、一部のメリットは重複しています。ただし一般に、サーバー仮想化はハードウェア・リソースに対してメリットがあり、アプリケーション仮想化はアプリケーション・リソースに対してメリットがあります。ミドルウェア・アプリケーション環境のためのクラウド環境を作成する場合には、両方のタイプの仮想化を組み合わせて使用することにより、クラウドを構成するハードウェア・リソースに対するメリットとクラウド内に存在するアプリケーション・リソースに対するメリットの両方を活かすのが妥当です。

この点から、WebSphere CloudBurst Appliance と WebSphere Virtual Enterprise は、クラウド・コンピューティング環境にとって重要な組み合わせであることは明らかです。WebSphere Application Server Hypervisor Edition の Intelligent Management Pack は WebSphere Application Server Hypervisor Edition のオプションのアドオンであり、WebSphere CloudBurst から有効にすることができます。Intelligent Management Pack を有効にすると、WebSphere CloudBurst からWebSphere Virtual Enterprise のパターンをビルドしてプライベート・クラウドにデプロイすることができます。こうすることで、WebSphere CloudBurst によるサーバー仮想化のメリットと、WebSphere Virtual Enterprise によって実現されるアプリケーション仮想化のメリットのすべてを、WebSphere CloudBurst の管理コンソールから活かすことができます。


まとめ

ミドルウェア・アプリケーション環境のためのクラウド・コンピューティング環境を構築、運用しようとする場合、サーバー仮想化手法とアプリケーション仮想化手法の両方を詳細に検証する必要があります。どちらにも具体的なメリットがあり、2 つを組み合わせると、クラウドにとって強力な手法になります。皆さんもぜひ WebSphere CloudBurst、WebSphere Virtual Enterprise、そしてその 2 つを結ぶ、WebSphere Application Server Hypervisor Edition の Intelligent Management Pack を検討してみてください。皆さんがクラウドで成功することをお祈りします。

参考文献

学ぶために

議論するために

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=WebSphere, Cloud computing
ArticleID=822577
ArticleTitle=実現可能なイノベーション: 仮想化についてのモヤモヤを解消する
publish-date=06282012