ケンブリッジ大学によるXen Virtualization(source)に基づいた、AmazonのElastic Computer Cloud (EC2)(source)は、Linuxベースのサーバのインスタンスをユーザがオンデマンドで作成し、起動し、終了することを可能にするコンピューターサービスであ る。それぞれの仮想計算機のインスタンスは、起動時にDHCP経由でIPアドレスを割り当てられる仮想プライベートサーバである。Amazonが Amazon Machine Images (AMIs)と呼んでいる仮想計算機のイメージは、VMwareの仮想装置と同様に実現および転送が可能である。それゆえ要求されているソフトウェアの初 期インスタンスをデベロッパが設定でき、多くの仮想サーバへの迅速なデプロイが可能である。
以前のInfoQの記事(参考記事)は、短時間に大量の処理能力を必要とするOracleのCoheranceチームのような開発チーム向けのサービスの魅力について 触れた。サービスの柔軟性は、Webベースの起動にも魅力的である。高価なハードウェアを買う必要がないので、前もっての費用がかからず、一般的に稼動コ ストがかなり低く、Linuxインスタンスに望みのソフトウェアをインストールすることができる。必要に応じて追加のインスタンスを開始したり、停止した りすることで、サービスが変化しているトラフィックパターンに適応される。最終的に、高度にスケーラブルで堅固なWebインフラストラクチャー提供の追跡 記録を所有しているAmazonのよく知られた人物によって、サービスは支援される。それによると、SLA (Service Level Agreement)が欠如していると、 導入への大きな障害となり、データや重要なサービスを委託することを躊躇するビジネスもある。
克服すべき現実的な問題がある。たとえば、仮想サーバのDHCPの本質が意味するところは、サーバが始動される度にIPアドレスが変わるということであ る。この結果としては、停止に続いてWebサイトがDNSエントリーを更新する必要があるかもしれないことである。そしてそのプロセスは、完了に最大96 時間を要する可能性がある。これに対処する際に、AmazonはDynDNSのような動的DNSソリューションの使用を提案している。また最近のブログの記事(ブログ・英語)で、CodestaのOliver Chan氏がEC2用のDynDNSの設定方法を詳述している。
同じブログ内で、EC2を検討しているデベロッパにとって有益なヒントが紹介されている。その内容は以下のとおり。
- 「AMIの構成やカスタマイズに膨大な時間を費やす前に、最初から自分のニーズに合ったものを見つければよい。そうすればあとで作業をやり直す必要がな い。Amazonのリソースセンターで一連の公開AMI(source)をチェックして、自分のニーズにさらに適しているものがないか確認する」。
- 「ec2-bundle-volコマンドを使用してイメージをパッケージするとき、?dフラグで必ずクリーンなフォルダを指定する。 さもないと同じイメージを2度バンドルすることになり、結果として一時ファイルの競合によりエラーとなる」。
- 「イメージで作業するとき、メインドライブまたはパーティション(システムファイルがある場所)がかなり制限された容量であることに注意する(この場合10GB)。そこで大きなファイルやディレクトリーを扱う場合、100GB以上あるように/mnt を使用する」。
- 「マシンが終了した場合、最後にec2-bundle-volを実行したときからバックアップされたものを除いて、すべてのデータは失われる」。
EC2がこのまま本格化すれば、オープンソースツールやライブラリは、サービスを使っているデベロッパのライフをさらに容易なものにする。そのようなプロ ジェクトの1つがCloud Tools(source)で、Chris Richardson氏のEC2Deployに基づいて進行しており、以下のもので構成されている。
- EC2Deployフレームワーク - Groovyベースのフレームワークで、Java EEアプリケーションをAmazon EC2にデプロイする。
- Tomcatを実行するように構成されたAMIで、EC2Deployで動作する。
- EC2Deployを使用した専門的なプラグインで、EC2にWebアプリケーションをデプロイする。
Cloud Tools はまだ開発途中であるが、デベロッパが短時間でEC2で実行させる手段を提供する。