Typemock: その過去・現在・未来
Eli Lopian氏率いるTypemock社の過去・現在・未来について、インタビュー形式にて記します。

作者 Scott Delap, 翻訳者 金森 諭 投稿日 2008年9月24日 午前11時21分
IT 業界というのはバズワードをやたら使ったり自分たちを表現する言葉をむやみに変えたりするところです。この業界が使う最新の用語はx86のような特定のテクノロジだったりグリーンコンピューティングのようなコンセプトだったりします。言葉はこの業界が進むにつれて生まれては消えていきます。ここ数年では、仮想化という言葉がIT業界の最新のバズワードになっています。ここでこんな疑問が浮かびます。仮想化とはそもそも何なのでしょうか?この業界の普通のプロなら、ひとつのホスト上でひとつあるいは複数のゲストOSを動かすこと、というのをまず思い浮かべます。しかしもう少しよく考えてみると、これは狭すぎる定義であることが明らかになります。仮想化されるものには多くのサービスやハードウェアやソフトウェアがあるのです。このArticleではそれぞれの利点と欠点を見ながらこれらの仮想化の違いについて詳しく追っていきます。仮想化のカテゴリによる違いを詳しく論じる前に、まずこの言葉を概要的に定義しましょう。Wikipedia(英語版)では次のような定義が使われています。「コンピューティングにおいて、仮想化はコンピュータリソースの抽象化を指す広義の言葉である。仮想化によりコンピューティングリソースの物理的な性質はアプリケーションやエンドユーザといった利用者から隠蔽される。これには単一の物理リソース(サーバやOSやストレージ機器など)が仮想的に複数のリソースとして機能することや、複数の物理リソース(複数のストレージ機器やサーバなど)が仮想的に単一のリソースとして機能することが含まれる。・・・」
平たくいえば仮想化とは大体次のことです。
ネットワーク、ストレージ、ハードウェアなどさまざまな所において、このどちらかの概念を表すのに仮想化という言葉がよく使われます。
仮想化という概念は新しいものではありません。この分野での初期の業績(リンク)のひとつにChristopher Strachey氏の「Time Sharing in Large Fast Computers(大規模高速コンピュータの時間共有)」というタイトルの論文があります。そしてIBMが実験システムのCP-40とM44/44X(リンク)で仮想化に取り組み始めました。これらは商用システムのCP-67/CMSへとつながりました。別々のユーザへスタンドアローンコンピュータをシミュレートして提供するというのがこの時代の仮想マシンの考え方でした。
80年代から90年代初めになって、世の中が単一のメインフレームを利用することから小さく安価なx86サーバの集まりを動かす方へ変わりました。その結果、仮想化の考え方はあまり注目を浴びなくなりました。この状況を変えたのが1999年のVMware社(リンク)によるVMWare Workstationの発表でした。この後、VMwareのESX Serverではハードウェア上で動かせるようになり、ホストOSは必要なくなりました。
今日では仮想化という言葉は次のような数多くの概念において広く用いられています。
これらのほとんどの場合で、単一の物理リソースを複数の仮想リソースに仮想化するか、複数の物理リソースを単一の仮想リソースに仮想化するかのどちらかが行われます。
サーバ仮想化は仮想化業界でもっともアクティブな領域で、その動きの中心となっているのはVMwareやMicrosoft(参考記事)やCitrix(リンク)のような企業です。サーバ仮想化では単一の物理マシンが複数の仮想サーバへと分割されます。このような仮想化のコアになるのは、ハイパバイザ(仮想マシンモニタ)という考え方です。ハイパバイザは軽いソフトウェアレイヤで、OSのハードウェア呼び出しをインターセプトします。通常ハイパバイザは実行しているゲストサーバに仮想化したCPUやメモリを提供します。この言葉はIBM CP-370の出現と共に初めて使われました。
ハイパバイザは次のいずれかのタイプに分類されます。
サーバ仮想化はそのテクノロジを用いる企業に数多くの恩恵をもたらします。よく取り上げられるのは以下のことです。
逆にマイナス面も生じる可能性があり、そのことを考慮する必要があります。
仮想化はサーバ分野だけの技術ではありません。クライアントサイドでもデスクトップとアプリケーションの両方で多くの利用が行われています。このような仮想化は次の4つのいずれかに分類することができます。
Wikipedia(英語版)ではアプリケーション仮想化を次のように定義しています(リンク)。
アプリケーション仮想化はアプリケーションを実行環境であるOSから離してカプセル化することで旧世代のアプリケーションの管理性と互換性を向上させるソフトウェア技術を表す包括的用語である。完全に仮想化されたアプリケーションは従来の意味でのインストールは行われないが、そのようにインストールされているように実行される。アプリケーション仮想化はOS仮想化とこの意味で異なる。OS仮想化では特定のアプリケーションだけでなくOS全体が仮想化される。
ローカルアプリケーションを仮想化してストリーム配信できるようにすることで、アプリケーションを必要に応じてインストールができるようになります。もしストリーミングが可能であればアプリケーションの中で起動に必要な部分を最初に送るようにして起動時間を最適化することができます。仮想化されたアプリケーションは、ユーザの物理マシンをクリーンな状態を保つために仮想レジストリや仮想ファイルシステムを使うこともよくあります。ローカルアプリケーション仮想化を使ったソリューションにはCitrix Presentation ServerやMicrosoft SoftGridなどがあります。VMwareのVMware Playerにより実行可能であるような仮想アプライアンス(OSとアプリケーションをセットで仮想化したもの)もこのカテゴリに含めることができるでしょう。
ホスト型アプリケーション仮想化では、ネットワーク上の別の場所にあるサーバで動いているアプリケーションにローカルコンピュータからアクセスします。 MicrosoftのRemoteAppのようなテクノロジでは、ローカルのファイルを種類に応じて処理するのにリモートのアプリケーションを使ったりすることで比較的シームレスなユーザエクスペリエンスを実現しています。
アプリケーション仮想化には以下のような利点があります。
欠点には以下のようなものがあります。
Wikipedia(英語版)ではデスクトップ仮想化をこう定義しています(リンク)。
デスクトップ仮想化(または仮想デスクトップインフラ)はサーバ集中型のコンピューティングモデルで、従来のシンクライアントモデルと同じ形態だが、エンドユーザが完全なデスクトップ環境を使える一方で、そのデスクトップをデータセンタの仮想マシンでホストして集中管理でき、管理者とエンドユーザの両方にとって最良な環境を提供できるようにデザインされている。
ホスト型デスクトップ仮想化はホスト型アプリケーション仮想化に似ていて、ユーザの利用できる範囲をデスクトップ全体に拡大したものです。この種類の商用製品にはMicrosoftのTerminal ServicesやCitrixのXenDesktop、VMwareのVDIなどがあります。
デスクトップ仮想化の利点はアプリケーション仮想化の利点のほとんどを含みますが、それ以外にも次のような利点があります。
デスクトップ仮想化の欠点はサーバ仮想化と共通しています。その他にもクライアントに仮想デスクトップにアクセスできるネットワーク接続がないといけないという欠点もあります。これはオフラインでの作業をする上で、またオフィスのネットワーク使用量が増えるという点で問題の原因となります。
クライアント仮想化の最後の区分はローカルデスクトップ仮想化です。VMwareが90年代後半にVMware Workstationで仮想化の復権を果たしたのはこの仮想化においてだったといえます。現在ではMicrosoft Virtual PCやParallels Desktopといった競合製品があります。ローカルデスクトップ仮想化はIntelプロセッサへ移行してからのAppleの成功のキーとなる要因でもありました。なぜならVMware FusionやParallelsのような製品のおかげでWindowsアプリケーションへ容易にアクセスできるからです。ローカルデスクトップ仮想化の利点には次のことが含まれます。
これまではアプリケーションやマシン全体の仮想化を中心にカバーしてきました。しかしこのレベルだけが仮想化の対象ではありません。ソフトウェアにより仮想化できるコンピューティング概念は他にもあります。ネットワーク仮想化もそのような概念のひとつです。Wikipedia(英語版)ではネットワーク仮想化を次のように定義しています(リンク)。
コンピューティングの世界においてのネットワーク仮想化は、ハードウェアやソフトウェアのネットワークリソースとネットワーク機能をひとつのソフトウェアベースの管理要素である仮想ネットワークとしてまとめあげる方法である。ネットワーク仮想化にはプラットフォームの仮想化も含まれ、リソースの仮想化が行われることも多い。ネットワーク仮想化には、複数のネットワークあるいはネットワーク部分をひとつの仮想ユニットにまとめる対外部のものと、単一のシステム上にある複数のソフトウェアにネットワーク機能を提供する対内部ものがあり・・・
ここにある対内部ということについていえば、デスクトップやサーバの仮想化はホストとゲスト(単一あるいは複数のゲスト)の間にネットワークアクセスを提供することです。サーバサイドの仮想スイッチもそのような仮想化技術のひとつとして受け入れられつつあります。ネットワーク仮想化の対外部の面では、ネットワーク仮想化という言葉より他の言葉を使うことが多いようです。Virtual Private Networks(VPNs)はVPNの使用を認めている企業のほとんどで、ネットワーク管理者がよく使う方法のひとつとなっています。Virtual LANs(VLANs)もネットワーク仮想化の概念を使った方法です。10ギガビットのイーサネットのようなネットワークの進歩もあり、物理的な配線に合わせてネットワークを構成する必要はもはやなくなりました。このような製品を扱う企業にはCiscoや3Leafなどがあります。
一般的にネットワーク仮想化には次の利点があります。
サーバ仮想化と同じように、ネットワーク仮想化でも複雑性が増したり、パフォーマンスでのオーバーヘッドの増大、管理に必要なスキルセットが多くなるなどの問題が考えられます。
よく仮想化されるコンピューティングの対象にはストレージもあります。これまでの仮想化では複雑な定義があったのもあるに比べると、Wikipedia(英語版)でのストレージ仮想化の定義はいたってシンプルです(リンク)。
ストレージ仮想化は物理ストレージから論理ストレージを抽象する方法を指す。
RAID もこの機能を基盤レベルで提供しますが、通常ストレージ仮想化という言葉にはデータ移行やキャッシングといった概念も含まれます。上記の機能を実現する方法は多岐に渡り、そのためストレージ仮想化を特定の方法で定義するのは困難です。典型的には次のような方法があります。
このことについて各ベンダは異なるアプローチを採っています。ストレージ仮想化をin-bandかout-of-bandのいずれかに分ける分類方法もあります。in-band仮想化(対称仮想化とも呼ばれます)はホストとキャッシングをおこなっているストレージデバイスの中間に位置します。out-of- band仮想化(非対称仮想化とも呼ばれます)は、メタデータ(ファイルがどこに存在するかを示します)を参照するデバイスドライバをベースにした特別なホストで、これによりホストはストレージから直接ファイルを読み込むことができます。この方法の場合、仮想化のレベルでキャッシングをおこなうことはできません。
ストレージ仮想化の一般的な利点には以下のものがあります。
欠点といえるものには次のようなものがあります。
エンタープライズアプリケーションのプロバイダが注目している仮想化に、Apacheのようなよく使われているアプリケーションの仮想化を実現するソリューションや、ソフトウェアを仮想化に対応させて構築するためのアプリケーションファブリックプラットフォームと呼ばれるものがあります。
アプリケーションインフラの仮想化(時にアプリケーションファブリックとも呼ばれます)はアプリケーションを物理的なOSやハードウェアから切り離します。そしてアプリケーション開発者は仮想レイヤ上でプログラムすることができるようになります。このような構成ではデプロイやスケーリングといったこともできます。基本的にこの方法(リンク)はグリッドコンピューティングを発展させて仮想化レベルの機能を提供するファブリック接続形式にしたものです。Appistry(参考記事)や DataSynapse(リンク)のような企業は次のような機能を提供しています。
IBMもアプリケーションインフラの仮想化のコンセプトを取り込もうと、Webshpere XDをWebsphere Virtual Enterprisise(リンク)というブランドに変えて継続しています。この製品にはサービスレベルの管理やパフォーマンスのモニタリング、耐障害といった機能があります。ソフトウェア自体はWindowsやUnixやLinuxベースのOS上で動き、WebSphere、Apache、BEA、JBossといった主要なアプリケーションサーバやPHPのアプリケーションサーバと連携します。このことで管理者はアプリケーションサーバを物理マシンのレベルでなく仮想化レイヤのレベルにデプロイ・移動することができます。
これまでのことから仮想化が単にサーバベースの概念ではないことが明らかになったはずです。この手法は広範囲のコンピューティングにおいて適用することができ、次のような仮想化が含まれます。
このテクノロジには多くの手法がありますが、重要なものは、既存分野のおいてのさらなる安定という軸と、仮想化をどんどん取り入れようとしている業界の一角による採用の加速という軸を中心に回っています。最近Microsoftがベアメタルなハイパバイザの分野にHyper-V(参考記事)で参入してきたことは、このテクノロジが業界において成熟しようとしている表れです。
これまで紹介したコアとなる要素を超えた未来の仮想化も続々と描かれています。それが現実のものになるかは製品または機能として提供されるかにかかっています。RedHatや多くのストレージベンダーなどの企業では、自社の既存商品を補完するものとして仮想化が扱われようとしています。VMwareのような企業は仮想化をビジネスとして確立しています。InfoQでは今後もこのテクノロジや関係する企業の進展を追っていきます。
原文はこちらです:http://www.infoq.com/articles/virtualization-intro
(このArticleは2008年7月2日に原文が掲載されました)
この論文では、仮想化やクラウドサービスの複雑なメリットと実世界における応用を検討します。さらに重要なこととして、Contegixが複雑な問題の解決に仮想化を実装している方法や、仮想化を使うべきではないケースについて詳細を提供します。
Fiberはユーザに試練を課すことなくこの考えを実装する有益な並行性ツールとして、ライブラリが2つあります。まさにこのためのソリューションとしてあるのがNeverBlockライブラリです。私たちはNeverBlockプロジェクトのMohammad A. Ali氏とRevactorライブラリのTony Arcier氏に話を聞きました。
システムの保守容易性や拡張性を確保するためのベスト・プラクティスに関する記事は数多くありますが、この記事では避けた方がいい、いくつかの悪習慣(ワースト・プラクティス)を強調します。
この記事では、私達がどのようにして大規模(240人月、10万行強)でインドとオランダの開発者も参加したスクラム・プロジェクトを成功させたのかを示しています。
Agileカンファレンスに「参加者としてだけでなく、発表者として参加しよう」を掲げたチームgoyattomは、サブミッションを提出し、7つのセッションが日本から選択されました。参加者はカンファレンスで各々の発表や、各セッションへの参加、諸外国のエンジニアとの出会い、ステージ上で DearXPを熱演などの様々な思い出を抱えて、無事日本に戻ってきました。
マイクロソフトのRobert Bellが、SilverlightとJavaを使用したインターオペラビリティのシナリオを紹介し、サンプルコードを例にとってアーキテクチャの手引きを提供します。
No comments
返信