January 4, 2009

Google App EngineのJava版「Stax」を触ってみました

Amazon EC2上で提供されるJava版PaaSサービス「Stax」をちょっと触ってみました。今のところはβサービスで、まだ実装されていない機能もあったりしますが無料で試すことができます。
「Google App EngineのJava版」としてニュース記事等でも紹介されています。

Java対応のGoogle App Engineとも言うべき「Stax Networks」ローンチ
http://jp.techcrunch.com/archives/20081216stax-networks-launches-google-app-engine-for-java/


用意されている環境

  • Apache Tomcat/6.0.16
  • MySQL/5.0.51

要するにServlet2.5/JSP2.1環境を使えるってことですね。JVMはJavaSE5相当のようです。
GoogleもSalesforce.comも、Servletコンテナにはより軽いResineを採用していますが、ここはTomcatですね。


サポートするフレームワーク
  • Apache Struts(ただし、1.xではなく2.0.11)
  • Apache Wicket
  • Adobe Flex/BlazeDS
  • Google Web Tool Kit
  • Adobe ColdFusion 8
  • JRuby on Rails
とかドキュメントには書いてありますが、アプリケーションの初期作成時のテンプレートとして、デフォルトで必要なライブラリを入れてくれて、最低限の設定済みのxmlファイル類を入れてくれるってだけです。
逆に、WEB-INF/libにライブラリをつっこんで、web.xmlを編集して、WEB-INFに必要な設定ファイルを追加すれば他のフレームワークも使えます。DI/AOPコンテナもORマッピングフレームワークも使えます。
Struts1.3.8/Spring2.5.6/iBATIS2.3.4とか、JSF1.2RI/Spring2.5.6/Hibernate3.3.1とか、試してみたら動きました。この分ならSeasar2を使ったアプリも問題なく動作するでしょう。


アカウントの作成
StaxのWebサイト http://www.stax.net/ へ行きます。



「Apply for the Beta」をクリックしてサインアップ画面へ行き、メールアドレスを入力して送信すると認証メールが送られてくるので、そこに書いてあるURLにアクセスするとサインアップ終了です。簡単です。



改めてStaxのWebサイトからログインするとアプリケーション管理画面に入れます。



管理画面では、TomcatのログやApacheのアクセスログ等の参照、アプリケーションの作成・DBの作成・設定・パフォーマンスやアクセス監視モニタの参照等を利用できます。




アプリケーションの作成
管理画面左側メニューの「Create App」をクリックすると、アプリケーションを作成できます。ユニークな名前を付けましょう。Application Core Runtimeからフレームワークを選べますが、前述の通り、Servlet2.5/JSP2.1環境で動作するものなら好きなモノを使えます。用意されているもの以外のフレームワークを使うのなら「Basic Servlet and JSP」を選択してもかまいません。



Stax SDK http://stax-downloads.s3.amazonaws.com/sdk/stax-sdk-0.2.12-dist.zip をダウンロードして解凍しておきます。
http://www.stax.net/appconsole/createapp から、任意の名前のアプリケーションを作成します。
解凍したディレクトリ中の「Stax Console」ショートカットを起動します。
コマンドラインコンソールが起動するので、そこから
stax getapp -a [ユーザ名]/[アプリ名] -u [ユーザ名] -p [パスワード]
を実行すると、アプリケーションのひな形がダウンロードされます。このひな形はEclipseプロジェクトになっているので、そのままEclipseへインポート可能です。でもこのプロジェクトはWTP互換じゃないのが残念です。


アプリケーションの構造
  • webapp: JavaEE Webアプリケーションディレクトリ
  • src: Java ソースファイルディレクトリ
  • conf/stax-application.xml: Stax デプロイメントディスクリプタ
webappディレクトリの中は通常のServletアプリと同じなので、WEB-INF/libに好きなライブラリを入れたり、WEB-INF/web.xmlを編集したり、設定ファイルやTLDを追加したり、自由にできます。


DBの作成
管理画面左側メニューの「Create DB」をクリックすると、アプリケーションを作成できます。任意のDB名、ユーザー名、パスワードを設定します。



DB作成後、テーブルやら何やらを作成するには、なんとTCP:3306が開いているのでMySQL Query Browser や mysql コマンドが使えます(^^;(←いいのか?)
アプリケーションのconfディレクトリにあるstax-application.xmlに、下記の設定を追記します。

<resource name="jdbc/db01" auth="Container" type="javax.sql.DataSource">
<param name="username" value="[ユーザ名]" />
<param name="password" value="[パスワード]" />
<param name="url" value="jdbc:stax://[DB名]" />
</resource>

Javaアプリケーションからは、JNDI参照名「java:comp/env/jdbc/[DB名]」でLookupできます。


アプリケーションのデプロイと動作確認
コマンドラインから
stax deploy -a [ユーザ名]/[アプリ名] -u [ユーザ名] -p [パスワード]
とすると、作成したアプリケーションをアップロードできます。
Antを使ってWARファイルからのデプロイも可能です。WARファイルをそのままアップロードできるUIがあればいいのに。。。

次のURLからアプリケーションの動作を確認できます。
http://[アプリ名].[ユーザ名].staxapps.net/

何度アップロード/デプロイし直しても反映されるので、クラスローダはカスタマイズしていじっているっぽいですね。Tomcatのデフォルトのリロード機能ではヒープメモリがすぐに破綻しますから。

[追記]
サーバのログを見るとTomcatまんま再起動しているっぽいです。


一度デプロイしたアプリケーションは削除できません(^^;削除機能はまだ未実装のようです。


ちょっと触った所感
Tomcat/MySQL/Eclipse環境に慣れた人ならすぐに開発できるのが良いですね。フレームワークもお仕着せのものだけでなく好きなものを選べますし、使い慣れたRDBがそのまま使えます。Python/Django/webappsにどうしてもなじめず、Google App Engineを放り出してしまった私には嬉しいポイントです。
懸念としては、サーバの信頼性・可用性・セキュリティと正式サービス開始後の料金体系です。まあ、これはすべてのクラウドサービスに言われていることですが。Amazon E2Cを利用しているのでこのレベルではある程度の信頼性はありますが、その上で動作しているアプリケーションサーバレベルではStaxの技術力・資金力・信頼性が問われるところでしょう。

Amazon EC2上に構築されたってのが、次世代のビジネスモデルを予感させます。自前のデータセンターを持たずにSaaS/PaaS事業を展開するという例はこれからも増える可能性がありますね。

December 7, 2008

世界初のJava-PaaSはMSが実現?

この週末、Windows AzureのPDC2008と公式ページでの発表資料を見てました。

AzureがJavaをサポート?

AzureのWebサイトの至る所に「Windows Azure welcomes third party tools and languages such as Eclipse, Ruby, PHP, and Python.」
とあるので、.NET以外のアプリケーションもサポートしそうですね。
How Does It Work?というタイトルのページのComming Soon のところにある図には、Eclipse/Python/Ruby/PHPのロゴが掲載されています。
http://www.microsoft.com/azure/howdoesitwork.mspx

個人的に注目したいのは「Eclipse」です。Javaもサポートされるのでしょうか?
この、PDC2008発表資料の5ページ目には、Javaのロゴが出てきます。
http://mschnlnine.vo.llnwd.net/d1/pdc08/PPTX/BB01.pptx
確かに、現在Windows Server上で動作するモノは基本的にAzureでもサポートすると言ってますし。
でも「Eclipse」ではなく明確に「Java」と記載されている記述は、他には見つけられませんでした。

Google App Engine がサポートを予定している Python 以外の言語に Java が含まれるという噂もありますが、世界初のJava-PaaSを提供するのがMicrosoftということになったら面白いですね。

まあ、Application Serverは開発者側で用意しなければならないと思うので、ミドルウェアやアプリケーションフレームワークまで用意されている Google App Engine や Force.com よりは一段低いレイヤーになるとは思いますが。
とは言え、独自のアプリケーションサーバやフレームワークよりも、使い慣れたモノが使える方が嬉しい人も多そうではあります。


AzureはWindows?

それにしても・・・

まだスクリーンショット等が公開されていないので詳細は不明ですが、ネット上で稼働するということは、クライアントPCからは専用クライアントツール・ブラウザ・開発環境のエクステンション等から接続し、利用するのでしょうか?

もしそうなら、初のGUIの無いWindowsということに。

Windowsの登場以降、「ウィンドウ」という概念によるGUI操作こそが「Windows」という名前の由来だと思っていたのですが。




スケーラビリティの俳句

余談ですが。

これは、PDC2008での講演資料資料にあったものです。

The Haikus Of Scalability(スケーラビリティの俳句)
http://mschnlnine.vo.llnwd.net/d1/pdc08/PPTX/BB54.pptx

You are born nameless You cannot afford the truth You are one of many
初雪や
水仙の葉の
たわむ迄

Your words echo loss
You fail fast, safely return You try again, again
谷水や
石も歌詠む
山櫻

芭蕉・鬼貫ですね。

スケーラビリティを絡めて何を言いたいのか、全然わかりません(^^;


July 23, 2008

Eclipse 3.4 Ganymede の日本語化

Eclipse の最新バージョン3.4 Ganymede リリースと同時に、Babel Project により国際化対応可となりましたが・・・

Babel が提供する Language Pack を入れると、入らなくなるプラグインが多数存在する模様です。

今のところ、プロパティファイルエディタや Spring IDE が入らず困っています。

正確には、これらのプラグインは Babel Language Pack のインストール前やアンインストール後ならインストールでき、インストール後はもう一度 Babel Language Pack を入れても問題なさそうなのですが、不便ですね・・・

June 29, 2008

Eclipse の最新バージョン 3.4 Ganymede がリリースされました

これも数日前のことですが・・・

Eclipse の最新バージョン 3.4 Ganymede がリリースされました。
毎年6月末にリリースというサイクルがすっかり定着しているようです。

http://www.eclipse.org/downloads/

昨年の 3.3 Europa リリース時に IBM は LanguagePack を Donate しないという方針を打ち出したため、しばらく公式の Language Packが 無いという状況が続いていました。(これが日本国内での Eclipse シェア伸び悩み&公式日本語版リリースのある NetBeans 活況化の要因の一つかも?と思っています。)

Eclipse.org では多国語翻訳プロジェクト「Babel」が立ち上がったもののいっこうに動かず、日本では有志による翻訳プラグイン Pleiades が非公式ではあるものの、それなりに普及するという状況でしたが・・・
その Pleiades が Eclipse.org の Babel プロジェクトに翻訳成果を Donate し、晴れて Eclipse.org 公式の Language Pack がリリースされています。

しかも、3.3 Europa、3.4 Ganymede 両対応で、さらにアップデートサイト対応です。
アップデートマネージャに下記のURLを登録して利用できます。

(Europa)
http://download.eclipse.org/technology/babel/update-site/europa
(Ganymede)
http://download.eclipse.org/technology/babel/update-site/ganymede

Pleiades プロジェクトの皆さん、ありがとう!

WTP3.0 を中心に Ganymede を使い倒してみたいと思います。