アーキテクチャ・ジャーナル

クラウドへのアプリケーションのマッピング

Darryl Chantry
2009/12/07

付録 B : クラウド インフラストラクチャのプラットフォームと仮想化のタイプ

クラウド インフラストラクチャのプラットフォームと仮想化のタイプ

 クラウド コンピューティング プラットフォームを可能にするテクノロジの 1 つに、仮想化があります。仮想化とは、コンピューティング リソースを抽象化する機能です。現在のクラウド インフラストラクチャ プラットフォームで主流を占めているのは、完全仮想化と準仮想化という 2 つのタイプです。

 仮想化にはこの 2 つ以外にも多くの種類がありますが、この付録では、クラウド インフラストラクチャ サービスで実装される可能性の高い仮想化の手法をいくつか考察することにします。

エミュレーション

 このタイプの仮想化では、修正を加えていないゲスト オペレーティング システム(OS)が必要とするハードウェア アーキテクチャをエミュレートします。ハードウェアのエミュレーションが使用される一般的な例として、モバイル デバイスがあります。たとえば、アプリケーションの開発者はエミュレートされた環境を使用して、スマートフォンや PDA 用に設計されたアプリケーションをテストします(図 8 を参照)。

図 8: エミュレーションによる仮想化環境

 利点 : 基盤となるハードウェアとはまったく異なるハードウェア環境をシミュレートします。この例として、デスクトップ PC 上でエミュレートされるスマートフォンなどのモバイル デバイスがあります。

 欠点 : パフォーマンスが低く、大量のリソースを消費します。

完全仮想化

 完全仮想化では、修正を加えていない完全なゲスト OS のイメージを作成し、仮想環境内で実行します。エミュレーションと異なるのは、仮想化されたすべてのゲストが同じハードウェア アーキテクチャ上で実行される点です。ゲストはすべて同じハードウェアをサポートするので、多くの命令を直接ハードウェア上で実行できます。これは、パフォーマンスの向上につながります(図 9 を参照)。

図 9: 完全仮想化環境図

 利点 : 複数のベンダーが提供する複数の OS バージョンを実行できます(Microsoft Windows Server 2003、Windows Server 2008、Linux、UNIX など)。

 欠点 : 仮想化されるイメージは OS の完全インストールであるため、ファイル サイズが非常に大きくなる場合があります。多大な負荷が余分に発生(特に汎用ハードウェアで)する場合があるため、I/O を大量に消費するアプリケーションは悪影響を受ける可能性があります。

準仮想化

 準仮想化では、ハイパーバイザーが物理ハードウェアの修正済みのコピーをエクスポートします。エクスポートされたレイヤーは、サーバーのハードウェアと同じアーキテクチャを持ちます。ただし、ゲスト OS をネイティブとほぼ同じ速度で実行できるようにするには、このレイヤーに修正を加える必要があります。また、修正された呼び出しを利用できるようにするには、ゲスト OS にも多少の修正を加える必要があります。たとえば、物理ハードウェアと同じ機能を提供するハイパーコールを使用するには、ゲスト OS を修正しなければなりません。ただし、ハイパーコールを使用することによって、仮想環境で実行した場合のゲスト OS の効率性が大幅に向上します(図 10 を参照)。

図 10: 準仮想化環境

 利点 : 軽量で高速です。イメージ サイズは大幅に小さくなり、パフォーマンスはほぼネイティブの速度に達します。通常は完全仮想化をサポートしないアーキテクチャも仮想化できます。

 欠点 : ゲスト OS に修正を加える必要があります。この修正は、OS がネイティブ関数の代わりにハイパーコールをサポートするために必要です。

OS レベルの仮想化

 OS 仮想化では、仮想マシンは使用されません。仮想化は、すべて単一の OS 内で行われます。ゲスト システムは基盤となる OS の機能とドライバーを共有しますが、完全に独立したコンピューターのように扱うことができます。各ゲスト インスタンスは固有のファイル システム、IP アドレス、サーバー構成を持ち、まったく異なるアプリケーションを実行します(図 11 を参照)。

図 11: OS 仮想化環境

 利点 : 高速、軽量、効率的で、多くの仮想インスタンスをサポートできます。

 欠点 : インスタンスの分離とデータのセキュリティは、軽視できない問題です。すべての仮想インスタンスが、同じ OS をサポートしなければなりません。

アプリケーション仮想化

 アプリケーション仮想化は、他の仮想化のタイプと同様に、仮想化レイヤーを必要とします。仮想化レイヤーは、仮想化されたアプリケーションが基盤となるファイル システムに対して行う呼び出しをすべてインターセプトし、仮想の場所にリダイレクトします。アプリケーションは物理プラットフォームから完全に抽象化されており、仮想化レイヤーとのみ対話します。これにより、互いに互換性のないアプリケーションを共存させることができます。たとえば、Microsoft Internet Information Services 4.0、5.0、および 6.0 をすべて共存させることができます。この手法では、本来対応していない OS 上でもアプリケーションをシームレスに実行できるため、アプリケーションの移植性が向上します(図 12 を参照)。

図 12: アプリケーション仮想化環境

 利点 : アプリケーションの移植性が向上し、さまざまなオペレーティング環境で実行できるようになります。互換性のないアプリケーションを共存させることができます。オンデマンド アプリケーション ストリーミングにより、アプリケーションの開発に要する時間を短縮できます。

 欠点 : 仮想マシンのサポートによって発生するオーバーヘッドは、ランタイムおよびネイティブ環境の両方でアプリケーション実行の速度を低下させる可能性があります。すべてのソフトウェアを仮想化できるわけではないので、完全なソリューションとはいえません。

 

 INDEX
  [アーキテクチャ・ジャーナル]
  クラウドへのアプリケーションのマッピング
    1.クラウドとクラウド コンピューティング : どちらが先か ?
    2.アプリケーションはすべてクラウドに移行されるか ?
    3.クラウドは 1 つか ?
      付録 A : アプリケーション マッピング属性/クラウド マッピング属性のサンプル
    付録 B : クラウド インフラストラクチャのプラットフォームと仮想化のタイプ

インデックス・ページヘ  「アーキテクチャ・ジャーナル」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間