2. vmcコマンドを用いたアプリケーションの公開
実際にどのようにしてCloudFoundry.comを利用したらいいかという点については、CloudFoundry.comのファウンダーであるChris Richardson氏が説明してくれた。まずは、CloudFoundry.comのサイトでサインアップするのが最初のステップになる。サインアップに成功すると、間もなくパスワードを記載したメールが送られてくる。
アプリケーションの作成やデプロイ、管理などはPC上のツールを使って行う。Cloud Foundryに対応したツールとしては次のようなものがあるという。
- コマンドラインツール「VMC」
- Apache Maven
- Grails
- SpringSource Tool Suite
- Spring Roo
このうち、もっとも基本的なツールが「VMC」とのこと。VMCはRubyベースのツールであり、Ruby環境を用意すれば、RubyGemsを使ってインストールすることができる。
> gem install vmc
図2.4に示すのがVMCに用意されている主要なコマンドである。
アプリケーションをデプロイするまでの手順としては、まずvmc targetコマンドで対象とするクラウドプラットフォームを指定した上で、vmc loginコマンドを使ってログインする。CloudFoundry.comを使用する場合には、ターゲットには「http://api.cloudfoundry.com」を指定すればよいとのこと。ユーザID(Eメールアドレス)とパスワードは、サインアップ完了時に送られてきたメールに記載されている。
> vmc target api.cloudfoundry.com Successfully targeted to [http://api.cloudfoundry.com] > vmc login Attempting login to [http://api.cloudfoundry.com] Email: xxxx@xxxx.xxx Password: ******** Successfully logged into [http://api.cloudfoundry.com]
ログインに成功したら、アプリケーションやクラウド環境を管理するためのコマンドが利用できるようになる。アプリケーションのデプロイは、この状態でvmc pushコマンドを使って行う。Richardson氏のセッションでは、Mavenを用いてJavaアプリケーションプロジェクトを作成し、それをデプロイし、さらにインスタンス数を増やしてスケールアウトするデモが行われた。以下は、同様の手順でアプリケーションをデプロイした例である。
まず、デプロイするJavaアプリケーションを作成する必要がある。デモでは、次に示すようにMavenのarchetypeプラグインを用いて対話的にプロジェクトを構築・パッケージングしていた。ただし、Javaアプリケーションの場合は最終的にWAR形式でパッケージングされていればいいので、特にMavenを使わなければならないわけではない。また、RailsやNode.jsなどを使った場合でも、基本的な手順は同様とのことだ。
> mvn archetype:generate -DarchetypeArtifactId=maven-archetype-webapp Define value for property 'groupId': : org.example Define value for property 'artifactId': : example Define value for property 'version': 1.0-SNAPSHOT: : Define value for property 'package': org.example: : example Confirm properties configuration: groupId: org.example artifactId: example version: 1.0-SNAPSHOT package: example Y: : y > cd example example> mvn package
vmc pushコマンドを使ってデプロイを行うと、アプリケーションの公開URLや使用するリソースなどを聞かれるので、任意の値を入力する。
> vmc push example --path target Application Deployed URL [example.cloudfoundry.com]: codezine-example.cloudfoundry.com Detected a Java Web Application, is this correct? [Yn]: y Memory Reservation (64M, 128M, 256M, 512M, 1G, 2G) [512M]: 256M Creating Application: OK Would you like to bind any services to 'example'? [yN]: n Uploading Application: Checking for available resources: OK Packing application: OK Uploading (2K): OK Push Status: OK Staging Application: OK Starting Application: OK
デプロイが完了したら、指定した公開URLにWebブラウザからアクセスしてみれば、クラウド上でアプリケーションが動作していることを確認できる。
VMCからは、次のようにvmc appsコマンドやvmc statsコマンドを使うことで、アプリケーションの状態を調べることができる。
> vmc apps +-------------+----+---------+-----------------------------------+----------+ | Application | # | Health | URLS | Services | +-------------+----+---------+-----------------------------------+----------+ | example | 1 | RUNNING | codezine-example.cloudfoundry.com | | +-------------+----+---------+-----------------------------------+----------+ > vmc stats example +----------+-------------+----------------+--------------+--------------+ | Instance | CPU (Cores) | Memory (limit) | Disk (limit) | Uptime | +----------+-------------+----------------+--------------+--------------+ | 0 | 1.6% (4) | 93.4M (256M) | 8.0M (2G) | 0d:0h:2m:25s | +----------+-------------+----------------+--------------+--------------+
アプリケーションを更新する場合には、vmc updateコマンドを使用する。例えばexampleプロジェクトのsrc/main/webapp/index.jspを修正した上で次のようにvmc updateコマンドを実行すれば、Webサイトにも反映されるはずだ。
example> vmc update example --path target Uploading Application: Checking for available resources: OK Packing application: OK Uploading (2K): OK Push Status: OK Stopping Application: OK Staging Application: OK Starting Application: OK
インスタンス数を増やすスケールアウトは、次のようにvmc instancesコマンドを実行するだけでいいそうだ。対象のアプリケーションを指定して、「+2」となどとやればインスタンスが2つ増える。逆に減らす場合には「-2」などとすればよい。
> vmc instances example +2 Scaling Application instances up to 3: OK > vmc stats example +----------+-------------+----------------+--------------+--------------+ | Instance | CPU (Cores) | Memory (limit) | Disk (limit) | Uptime | +----------+-------------+----------------+--------------+--------------+ | 0 | 1.1% (4) | 93.4M (256M) | 8.0M (2G) | 0d:0h:3m:38s | | 1 | 12.5% (4) | 64.3M (256M) | 7.9M (2G) | 0d:0h:0m:15s | | 2 | 10.1% (4) | 58.3M (256M) | 7.9M (2G) | 0d:0h:0m:15s | +----------+-------------+----------------+--------------+--------------+
デモでは、その他にSpringSource Tool Suiteを使う方法なども紹介された。SpringSource Tool SuiteはEclipseベースの開発ツール集であり、Cloud Foundry用プラグインを使うことで、IDE上からCloud Foundry上のアプリケーションの管理を行うことができる。