MuleSoft(旧MuleSource)によるApache TomcatベースのアプリケーションサーバTcat Serverが今日(2009年10月8日)リリースされた。InfoQはMuleSoftのMahau Ma氏、Greg Schott氏、Ross Manson氏と話す機会を得て、Tcat ServerおよびiBeansと呼ばれる新しい統合フレームワークのことを聞いた。
TomcatからTcat Serverを作った背景にある理由をたずねると、Tomcatが軽量で簡易さを持ち広く利用されていることがTcat Serverのベースに選ばれた主な理由という返答だった。Tcat Serverの初リリース版には次のような機能が含まれる。
- サーバグループ管理 - 複数のTomcatサーバを自動的に検知し、グループ化して管理する
- アプリケーションプロビジョニング - 現在の状態、ログ、バージョン管理などを含めたパッケージのデプロイに対応
- ロールバック - デプロイされた新しいパッケージに障害があった時、以前のバージョンにロールバックするのが簡単におこなえる
- クラウドへのデプロイ - プラグインを使うことでTcat ServerのインスタンスをAmazon EC2上に作成でき、リモートのインスタンスもローカルのインスタンスと同じコンソールで管理が可能
- Mavenへの対応 - Mavenのレポジトリから直接WAR Artifactを取り出してTcat Serverインスタンスにデプロイする
- 監視および診断 - 標準Tomcat以上のパフォーマンス監視、システム情報、システム挙動、診断、ログの機能がある
- Tomcat 5.5および6.0への対応 - Tomcat 5.5および6.0のいずれのインスタンスでも検知してTcat Server管理画面から管理できる
SpringSourceのtc Serverのような他のTomcatベース製品とTcat Serverの違いについてたずねると、こう答えた。
多くの人たちがTcat ServerはSpringSourceのtc Serverとどう違うかを聞いてきますが、わたしたちはTcat Serverのいくつかの特徴をこう考えています。
- tc Serverと違いTcat Serverは純粋なApache Tomcatをベースにしています(わたしたちはTomcatをカスタマイズしてリコンパイルするのでなくTomcatバイナリに独自コードを追加しています)。管理者は既存のTomcatアプリがTcat Serverでも100%動くことを疑わずにすみます。
- Tcat ServerにはTomcat以上の診断機能があり、ディベロッパや管理者たちが問題を調べ解決するのにデータやログ(アプリケーションログやCatalinaログなど)を深く見ていくことができます。それとは対照的に、tc Serverの監視機能は広く浅いもので、インターフェースも使いにくいものになりがちです。
- Tcat Serverにはtc Serverにはない進んだアプリケーションプロビジョニング機能があり、複数のWARファイルを一緒にデプロイユニット(パッケージ)にグループ化するといったことができます。管理者は1つのサーバあるいはサーバーグループに対して1つのアプリケーションパッケージだけをデプロイすればよく、複数のサーバインスタンスに複数のファイルを手動でデプロイするのに比べて劇的に作業時間を減らします。
- 簡易さ - Tcat Serverはユーザーにとっての簡易さを意識して一から構築されたものです。先に述べたようにTcat Server用に汎用的な監視ツールを組み込む必要がなかったので、価値をもたらす機能や機能性を必要以上の複雑さを伴わずして規律良く導入することができました。肥大化になるだけの機能は排除しています。
Tcat Serverに含まれる主な機能にはiBeansというものもある。これはSpringテンプレートに似たコンセプトの新しい統合フレームワークだ。iBeansはTcat Serverと一緒になっているが、Apache TomcatやMule ESBと一緒に使うこともできる。iBeansはさまざまなプロトコルの垣根を越えて通信するために、シンプルかつ共通で再利用可能な方法を提供してくれる。多くのフレームワークがHTTP、email、SOAPのような低レベルのAPIをターゲットにしているのに対して、iBeansはTwitter、Gmail、Flickr、Amazon EC2といったより高レベルのサービスに対して同じようにアクセスできることに焦点をあてている。Javaのインターフェースやアノテーションによってサービスとやり取りでき、またiBeans自体の一部として設定オプションを全て含んでいることで、XMLなどによる外部設定が必要なく、開発をよりシンプルにより速く進めることができる。
InfoQは今のiBeansで何がサポートされているか、そして今後の計画はどうかについて聞いた。
iBeansのエキサイティングな面のひとつは、共有したり再利用するのに理想的に適しているということです。なぜならiBeanはどんなJavaディベロッパでも2,3時間で作ることができるものだからです。そのメリットを促進するために、わたしたちは再利用可能なiBeansのフリーリポジトリであるiBeans Centralを立ち上げました。これはクラウドにホストされMuleコミュニティによって運営されています。既に利用可能となっているiBeansにはTwitter、Amazon EC2、Flickr、Gmailに対応したiBeansなどがあります。これらはiBeansコンソールから無償でダウンロードでき、どのアプリケーションでも利用することができます。
わたしたちが開発しているiBeansはまだ多くありますが(Facebook用、eBay用、Best ButやAmazonのような小売業向けなど)、本当にiBeansの真価が発揮されるのは、コミュニティによってマイナーだけども便利なサービスもサポートされる時でしょう。
もちろん、iBeansが現在サポートしているプロトコル(Webサービス、RSSフィード、RESTサービス、AJAXイベント、JMSなど)を利用して内部サービス用のiBeansをディベロッパが作ったり再利用することが可能です。
短期的なiBeansの目標は2つある。ひとつはiBeans CentralにもっとiBeansを増やすこと、もうひとつはJAX-WSおよびJAX-RSをiBeansランタイムでサポートすることだ。コミュニティからのフィードバックによる改善もiBeansプラットフォームに取り込まれる。長期的にはJavaにおけるMicrosoftのWindows Communication Foundation(WCF)のシンプルバージョンにiBeansがなるという計画があり、それはiBeansがJVMにおける通信フレームワークとなることを意味する。そのためにはJVM上で動くさまざまな言語(Scala、Clojure、JRuby、Groovyなど)でも実装される必要がある(JavaScriptについては既に対応がされている)。これが実現すれば、今のJVMにあるようなAPIとは違う、パブリックなサービスにも企業内サービスにも対応する全JVM言語で共通のAPIが作れるようになるだろう。