October 5, 2008

最近のクラウド・SaaS・PaaS

Cloud Computing
最近、データセンターを作っただけで「クラウド参入」とか言ってる企業、多くないですか?
「データセンター」を「クラウド」と言い換えているだけのような。
「クラウド・コンピューティング」は「仮想化」以来の“乱用語大賞”
「過大な情報がIT業界に混乱を招く」とガートナーが警鐘
  ※「MSとIBMが使い出した時点でバズワード化する」とはS社のO氏の発言。(^^;


SaaS
実態はただのWebアプリやASPなのに「SaaS参入」とか言ってる企業、多くないですか?
SaaSと言いながらクラウド環境・マルチテナント環境ではないため、いったいどれだけスケールするのか不安で仕方ない「SaaSもどき」が増えてきました。


PaaS
これを実用化・収益化できている企業はごくわずか。さすがに猫も杓子も「PaaS」と言い出すまでには至っていませんね。




各社の動向
最近の各社の動きはどうなっているのでしょうか?
大きく分けると、

  1. クラウドインフラのみ提供
  2. アプリケーションを提供(SaaS)
  3. アプリケーション動作環境を提供(PaaS)
といった分類になるでしょうか。


Yahoo/HP/Intel連合
まだ研究開発段階。クラウドインフラと、もしかしたらPaaSも?
HP、インテル、ヤフーの3社、クラウド・コンピューティングの共同研究プロジェクトを発表


ユニシス
「SaaSはじめます」と言ったが、その後進んでいるのだろうか?「乗り遅れたくない」感で言ってみただけ?
日本における早急なPaaS、CaaSの確立を目指す~ユニシス


富士通
「SaaSはじめました」と言ったが、その後進んでいるのだろうか?「乗り遅れたくない」感で言ってみただけ?
富士通が SaaS 3 サービスを開始


IBM
データセンターをばんばん作っている。その上で何をやるのだろう・・・。クラウドインフラと、もしかしたらPaaSも?
IBM、「Blue Cloud」コンピューティング計画を発表
IBM、世界4カ所にクラウド・コンピューティング・センターを開設


Sun
Project Carolineは大注目。Salesforce.comが成し得ていない、標準言語(Java)によるPaaSを実現しようとしている。でもまだ研究開発段階。
サン、PaaSモデルの研究プロジェクト「Project Caroline」を披露


Google
Google App Engineはアプリケーション実行環境の提供という形式でPaaSをやっているけど、アプリケーションの開発作業はローカルマシン上で行ってそれをアップロードするしかない。
ここ1年ぐらい、エンタープライズ分野では最近目立った動きがないが、Mobile側(Android)からクラウドの使い道を広げようとしている。うまくいけばこっちの切り口からエンタープライズ分野へ食い込んでいけるのかも。
「独創的な」という言葉がぴったりなこの企業の動きには常に要注目。


Amazon.com
インフラの提供はしっかりやっているけど、その上で何をするのか?は利用者任せ。今のところ、Amazon.com自身はECサイト以上のサービスをしていない。Amazon WSは、実質はレンタルサーバっぽい使われ方がほとんどなのでは?


Microsoft
クラウド上にWindows Serverが乗っかって、何が嬉しいのだろうか・・・
MSのクラウドへの取り組みは、Office Suiteにしろ、OSにしろ、結局クライアントパッケージをインストールしないと使えない「非SaaS」なものになるでしょう。
MSのバルマーCEO、「Windows Cloud」の詳細に言及


Oracle
Siebel on Demandなど一部SaaSを提供しているけど、いったいどのぐらい儲かっているのだろうか。MS同様、パッケージライセンスの売上によって過去最高利益を更新し続けているこの企業が、本気でSaaS/PaaSに取り組むとは考えにくい。
Amazon WS上にOracle Databaseを乗っけるパッケージの提供も始めるらしいけど、自社パッケージをクラウドに乗せますという点ではWindows Cloudと同じ。自分でアップロードして展開して設定してね、という点ではもっとひどいかも。すぐに使えるDaaS(Database as a Service)を用意していたらちょっとは「ほう」と思ったかも。
オラクルのクラウドへの第一歩


RedHat
Amazon WS上でJBossが動くようになるらしい。
Red Hatが見据える次世代のアーキテクチャ


Salesforce.com
結局、「クラウドだけどSaaS/PaaSではない」サービスは、ユーザーにとってはハードウェア準備・運用の手間は省けるけど、サーバソフトウェアの構築・管理、アプリケーション開発をしなければならないことは変わらず。MSのアプローチはまた独特だけど。
また、クラウドはそれだけではその存在に意味は無く、クラウド上で提供されるサービスがビジネスとして確立しないと成り立たない。エンタープライズ分野でインフラ・ミドルウェア・アプリケーション・開発環境まで(クラウドからSaaS/PaaSまで)トータルに提供し、実用化・収益化できているのは、事実上SFDCのみか・・・


今のところ、Salesforce.comが独走態勢で、他企業が技術・サービス両面で追いつくのはもう少し先になると思う。

SFDCを脅かすのは、オープン化の波かもしれない。
Amazon WSがXenベースであるため、JBossやOracleは対応できた。
アメリカではAmazon WS互換の他社サービスも始まっているらしい。Amazon WSのバックアップやフェイルオーバー用途に使えるとのこと。
数年後にはプロプライエタリなテクノロジによる囲い込みをオープンソースが切り崩すという波がクラウドコンピューティングの世界にも来るかもしれない。

August 8, 2008

Tomcat 6.0.18 重大な変更

2008年7月31日にリリースされた Apache Tomcat の最新バージョン 6.0.18 ですが、JSP の処理系である Jasper にこんな変更が。

Changelog
にこのような記載があります。

45015: You can't use an unescaped quote if you quote the value with that character.

これにより、カスタムタグの属性値に Runtime Expression を埋め込んだ際に、式の中に "" を記述する場合はエスケープが必要になりました。

つまり、従来は

<t:tag value="<%= request.getAttribute("name")%>" />

とか書けたのに、

<t:tag value="<%= request.getAttribute(\"name\")%>" />

と書かなくてはならない状況になってしまったのです。

今まで動作していたのに、Tomcat のバージョンを上げたら動かなくなるアプリケーションも少なくないでしょう。


Tomcat 開発プロジェクトは、たまーに、こういうことをしますね。
現実論・実用性よりも、下位互換性を崩してでも理想論・あくまで仕様としての正しさを追い求めるというか。

setCharacterEncoding() の時もそうでした。

商用のアプリケーションサーバ製品ではこのようなことはしないでしょう。


内部的に Tomcat や Tomcat と同じ実装を使う JBoss や Glassfish も、次回以降のバージョンは要注意ですね。


追記:
動いていた方がオカシイという声もいただきますが、それは正論ふりかざしているだけです。今まで動いていたものが動かなくなるのは、現場をあまりに無視した行為です。setCharacterEncoding()の時もそれで大ブーイングだったわけで。

さらに追記:
システムプロパティ org.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING で挙動を元に戻す設定ができるようになっているとのことです。(takayoshiさんよりコメント欄にて情報をいただきました。ありがとうございます)
setCharacterEncoding()の時もそうでしたが、Reference Implementationにも使われる実装ということで仕様に忠実でなければという立場と、現場でも利用されることを意識しなければならない立場の板挟み感が伝わってきます(笑)

June 29, 2008

JBoss 5.0 CR1 は今週リリース

だそうです。

JBoss の CR 版は、一般的に言うところの RC 版です。

http://www.jboss.org/feeds/post/jboss_as_5_0_status

そして、6-7週後にCR2のリリース、そしてGAと続くのだそうです。

しかし。

ここ2年ぐらい、JBoss Application Server のロードマップは全くアテになりませんね。当初のロードマップでは、JBoss 5.0 はたしか昨年春には出ていたはずなのに。RedHat/JBoss は Seam & WebBeans の開発にかかりっきりなのでしょうか。
JBoss 4.2は JSR-250 Common Annotations がちゃんと実装されていないので、Web コンテナ上で JNDI リソースや EJB オブジェクトのアノテーションによるインジェクションが動作しません。
JBoss 4.2は、まだ JavaEE5 に完全対応できていないのです。

JBoss 5.0 Beta4 は、JMS がうまく動作しなかったり、アプリケーションの自動再デプロイがうまく動作しなかったりセキュリティロールによるアクセス制御がうまく動作しなかったりと、まだまだ安定しません。

JavaEE5 完全対応の OSS のアプリケーションサーバとしては、GlassfishApache Geronimo がありますが、個人的には JBoss が好きです。Eclipse が標準で対応していて、zip を展開するだけで使えるという手軽さがいいですね。NetBeans を使う人なら Glassfish がいいのでしょうけど。。。

February 23, 2008

JBoss4.2.xにおける@EJBアノテーション

JBoss4.2はServlet2.5/EJB3にデフォルトで対応しているので、Webコンテナ上で動作するコンポーネントで @EJB アノテーションが当然使えると思っていました。

JNDIルックアップのコードを書かなくても、EJBのビジネスインタフェース型のフィールドに「@EJB」とアノテーションをつけておけば、フィールド初期化時にコンテナが裏でコッソリEJBオブジェクトのインスタンスを取得してフィールドにセットしてくれるという機能です。アノテーションによるDI(Dependency Injection)ってやつですね。

@EJB
private HogeService;

こう書いておけば、コンテナがこのフィールドを初期化する際に、HogeServiceインタフェースを実装したEJBオブジェクトをJNDIサービスより取得してフィールドにセットしてくれます。

しかし、結論から言うとJBoss4.2ではWebコンテナ上でのこの動作はサポートされていません。
JBossの公式文書に下記のような記述がありました。

Java EE 5 allows you to inject EJB3 bean instances directly into the web application via annotations without explicit JNDI lookup. This behavior is not yet supported in JBoss AS 4.2.
http://viewvc.jboss.org/cgi-bin/viewvc.cgi/jbossas/projects/docs/trunk/Server_Configuration_Guide/ja-JP/EJB3.po?revision=65669&pathrev=68449

JBoss4.2.xはEJB3 (JSR-220) 対応のEJBコンテナを実装し、Servlet2.5 (JSR-154) 対応のWebコンテナを実装していますが、Common Annotations (JSR-250) は完全に実装されていないようです。

結局、ServletコンテナからEJBを利用するには従来のEJB2.x時代のようにJNDIルックアップするコードを書かなくてはいけません。


・・・道理で、Web上にもWebコンテナから@EJBでEJBオブジェクトをインジェクションするサンプルが見つからないわけです。

これで1日ぐらいハマりました。

今度のセミナーではCommon Annotations (JSR-250) が動作する JBoss5.0.0Beta4を使うことにします・・・


それにしても、JBossの情報って少ないですね。利用者が減っているのでしょうか?少なくともネット上の情報を探す限りでは、積極的にブログ等へ情報をアップするエッジの効いたエンジニアの利用が減っている感じがします。
JavaEE5完全対応のアプリケーションサーバを正式リリースできていないのはJBossだけですしね。OSSのJavaEEアプリサーバでは、最近はGlassfishの勢いが目立ちます。GlassfishはNetBeansにも標準でバンドルされるようになったし。

※ところが、JBoss5.0.0Beta4はJMSがうまく動かなかったり、セキュリティロールがうまく動かなかったりでした。具体的には、QueueのJNDIサービスへの登録時に例外が発生してデプロイできません。セキュリティロールは、@RollsAllowedで指定していないロールでもメソッドの実行が許可されてしまいました。まあ、βなのでこんなもんですね・・・