PaaSの代表格、Google App Engine
AWS、さくらのクラウド、Azureに続いて、今回はGoogle App Engineを取り上げてみます。
これまで紹介したAWS、さくらのクラウド、AzureはIaaS(+PaaS)ですが、Google App EngineはPaaSです。ですから、何かをインストールしたりとかマシンにログインしたりとかはできません。その分、インスタンス数やスペックなどのスケーリングが楽というメリットがあります。
ただ、PaaSのため開発できるアプリケーションはWebアプリケーションのみとなります。
IaaSと違ってメールサーバやDNSサーバは構築できません。とは言え今や世の中の開発需要の大半がWebでしょう。
GAEで使える開発言語と開発環境
Python、Java、Go言語の利用が可能
使える言語としてはPython、Java、Goがあります。まあGoを使う人はいないと思いますが……。ちなみにGoogle3大言語はPython、Java、C++になります。しかし、Python開発者のGuidoは先日GoogleからDropboxに転職してしまいました。
Google App Engine上の開発は、言語ごとにSDKをインストールして環境を構築し、それをアップロードするという形で進めます。
SDKをインストールすると、Google App Engineのエミュレーション環境がローカルに構築されます。たとえばMacの場合、SDK(Google App Engine Launcher)をインストール、Runボタンを押せばローカルのWebサーバが起動します。ローカルで動作したものは基本的に本番でも動作します。テストが終わったらDeployをすれば本番環境に反映されます。
アプリにアクセスするには、「アプリ名.appspot.com」というドメインか、もしくは独自ドメインも使用可能です。
Pythonの場合、WebフレームワークとしてwebappやDjangoを使うことも可能です。webappはSDKに含まれているので、インストールした時点で使用可能となります。Djangoの場合は自分でDjango環境を構築する必要があります。
他にも、Google App EngineはWSGI準拠なのでWSGI対応しているフレームワークであれば使用することが可能です。
GAEで使えるのはオブジェクトデータストア
ただ、注意点としてGoogle App EngineはPaaSのため自分で好きなデータベースをインストールすることなどはできません。
そしてGoogle App EngineがサポートしているデータストアはRDBMSではなくオブジェクトデータストアとなっています。データストアへのアクセスは、WAFのORMのようなクエリオブジェクトインターフェースと、GQLというSQLに似た言語を使う二つの方法が用意されています。これらのインターフェースを使えば、Google App Engineのデータストアはスキーマレスですが、それほど違和感なく使うことができるでしょう。
また、メール、Memcache、タスクキューなどの利用も可能です。タスクキューは自動実行バッチを用意に実装することができます。たとえば、筆者はTwitterへの自動投稿をGoogle App Engineを活用して実装していますが、ツイート予約はタスクキューに頼っています。
おおざっぱに言ってしまえば、Google App Engineは「WAFまで用意するからWAFの上でWebアプリケーション作って」と考えるとわかりやすいでしょう。
便利な管理コンソールも用意
またGoogle App Engineには良くできた管理コンソールが用意されています。利用状況、ログ、データストア、タスクキューの中身などを見ることができるほか、アプリケーションにアクセスできるパーミッションコントロール、利用する環境のパフォーマンス設定なども可能です。
PaaSであることがメリットでもありデメリットでもある
Google App Engineのメリット・デメリットはどちらもPaaSであることによります。
メリットとしてはスケーリングがいらない、アプリケーションに集中できるなどです。
デメリットは用意された環境しか使用できないというところです。
ECサイトや凝ったWebサービスを開発するには特にデータストア周りが厳しい気がしますが、たとえばFacebookアプリの開発などには最適な選択肢の1つと言えるかもしれません。
クラウド連携スキルを高める無料ハンズオントレーニング開催!
クラウド環境でのアプリケーション開発事例が増えつつある現状を踏まえ、開発者向けに Windows Azure をテーマとした無料のハンズオントレーニングを連続開催します。
詳細、ご参加はこちらから↓