連載:Java「仮想化」開発環境を検証(3)

仮想化によるJava開発環境の有効性を評価

スティルハウス
吉川和巳
2005/11/3



 本連載では、最近J2EEのプラットフォームにも採用されるようになってきた仮想化技術を実際にハイスペックなPCに導入し、その有効性を検証する試みを計3回にわたって紹介している。

 最終回は、Java開発環境への仮想化技術の適用について、そのメリットを総括しよう。

Java開発環境のセットアップでラクをする

  VMwareでは、仮想マシン全体をコピーする「クローン機能」が用意されており、これが開発環境のセットアップ作業において優れた威力を発揮します。例えば、以下のような仮想マシンの「テンプレート」を準備しておけば、それをクローンするだけで開発環境を瞬時に用意できます(図1)。

  • Red Hat LinuxやWindows XPなどのOSインストール済み仮想マシン
  • JDK、Ant、Apache+Tomcat、PostgreSQLなどインストール済みの仮想マシン
 
図1 各種ソフトウェアがインストール済みの仮想マシンをクローンする

 このクローン機能を利用すれば、これまで長時間のインストール作業を要してきた開発環境の構築が、ほんの数十秒で完了します(ただし商用ソフトウェアについては、クローン先の仮想マシンについてもライセンス購入が必要です)。

 VMwareのもう1つの特徴的な機能は、「スナップショット機能」です。例えば1つの開発環境を長期間使用していると「このマシンちょっと調子が良くないな……」と感じることもあります。そうした場合、仮想マシンのスナップショットをあらかじめ作成しておけば、クリック1つで仮想マシンを以前の状態に戻せます。

 またスナップショット機能とクローン機能を組み合わせれば、仮想マシンのバージョン管理的な使い方も可能です。図2に示すように、スナップショットを複数の系統にクローンし、任意の系統の仮想マシンをいつでも呼び出せます。つまり、CVSなどによるソースコードのバージョン管理を、PC丸ごと実施するような感覚です。

 
図2 スナップショットのツリー

 加えて、開発環境の仮想化により、プロジェクトごとに専用マシンを確保するのがとても簡単になります。プロジェクト専用のApacheやTomcat、JBossなどを用意できるほか、チーム開発を支援する CVSやWikiも個別に立てられます。

 プロジェクトによっては、お客さまや協力会社などの社外ユーザー向けログイン・アカウントを用意し、リモート・アクセスしてもらって共同作業を進めたいケースもあります。ただ通常、社内で常用しているサーバに社外ユーザーのアクセスを許可するのはセキュリティ面で抵抗があるでしょう。そこでプロジェクト専用のリモート・アクセス用仮想マシンを用意し、セキュリティ上のサンドボックスとして利用します。VMwareでは仮想マシンのネットワーク仮想化をサポートしており、社内LANとは別のセグメント上で運用できます。

仮想マシンのベンチマーク結果

 今回の検証作業の仕上げとして、筆者はVMwareの仮想マシンのパフォーマンス・ベンチマークを計測しました(図3)。このグラフは、筆者が所有するノートPCを基準とした相対的な性能を示しています。それぞれ、以下の構成のPC上で計測しています。

 
図3 仮想マシンと物理マシンのパフォーマンス比較
  • ノート・・・・・・Pentium M 600MHz/2.5inch IDE HDD搭載PC
  • デスクトップ・・・・・・Pentium 4 2.4GHz/3.5inch SATA HDD搭載PC
  • 仮想マシン・・・・・・「サーバ」上で動作する VMware仮想マシン(Windows XP)
  • サーバ・・・・・・Pentium 4 3.4GHz/3.5inch SATA HDD搭載PC

 図3のグラフにて、「HDBENCH 3.4 Integer」および「同Float」はそれぞれ整数演算性能と浮動小数点演算性能を示しています。また「Business Disk WinMark 99」は、ハードディスクのランダムアクセス性能を表します。この結果のとおり、筆者の環境の仮想マシンでは、大ざっぱにいって物理マシンの2/3程度の性能が得られています。もっとも、残り1/3のすべてがオーバーヘッドに消えるわけではありません、VMware Workstation 5では、仮想マシンのCPU使用率が100%に達したときでも物理マシンのCPU使用率は60%程度にとどまり、残りは余力として確保されます。

 VMwareのこうした振る舞いには一長一短があります。デメリットは、JSPコンパイルのようなバースト的な負荷に対して、物理マシンのポテンシャルをフルに引き出せない点です。一方メリットは、仮想マシン内のトラブルが他の仮想マシンの運用に影響を及ぼすのを防げる点です。例えばある仮想マシンでトラブルが発生し、使用率100%の状態が長時間継続しても、ほかの仮想マシンが極端に遅くなることはなく安定運用が可能です。ちなみにVMwareの上位製品では、こうしたCPUリソースの配分をポリシーベースで制御するサービスレベル管理に対応しています。

 いずれにせよ、今回筆者の環境にVMwareを導入することで、デスクトップPCを上回る性能の仮想マシンを4台運用できるようになりました。これにより、ApacheやPostgreSQLのソースからのビルドをはじめ、アプリケーションのビルド、そしてJSPコンパイルといった作業が、以前の非力なサーバに比べて格段に快適になりました。もちろん、複数の仮想マシンに同時に負荷が掛かると、それぞれの性能は半減します。とはいえ、各仮想マシンを個別のプロジェクトで使用しているので、そうした状況はまれです。こうして、サーバ・リソースの「不足」と「持て余し」という、相反する問題を同時に解決できました。

 以上、VMwareによるJava開発環境の仮想化がもたらすメリットを紹介しました。実際の開発現場でも、仮想化環境の評価が進めば、作業場に何台ものPCを並べて開発するおなじみの光景も、意外とすぐに姿を消すのかもしれません。




Java Solution全記事一覧

 



Java Agile フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Java Agile 記事ランキング

本日 月間