AppEngine, EC2, Azure

Hamajiman


SimpleModeler開発も単にツールを作っているというより、クラウド、ソーシャルの技術調査という意味合いも強い。実際にものを作ってみないと肝心の所は分からない。
これからの10年はWebプラットフォームの時代であることは間違いなく、キーワードはモバイル、ソーシャル、リアルタイムということになるだろう。
ボクのテーマは、モデリングモデル駆動開発でこれらの技術をビジネスに結びつけるための手法を確立することである。ビジネスとモデリングの界面は要求開発にお任せして、そこから後の後ろ半分がボクの直接の関心事である。
ビジネスとモデリングの接点を考える上では、どうもソーシャルが要であり、ここ数年はソーシャルを中心として業界が回って行きそうである、ということに最近気付いた。少し前は「集合知」としてざっくり捉えていたのだけれど、今月に入ってクラウド・アプリを本格的に使うようになってソーシャルのインパクトが分かってきた。『仕事するのにオフィスはいらない (光文社新書)』には感謝しなければならない。
AtomPub、GData、OpenSocialOpenID、OAuthといった技術から目が離せない。

もちろん、クラウド・プラットフォームであるAppEngine、EC2、Azureはシステム構築の基盤であり、これらのプラットフォームを活用する技術を修得することも必須要件である。
クラウド・プラットフォームでは、今日AzureがEclipseJavaをサポートするという衝撃の情報が流れてきた。

http://www.publickey.jp/blog/09/eclipsewindows_azurephpjava.html
http://www.windowsazure4j.org/

JavaからAzureを簡単に直接操作できるようになるという事実は、クラウド・アプリケーションのアプリケーション・アーキテクチャを考える上で、非常に大きなインパクトがある。
ボクの第一感は、AppEngineをフロントにしてEC2とAzureの機能を適材適所で活用するというアーキテクチャである。AppEngine, EC2, Azure間の相互接続はAtomPubを軸とするREST接続で問題ないだろう。

残念ながらAzureではJavaを動かすのは少し工夫がいるので、Java主体に考える場合Azureをフロントにするという選択は考えにくい。システムが直接サポートしていないのでスケーラビリティにも不安が残る。

http://blog.smarx.com/posts/programming-language-interoperability-in-windows-azure
http://blogs.msdn.com/windowsazure/archive/2009/03/18/using-3rd-party-programming-languages-via-fastcgi.aspx

また、EC2はシステム構築がアプリケーション側の仕事なのと、小規模利用でも有料というネックがある。

以上の点からAppEngineをフロントにする解が有力となる。
AppEngineをフロントにすることで、超安価(場合によっては無料)でシステムを構築できる。 さらにAppEngineにはGoogleアカウント(+OpenId, OAuth)を基本機能として利用できる、Google Appsと連携しやすいというメリットもある。 そして、AppEngineに欠けているRDBMSやメッセージ・キュー、大容量メモリ、MapReduce的な大規模並列分散エンジンはEC2やAzureのものを利用するという解である。

アプリケーション・プログラマにとってのクラウド・プラットフォームは大体の形が見えてきたと思われるので、業界内で技術が詳細化具体化していく過程を楽しみながら追いかけていくことになる。
これに並行して、ソーシャルとモデリングの接点をモデル駆動という切り口で探り当てるのが当面の課題である。