BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース JEEおよびGroovy開発者からの支持が高いAmazon EC2

JEEおよびGroovy開発者からの支持が高いAmazon EC2

SaaS (Software as a Service) という概念は本流となりつつあるが、HaaS (Hardware as a Service) はまだ新しい概念と言える。2006年の夏に発表されたAmazonのEC2 (Elastic Computer Cloud) (サイト・英語)は、このようなサービスの例である。EC2は、Xen (source) hypervisor構造に基づくコンピューティングサービスだ。これによって、開発者は、Linuxベースの仮想マシンを、まったく最初から、またはビルド前のイメージファイルを使用して、作成することができる。さらに、WebサービスAPI、またはそうしたAPIをラップするスクリプトラッパーを使用することによって、必要な数の仮想マシンをすばやく配置することが可能だ。

こうした仮想マシン (Virtual Machine: VM) 構造によって、Amazonはハードウェアの物理的制限を最大サイズとしてさまざまなサイズのVMを提供することが可能になった。現在、Amazonが提供するインスタンスは、既定であるスモールインスタンス (メモリ1.7 GB、1.0 ~ 1.2 GHz 2007 Opteron/Xeonプロセッサ1個、インスタンスストレージ160 GB、32ビットプラットフォーム) に加えて、ラージインスタンス (メモリ7.5 GB、スモールインスタンスと同じスペックのプロセッサ4個、インスタンスストレージ850 GB、64ビットプラットフォーム)、さらにエクストララージインスタンス (メモリ15 GB、スモールインスタンスと同じスペックのプロセッサ8個、インスタンスストレージ1690 GB、64ビットプラットフォーム) となっている。このような異なるサイズのものを組み合わせられるということは、例えば、巨大で処理の重いデータベース処理用VMを1つと、軽量なアプリケーションサーバサービス用VMを2つ必要とする場合などに有用である。さらに、AmazonでAMI (Amazon Machine Image) と呼ばれるVMイメージは、VMwareの仮想マシン (サイト・英語) と同様の方法でのアーカイブおよび転送が可能だ。こうしたメカニズムが提供されることによって、顧客は、AMIの導入や一般への公開を通じて、特定の製品を活性化したり、有料の画像ファイルを企業や個人が提供できる場を用意しそれを収入源の1つとしたりすることが可能になる。既に、GigaSpaces用、およびTomcatベースJEE環境用の2つを含む多くのAMIファイルがダウンロードできるようになっている(source)

EC2環境は、全般的にパフォーマンスが良く、RightScaleによるいくつかの初期テスト(source)では、EC2およびAmazonのS3 (Simple Storage Service) のどちらのネットワークもスループットがとても高いことがわかった。ただし、EC2にはスケーラビリティに関して大きな制限がいくつかある。まず1つとして、垂直方向のスケーラビリティは、Amazonが提供する最大のVMのサイズによって制限される。第2に、水平方向のスケーラビリティを得るには、ソフトウェアによるロードバランス技法に依存しなければならない。ソフトウェアによる技法は、一般的に、ハードウェアによるものよりも制限的である。TCPバッファリングまたはSSLオフロードなどの高度な技法を実装できないためだ。TCPバッファリングとは、ロードバランサが、Webサーバから遅いクライアントに送信される応答をバッファすることで、Webサーバを開放し、別のタスクに進むことができるようにする技術である。さらに、EC2環境はVMベースであるので、Linux環境ではごく一般的となっているカーネル変更やその他のOSレベルの最適化など、下位レベルの技法は使用できない。より大きなVMベース環境となると、設定および保守が難しくなることがあるので、その他の問題も発生する。

より大きなVMインスタンスを毎日24時間のサービス提供のために使用しようとする場合は、コストが急増する可能性にも注目しなければならない。エクストララージのVMであれば、年間7,000ドル以上のコストがかかる可能性もある。しかし、この料金体系であることによって、EC2は、キャパシティの少ないWebサーバに使用する場合や、その他の特定の使用状況では価格がかなり抑えられる。例えば、バッチ処理をするので1日24時間のサービスは不要である場合や、テストを実施するために短期間だけサービスを必要とする場合だ。 OracleのCoherence(サイト・英語)データグリッドチームは、EC2をテスト目的に使用している例である。開発担当の副社長であるCameron Purdy氏は、InfoQに次のように語っている。

AmazonのEC2以外に、クレジットカードで簡単にデータセンターを開設する方法はありません。

EC2は、短期間の、大量のリソースを必要とするタスク (つまり、大量のサーバタスク) にとても有用であり、高いコスト効果を発揮します。EC2を効果的に使用できるようにすべてをセットアップするには投資が必要ですが、そのような作業が何回も繰り返し行われるようであれば投資する価値があります。当社では、何人かのエンジニアが、製品機能の開発過程において大規模なデータグリッドのテストを実施します。しかし、当社には、1人のエンジニアに50台の専用サーバを用意する余裕はありません。このため、当社のソフトウェアのテストでは、EC2が最も簡単でコスト効率の良い手段となることがよくあります。

EC2を使用すれば、多数のVMインスタンスを同時に起動し、それを使用してデータグリッドを開始することができます。EC2でデータグリッドを稼動させる最も簡単な方法は、各アプリケーションがそれぞれのS3バケットを使用するようにすることです。EC2イメージを起動し、ユーザーがアプリケーションクラスタ名を指定します。この名前は、同時にS3バケットの名前となります。S3バケット自体は、起動プロセスを調整するために使用されます。起動プロセスでは、ノードが、新規のクラスタを作成する (データグリッドを起動する) のか、既に稼動しているクラスタに加わるのかを判断します。マルチキャストによる検出をしなくても済むようにするため、ノードは、既知アドレス (Well-Known Addresses: WKA) を含むリストを判定し、アプリケーション (実行可能 .JAR ファイル) は、コマンドライン経由で渡されるそのWKA情報を使用して呼び出されます。Coherenceは簡単に組み込むことができるので、Coherence Data Gridライブラリ(.JAR) は、イメージ自体の中に置かれています。

EC2で当社がテストしているアプリケーションの1つに、C0というコードネームのプロジェクトに含まれるものがあります。詳細は省略しますが、EC2上で稼動するこのC0データグリッドは、単一の巨大なリソースプールとなります。このリソースは、データグリッドでホストされるさまざまなアプリケーションに動的に割り当てることができます。当社は、これをテストするために、Coherence プロビジョニングエージェントをインストールしたVMイメージを構築しています。このエージェントは、起動時に、稼動の監視機能と一緒にサービスとして開始されます。エージェントがC0クラスタに参加することで、そのVMは、データグリッドが管理するリソースとして使用できるようになります。EC2は単なるWebサービスであり、それを呼び出すために使用できるJavaライブラリは多数存在するので、EC2からプログラムでサーバを割り振ることができます。自動プロビショニングシステムのようなキャパシティオンデマンド (Capacity-On-Demand) 環境では、必要なときにVMを稼動させ、必要がなくなったらそれらを停止させることが可能です。当社の場合には、そのようなシステムを稼動させるのにルールエンジンを使用します (つまり、これが、データグリッドアプリケーションとなります)。これには、必要に応じてVMを起動したり停止したりする機能があります。要するに、これは、自動的に拡大したり、縮小したりするデータグリッドです。

最後に、膨大な数のVMイメージを手動で構成し保守することは不可能に近いので、大規模な仮想化環境では、各VMに自動的に自身を構成させることも必要です。例えば、EC2はVMインスタンス固有のデータを提供します。当社ではそれを使用して、プロビショニングエージェントサーバのHTTPホストおよびポートなどを構成したり、バンドルおよびコードリポジトリとしてのS3にアクセスしたりします。このような方法の場合、ブートタスクではVMを開始する以外のことは行いません。VMが自身で構成を行うので、各VM用に固有のパラメータを指定する必要はありません。この方法の課題の1つとして、VMが自身を起動するためにS3にアクセスできるようにするには、そのVMがアカウントのAmazon AWS資格情報を使用できるようにしておく必要があります。現在のところ、これには、EC2ブートイメージ自体に資格情報を固定で記述しておくことになる場合があります。

以上をまとめると、EC2の可能性が広がるのは、大量のサーバを低い頻度で必要とするシステム、または予測不可能なパターンでサーバの数を動的に増減させることが必要なシステムです。現在のところ、当社は、EC2をデータグリッドなどの大規模システムのテストに使用していますが、今後は、顧客が本番稼動システムのプラットフォームとしてEC2を使用する可能性もあります。EC2は、しばしばSaaS (Software as a Service) として言及されますが、それ以上の機能を備えています。これは、Data center as a Service (サービスとしてのデータセンター) と言えます。クレジットカードでデータセンターを開設できるのです。

EC2のコスト効率が高いことが証明されるもう1つの分野は、新興企業による利用である。InfoQ JavaエディターのRyan Slobojan氏は、最近、Jamloop(サイト・英語)という新興企業のプロジェクトに参加した。この企業は、新品および中古の楽器を集めたり、探したりする会社である。彼のブログ(source)では、次のように、EC2が魅力的な選択肢であった理由が数多く挙げられている。

  • 「JamLoopは、高価なホスティングスペースを購入する必要も、IT担当者を雇う必要もありませんでした。また、リスクを覚悟で安価なホスティングサイトを選択したというわけでもありません。Amazonは十分に信頼のおける大手企業です。
  • JamLoopは、トラフィックパターンが変化してもそれに適応できます。突然人気が出たり、トラフィックが急増したりした場合は、新しいEC2インスタンスを作成できます。それでもサーバごとに1時間0.10ドルの支払いで済みます。
  • JamLoopのトラフィックが、通常時は20台のサーバで、ピーク時は100台のサーバで処理できる量であるとすれば、常に100台のサーバを確保しておく必要はありません。必要に応じて、増減させることができます。
  • このサイトは、楽器を集積するために使用されるので、外部データをインポートする必要があります。JamLoopは、集積のためにいくつかのインスタンスを増やし、必要な期間それを維持し、作業が完了したらそれらのインスタンスを停止することができます。.
  • コストが非常に抑えられます。サーバ時間の1日あたりは2.40ドルで、1か月でサーバあたり72ドルになります。特に、いくつもの契約をせずに、使用した分だけ払うという方式であることを考えれば、とても良い値段と言えます。
  • EC2は専用の環境であるので、JamLoopは、必要とするオペレーティングシステムおよびソフトウェアを稼動させることができます。ApacheとPHPなど、プロバイダが何をセットアップするかに制約されることはありません。」

EC2 APIの使用は簡単だが、Chris Richardson氏は、より簡単にするために、MySQL、Apache HTTPサーバを起動できるGroovyフレームワーク(source)、TomcatインスタンスのセットとJMeter、さらにAmazonのEC2への配置Webアプリケーションを提供している。このフレームワークは、まだ開発のごく初期段階であり、また、オープンソースにはなっていない (ただし、その意向はある)。それでも、Java開発者にとっては、この技術を簡単に試してみる便利な方法となっている。

原文はこちらです:http://www.infoq.com/news/2008/01/ec2-jee-groovy

この記事に星をつける

おすすめ度
スタイル

BT