「POJOs in Action」(source)の著者であるChris Richardson(source)は、AmazonのEC2(Elastic Computing Cloud)上でJava EEアプリケーションのデプロイおよびテストを行うためのツールのセットであるCloud Tools(source)を、Apache License 2.0(source)のもとでリリースした。
Cloud Toolsには主に3つのパーツがある。
- Tomcatを実行し、EC2Deployが動作するように設定された、AMIs(Amazon Machine Images)
- 中心的なフレームワークであるEC2Deploy
- EC2にWebアプリケーションをデプロイするために、EC2Deployを利用するMavenプラグイン
Chris Richardsonはブログで、なぜCloud Toolsを作成したのか(source)について述べた。
コンピュータハードウェアは伝統的に希少で、高価なリソースです。コンピュータが利用されはじめたころ、開発者は一台のマシンを共有しなければなりませんでした。今日では通常、それぞれの開発者は自分のマシンを持っていますが、開発者が一台以上のマシンを持つことは稀です。これは、パフォーマンステストを実行するために、しばしばマシンをかき集めなければならないことを意味しています。同様に、プロダクション環境の一部を複製するだけでも、大変な作業です。しかし、AmazonのEC2(Elastic Compute Cloud)では、事態は大きく異なります。Linuxサーバのセットは、今やWebサービスだけで呼び出せます。サーバの種類に応じて、あなたは最大20のサーバごとに、1時間あたり10-80セントを支払うだけです!それ以上の先行費用や、マシンを購入したり設定するために待つこともありません。
エンタープライズJava開発者がEC2を利用しやすくなるように、私はEC2Deployを作成しました。それは、Amazon EC2サーバのセット上に、エンタープライズJavaアプリケーションをデプロイするための、Groovyフレームワークです。EC2Deployは、EC2インスタンスのセットを起動するためのAPIを、簡単に利用できるようにします。MySQL、Apacheおよび一つ以上のTomcatサーバの設定。そして、一つ以上のWebアプリケーションのデプロイ。それはさらに、JMeterを実行して、パフォーマンスメトリクスを収集することもできます。
プロジェクトのページには、EC2にアプリケーションをデプロイするために、Mavenプラグインをどのように利用するかの、短い記述がある。
Mavenプラグインは、Cloud Toolsを利用する最も簡単な方法です。一度、pom.xmlでプラグインを設定すれば、あなたのWebアプリケーションを「mvn cloudtools:deploy」で、EC2にデプロイすることができます。このゴールは以下を行います。
- 指定した数のAmazon EC2インスタンスを起動する
- MySQLマスタデータベースを設定する。スキーマを作成し、データベース初期化スクリプトを実行する
- いくつかのMySQLスレーブを設定する(異なるAvailability Zoneを選択できる)
- あなたのWebアプリケーションをEC2にアップロードする
- 一つ以上のTomcatサーバを設定し、あなたのWebアプリケーションをデプロイする
- すべてのTomcatサーバで負荷分散するように、Apacheインスタンスを設定する
Cloud ToolsのMavenプラグインは、その他に以下のゴールもサポートします。
- cloudtools:jmeter - 負荷テストを実行する
- cloudtools:redeploy - Webアプリケーションを再デプロイする
- cloudtools:dbsave - データベースのスナップショットをS3に保存する
- cloudtools:dbrestore - データベースをS3からリストアする
- cloudtools:clone - クラスタのコピーを作成する
- cloudtools:describe - クラスタを記述する
- cloudtools:list - 利用可能なクラスタを一覧する
- cloudtools:stop - クラスタをシャットダウンする
永続的なストレージを追加したことで(source)、ハードウェアリソースの割り当ておよび管理のための伝統的なパラダイム上で、AmazonのEC2は勢いを増しているように見える。Cloud Toolsのようなソフトウェアの作成は、すべてのEC2ソフトウェアエコロジーの作成の始まりを意味するのかもしれない。
さらなるクラウドコンピューティングの情報は、http://www.infoq.com/jp/cloud-computingを参照してほしい。