クラウドWebサービスの概要とサンプル画面操作
※この記事は、書籍『クラウドWebサービス入門 gaedirectによるHTML5連携とマッシュアップ』の内容を、Think IT向けに特別にオンラインで公開しているものです。詳しくは記事末尾の書籍紹介欄をご覧ください。
クラウドをWebサービス化するという事は、WebクライアントでのJavaScript記述のみによって、例えばGoogle App Engine(以後GAE)のBigtable(NoSQL)へのアクセスを可能にするという事を意味しています。また、他にもサービスとして提供されている機能(Channel APIやビットマップデータを扱うBlobstore)などが含まれています。
これらの事によって、クラウドサービスとGoogle Mapsなどの他のWebサービスとのマッシュアップができたり、Webクライアントで最近最も注目されているHTML5とクラウドの連携なども、すべてJavaScriptの記述だけで行うことができるようになります。
この連載の第1回では、このような組み合わせで実現されるサンプル画面とそのUI機能等を紹介します。また、後半の第2回では、このようなUIを実現しているサンプルのプログラムコードすべての紹介と、その解説を行う予定です。
[I]クラウドWebサービスとは:NoSQLをWebサービスとして使う
[SaaS型クラウドとPaaS型クラウド:自力でクラウドアプリを構築する]
クラウドにはSaaS型、PaaS型、IaaS型の3種類のサービスモデルがあることはご存知と思いますが、ここでSaaSとPaaSの違いについて考えてみます。
SaaSは、例えばGoogleが提供するサービスでは、Gmail、Googleカレンダー、Googleドキュメントなど、エンドユーザがそのまま使用できるサービスで、PCを使用している殆どすべてのユーザがそのまま使用できる完成されたアプリケーションのサービスです。したがってユーザは与えられたアプリケーションをそのまま使用する事になり、謂わばお仕着せのクラウドサービスだといえます。
これに対してPaaS型のクラウドでは、ユーザ(プログラマ)がプログラムを作成し、自分の好みや・使用目的に合ったアプリケーションを作成することができます。つまり与えられたクラウドサービスをただ使うのではなく、巨大なクラウド環境で動作するアプリケーションを自分の力で作り上げることができるのです。
しかし、クラウド上で稼働するアプリケーションを開発する事はそれほど容易なことではありません。例えばGoogle App Engine(以後GAE)の場合、データ格納用としてBigtableと言われるデータストアが使用されますが、Bigtableは分散キー・バリュー型のデータストア(所謂NoSQL)で、これまでWebアプリケーションで使用されてきたRDB(Relational Database)とはまったく異なるデータ構造を持っています。そしてこれを、例えばJava言語からプログラムアクセスする場合には、Low-Level API やSlim3、JDOなどのAPIを使用することになりますが、これを理解・習得して自在に使えるようになるためには、それ相当のスキルレベルと習得のための時間を費やすことが必要になってきます。
[PaaSクラウド開発の敷居を低くするクラウドWebサービス]
しかし、もしJavaScriptの記述、それも簡単なプログラム記述のみで、クラウド上のデータストア(Bigtable)やサービス機能を操作できるアプリケーションを作成することができるのであれば、クラウドアプリケーション作成のための敷居がこれまでより遥かに低くなり、クラウド利用のメリットを享受できるアプリケーションも更に増えていく筈です。そして、それを可能にするために開発されたのがgaedirectというツールです。
gaedirectを使用すればJavaScriptの記述だけでGAEのサーバ機能を利用できるようになります。言い方を変えれば、本来サーバ側プログラムの開発によってのみ使用可能なPaaS型クラウドをJavaScriptからアクセスのみで使用できる、(広義の)Webサービスとすることができるようになるのです。
もう少し具体的に言えば、本来GAEでクラウドアプリケーションを開発する場合は、ブラウザクライアントでHTMLタグ記述やJavaScriptでのプログラム記述などの他に、クラウドサーバ側でJavaやPython、Go言語などを使用したプログラム作成が必要となります。これに対してgaedirectを使用した場合には、GAEのデータストアアクセスや、Channel APIを使用したサーバプッシュ機能、画像・動画のアップロードと表示・再生機能などをクラウドサーバ側でのプログラム記述を行うことなく、ブラウザクライアントでのJavaScript記述のみでブラウザクライアントから使用することができるようになります。
従って、gaedirectではJavaScriptでのプログラミング記述のみでクラウドを使用したアプリケーションを作成できることから、これまでクラウドでのプログラミング経験のない人でも、多少の習得によって自分用のクラウドアプリケーションを作り上げることができるようになるのです。
[クラウドサーバ利用でこれだけのメリットが得られる]
クラウドWebサービスを使用することによって、従来のホスティングサーバ環境などがクラウドサーバに置き換えられますが、その事によって次のようなメリットが一気に得られることにもなります。
- 1)強力なスケーリング(サーバ能力増強)機能
- 非常時などサーバアクセスが急増するような場合でも、強力なスケーリング機能によってアクセス不能やアクセス遅延の状態を引き起こすことなく、正常な閲覧可能状態を維持できます。
- 2)高可用性
- データストアを含めてサーバ機能は、プライマリサーバをレプリケートして分散配置するため、例えば災害発生などによってもサーバダウンに陥る確率は極めて低く、可用性の極めて高い堅牢なシステムになります。
- 3)自動レプリケーション
- 高可用性を実現する自動レプリケーションは、これも非常事態発生などによっても、データストアに保存されたデータの消滅を防ぎ、永続性(durability)を著しく高めます。クラウドのデータストアにデータを保管することによって、PCやサーバが災害で破損・損傷してしまったような場合でもデータには影響がなく、復旧にかかる時間や経費を大幅に削減できます。
- 4)サイト利用は無料・低料金
- GAEでは無料で使用開始することができ、かなりのデータ量やアクセス数までは無料のままで使用することができ、有料の範囲で使用する場合も、一般のホスティングサービスに比べてかなり低料金になります。特に一定期間だけアクセス数が急増するような場合には有効で、例えば、ホスティングサービス利用するような場合は、常に最大負荷を超えるサーバ能力で契約する必要がありますが、GAEの場合は使用した分だけの料金になるため無駄な料金支払は発生しません。
- 5)サイト立ち上げスピード
- 新規サイトを立ち上げるのはものの数分で可能。新規に行う場合でも、1~2日後には立ち上げを完了できることから、緊急時の迅速なサイト立ち上げが可能です。
- 6)電力消費の削減
- クラウドでは、コンテナ型データセンタなどを使用して、電力損失、冷却、照明等による余計な電力消費を防ぎ消費電力削減に貢献します。
- 7)サーバ構築・管理工数の大幅削減
- クラウドでは、用意されたサーバ・ネットワーク環境をただ使用するだけでよく、サーバ・ネットワークの障害対応やアップグレード・保守管理などで工数を割く必要はありません。