連載: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全記事一覧 |
- 実運用の障害対応時間比較に見る、ログ管理基盤の効果 (2017/5/9)
ログ基盤の構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。今回は、実案件を事例とし、ログ管理基盤の有用性を、障害対応時間比較も交えて紹介 - Chatwork、LINE、Netflixが進めるリアクティブシステムとは何か (2017/4/27)
「リアクティブ」に関連する幾つかの用語について解説し、リアクティブシステムを実現するためのライブラリを紹介します - Fluentd+Elasticsearch+Kibanaで作るログ基盤の概要と構築方法 (2017/4/6)
ログ基盤を実現するFluentd+Elasticsearch+Kibanaについて、構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。初回は、ログ基盤の構築、利用方法について - プログラミングとビルド、Androidアプリ開発、Javaの基礎知識 (2017/4/3)
初心者が、Java言語を使ったAndroidのスマホアプリ開発を通じてプログラミングとは何かを学ぶ連載。初回は、プログラミングとビルド、Androidアプリ開発、Javaに関する基礎知識を解説する。
|
|