GAE開発の落とし穴
Googleのクラウド環境をつかったGoogle App Engineによる開発するにあたり、初めての試みで苦悩する開発者達の経験をもとに、各開発フェーズにあわせて問題点やどう解決したかをご紹介します
ブックマークされました!
ブックマークがエラーになりました。もう一度お願いします。
作者 Dionysios G. Synodinos , 翻訳者 沼田 暁子 投稿日 2008年7月3日
Grizzlyフレームワーク(リンク・英語)は、GlassFish(リンク・英語)やSailfin(リンク・英語)、RESTlet(リンク・英語)、OpenESB(リンク・英語)等、たくさんの様々な製品で使われている。このフレームワークではJava New I/O API(リンク・英語)(NIO)を利用しており、開発者は拡張性のあるサーバアプリケーションを書くことができる。Atmosphere(リンク・英語)Grizzlyから発展したPOJOベースのフレームワークで、Comet(リンク・英語)を広めることを目的としている。Jean-Francois氏は、この新しい開発についてInfoQに聞かせてくれた。
InfoQ: Jean-Francoisさん、Grizzlyのようなフレームワークを利用するメリットと、デプロイする一般的な方法を教えていただけますか?
Jean-Francois Arcand (JFA): 拡張性のあるクライアントあるいはサーバサイドのアプリケーションを作成することは、簡単な作業ではありません。Grizzlyフレームワークを使用するメリットは、そうした高性能なアプリケーションを、低レベルのNIOの概念を扱う必要なく作成できることです。Grizzlyによって、そのようなアプリケーションをとても単純な方法で書くことができます。Grizzlyは、クライアント/サーバサイドのアプリケーション開発にかかる時間の短縮を促進します。Grizzlyのコミュニティもとても活発に活動していて、質問への回答や問題の解決は非常に速く、開発をとてもスムーズにしています。活発なコミュニティは、どんなオープンソースプロジェクトにとっても必ずプラスになるものです。何年もの間、私達はコミュニティを育て、そしてコミュニティから多くのことを学んできました。
InfoQ: 先頃リリースされたバージョン1.8では、共存できるものや単独でインストールされるものなど、様々なモジュールがGrizzlyフレームワークに入っています。これらのモジュールの簡単な説明と、現行リリースのアーキテクチャ概要の説明をしていただけませんか?
JFA: Grizzly のモジュールは2つのカテゴリに分けることができます。NIOフレームワークとその拡張機能です。NIOフレームワークは、高性能なサーバサイドアプリケーションの構築に利用することができます。一例として、私はEricssonと(Sailfinプロジェクトを通して)Grizzlyフレームワークのモジュール上でSIPプロトコルのサポートを実装する仕事をしました。SIPプロトコルはTLSとUDP、TCPをトランスポートプロトコルとしてサポートしているので、唯一実行可能だった解決策は、このフレームワークを利用することでした。別の例としては、SunのShared Shell(リンク・英語)があります。これもGrizzlyフレームワーク上で構築されています。2つめのカテゴリは、httpやjruby、cometの拡張のように組み込み可能なコンポーネントと私が呼んでいるものです。これらは直接使うこともできますし、組み込むこともできます。ひとつの好例はGlassFish v3で、httpモジュール上に構築しています。実験的な不完全なサーブレットコンテナ(未完成)もあり、これはテスト用に(例えばjunitと)使用することができます。Jerseyプロジェクトは自動化したテストでこれを利用していますが、今までのところ、とても小さいサーブレット様のコンテナとして非常に有用であることを示しています。
InfoQ: Grizzly はSun Microsystems社の内外を問わず他にもたくさんのオープンソースプロジェクトで利用されており、最も傑出しているのはGlassFishアプリケーションサーバです。このフレームワークの能力をもっともよく示す例を、他にも教えていただけませんか?
JFA: オープンソースでは、自分が作ったものを使っている人を探すのはいつでも難しいことです。私が知っているのは、Sunの以外のものでは、 4homemedia.com、Kaazing、RESTlet、Jetty、Alt-mobile、Mediafed/blog-city、T- mobile、Yahoo Brazil、AjaxフレームワークのBindows等があります。Sunのものでは、GlassFish、JXTA、Phobos、JavaCaps に含まれるopen-esbのhttpバインディングコンポーネント、Jersey、GlassFish v3のGrailsの実装、Netbeans、Sailfin、Sun Shared Shell、Sun Instant Messenger、そしてGlassFish JRuby gemsはGrizzlyのJRuby on Rail拡張上に構築しています。Grizzly CometはICEFacesとDWRにクライアントサイドをサポートされています。おそらくもっとたくさんあると思いますが、わかりません。 :-)
InfoQ: Tomcat(リンク・英語)やJetty(リンク・英語)との競合については、Grizzlyをどのように考えていますか?
JFA: Grizzly とTomcat/Jettyとの一番大きな違いは、TomcatとJettyはサーブレット2.5の仕様を完全にサポートしていますが、Grizzlyでは(まだ :-))サポートしていないということです。Grizzlyが競うのは、組み込みの空間です。私は、簡単にカスタマイズ可能な小さなhttpのランタイムを備えるというニーズは実際にあると思っています。JettyとGrizzlyでGrizzlyが優れた選択肢になれるのは、ここだと思います(より小さく、より拡張が容易等)。Jettyはこの空間をリードしていますが、アプリケーションはますます、JettyからGrizzlyへと乗り換えています。 Grizzlyが優位な点のひとつは非同期のリクエスト処理メカニズムで、httpのレベルでカスタマイズすることが可能です。このメカニズムは、小さな非同期プロキシの作成では、とてもポピュラーになるように思われます。Grizzlyのhttp拡張では、サーブレットをサポートする必要なくComet ベースのアプリケーションを書くことができますが、これは時には必要です。
InfoQ: サーブレット3.0の仕様(JSR 315)(リンク・英語)についてはどうですか?この仕様ではCometのサポートを備えることを目指しています。
JFA: そうですね、サーブレット3.0では公式のAPIにCometのサポートを追加しようとしています。主に、サスペンド/レジュームのリクエスト方法が議論されています。
InfoQ: Atmosphereフレームワークとはどのようなものなのか、そしてそこに至った原動力は何かを教えて下さい。
JFA: 2年前、私はブログでGrizzly Cometフレームワークについて書きました。そしてその時以来、それを中心としたコミュニティを作ることができました。Grizzly Cometフレームワークの欠点の一つは、GrizzlyランタイムとGlassFishでしか動かないことです。これは厳しい制限です。ここ1年、 TomcatやJetty、Resinといった他のコンテナにフレームワークを移植して欲しいと言われていました。ですから、Atmosphereでの私の目標は、Grizzly Cometフレームワークから最もよいもの(Grizzletと呼ばれている一つのコンポーネント)を取り込み、Cometをサポートしているか否かに関わらず、すべてのコンテナで動くようにすることです。これにより、みなさんはサーブレット3.0の仕様を待たずに、移植性のあるComet/Ajaxのプッシュ型アプリケーションを作ることができます。サーブレット3.0の仕様が提供すると思われる以上のものも、もたらします。
InfoQ: GrizzlyとAtmosphereでの、Bayeuxのpublish/subscribeプロトコル(リンク・英語)についてはどうですか?
JFA: Bayeux の実装はおそらくAtmosphere上に実装されるでしょう。しかし今のところは、私はAtmosphereそのものに集中し、それを中心としたコミュニティを育てられることを確かめる予定です。1.0がリリースされたら、Bayeuxプロトコルをその上で動作させられるかがわかるでしょう。
InfoQ: Atmosphereに対して、Grizzlyは今後どうなっていくのでしょうか?この新しいフレームワークに置き換えられるのでしょうか?
JFA: Atmosphere はCometに関する取り組みだけをGrizzlyから新しいプロジェクトへと移動する予定です。先ごろ、私たちはgrizzly-jrubyの拡張機能をGlassFishスクリプティングという新しいプロジェクトに移動しました。Atmosphereは新しいプロジェクトへと進む2つめの拡張機能となる予定です。
Grizzlyのメインコンポーネント、NIOフレームワークとそのhttp の拡張は、Grizzlyの傘下にとどまるでしょう。私たちは現在、Grizzly 2.0の作業を活発に行っています(新しいリードがいるので、私はAtmosphereに集中することができます)。そして、そちらの方面でもたくさんの活動が行われる予定です。
InfoQ: AtmosphereとGrizzlyの次期バージョンをリリースするスケジュールを教えて下さい。
JFA: Grizzly 2.0は2008年12月を目標にしています。Atmosphereについては、webコミュニティの反応と支援次第です。Comet APIについては今のところ標準がないので、たくさんのコンテナ独自のコードが必要となるでしょうし、おそらくコミュニティの助けがリリースと安定性をスピードアップするでしょう。今までのところ、バージョン0.1(私の最初のプロポーサルであり最初のリリース)は来年の夏になるはずだと思います。
InfoQ: 新しいフレームワークをサポートする、新しいツールのリリースはありますか?もしかするとNetBeansプラグインでしょうか?
JFA: 確かにIDEのサポートは意識しています。Mavenのサポートも備えておきたいと思っています。
InfoQ: GrizzlyプロジェクトとAtmosphereプロジェクトが近い将来、拡張性のあるアプリケーションやCometプログラミングのパラダイムに次第に対応するようになっていくことについてはどう考えていますか?
JFA: Atmosphere の利点の一つは、GrizzlyのComet実装の性能を他のコンテナと比較できることです。私はGrizzlyにはAtmosphereが役立つのではないかと思っています。なぜなら、他のフレームワークとの比較で見つかる性能の問題はどれも、Grizzlyの性能改善に役立つからです。
組み込みの市場は成長を続けていますので、GrizzlyのコミュニティはおそらくAtmosphereとは独立して発展し続けていくでしょう。 Grizzlyは簡単に組み込み可能な数少ないものの一つなのです。私が最近見たデモの一つは、GrizzlyのCometをiPhoneで動かしているもので、素晴らしいと思いました。私は、もっとたくさんの実例が今後2~3年で出てくるのは間違いないと思います!
InfoQ: Jean-Francoisさん、お時間をいただきましてありがとうございました。
CometやリバースAjaxの詳細については、http://www.infoq.com/jp/news/2008/02/comet-scalabilityをご覧いただきたい。
原文はこちらです:http://www.infoq.com/news/2008/06/grizzly-atmosphere
世界の先進エンジニアが集結 - QCon TOKYO 2012 早期割引実施中!
【豆蔵】「オブジェクト指向を現場で活かすリファクタリング入門」新規講座キャンペーン中
Googleのクラウド環境をつかったGoogle App Engineによる開発するにあたり、初めての試みで苦悩する開発者達の経験をもとに、各開発フェーズにあわせて問題点やどう解決したかをご紹介します
去る1月12日、定理証明支援系ツールCoqの初心者向けチュートリアルが開催さ れた(http://kokucheese.com/event/index/23667/)。今後も2月2日 (http://kokucheese.com/event/index/23744/)、2月9日、2月16日と引き続き開 催されていく予定である。本記事では、開催の様子をレポートする。
Neal Gafter氏はOracleによるJava買収の影響に関する議論、Javaにセグメンテッドスタックやメタオブジェクトプロトコルを追加することについての主張、そしてJavaとC#との比較について話をしてくれた。
GoogleはVMをともなう新しい言語であり、JSコンパイラでもあるDartをプレビューした。 InfoQはDartのアプリの構築に貢献する文法の裏側を探った:スナップショット、Isolate、モジュール方式
本記事ではCSPベースの「マルチドメイン・モデル検査ツール」である、PAT(Process Analysis Toolkit)について紹介する。モデル検査は、形式手法(Formal Method)という方法論を基礎とする技術であり、複雑さが増大しながらも安全性を求められる、現在のソフトウェア開発の状況に対する処方箋の1つとして注目されている手法である。
前回まで、Jenkinsの幾つかの側面に注目して解説をしてきました。シリーズ最後の今回は、Jenkinsをサービスとして使う方法を紹介します。
Alloyは、MITにて開発された仕様記述言語であり、ツールによる自動解析を使い、インクリメンタルに形式仕様が書けることが特長である。筆者らはAlloy開発者による、Alloyを使った形式手法入門書を翻訳、今夏にオーム社より刊行した。本記事では、Alloyの簡単な概要と、翻訳書『抽象によるソフトウェア設計』(「Alloy本」)を紹介する。
スマートフォンを中心としたマルチデバイスにおけるタッチユーザーインターフェイスへの対応は、既に必須の項目となりつつある。本記事では、Windows デバイスにおける UX のベースとなっている「メトロ」というデザイン言語を掘り下げながら、既存環境を意識しつつもどのようにタッチユーザーインターフェイス開発に取り組んでいくべきであるかについて解説していく。
No comments
スレッド表示 返信