Google App Engine for Java[実践]クラウドシステム構築
はじめに
近年,急速に数多くのサービスがクラウド上で提供されるようになってきました。GmailやGoogle Calendarなどを含むGoogle Appsはその代表例で,ほかにもSFA(Sales Force Automation)やCMS(Content ManagementSystem)などの多岐に渡るソフトウェアが存在します。これらのさまざまなソフトウェアはWebブラウザだけで利用でき,簡単にグループ内で情報の共有ができます。また,特別なサーバを必要としないので,導入や運用のコストを極小化できるという利点もあります。その反面,機能のカスタマイズが難しく,ビジネスに必要な機能をカバーできないという理由で,導入を躊躇(ためら)っている方も数多くおられるかと思います。
Google App Engine for Java(以下,GAE/J)は,このような問題を解決します。GAE/JはJavaのWebアプリケーションを動作させるプラットフォームで,Googleが提供するサービス群や,その他のクラウド上に点在するサービスをインテグレーションし,個々のビジネス要件に適したシステムを構築できるようになります。また,GAE/Jそのものがクラウドサービスであるため,スケール性の高いシステムをすばやく,安価に導入できます。さらに,システムの規模に応じて処理能力も自動的にスケールするため,キャパシティプラニングが難しいシステムでも,低いリスクで導入できるようになりました。グルージェント及び親会社のサイオステクノロジーではかねてよりJavaによるシステムを提供してきた経緯もあり,これらの可能性に魅力を感じ,いち早くGAE/Jに取り組んできました。
これら一連の取り組みの過程でわかってきたのが,従来の開発手法がクラウドでは通用しないということです。ハウジングやデータセンターを利用していた時代にはそれぞれがコンピュータを占有して自由に使えましたが,クラウドでは限られたリソースを多くの人で共有します。この共有のしくみをうまく実現するためにはクラウドを公平に利用するためのルールが必要で,GAE/Jではこれらのルールが「制約」として出現しています。中にはこれらの制約を一つ一つ捉え,「クラウドはまだ使えない」と主張する方々も見受けられます。しかし,重要なのはこれらの制約を正しく理解してうまく付き合うことです。既存のサービスのすべてをクラウドで提供する必要はありません。クラウドはサービス提供の一形態でしかないのですから,ニーズに合わせて適切に選択していくことがプロフェッショナルの仕事だと思います。そのとき,GAE/Jは非常に魅力的な選択肢になるはずです。
本書では,このようなGAE/Jの制約を踏まえて,それらとうまく付き合いながらシステムを開発・運用していくための実践的な利用方法を,実際の体験をもとに紹介しています。クラウドを利用しているみなさん,利用を検討しているみなさんが,クラウドに対してより深い興味と理解を持っていただく手助けになれば幸いです。