Webサービスを公開するまでの流れを大まかに分けると、
- サーバを有料でレンタルする
- 環境構築する
- Webサービスを作成する
- デプロイして公開する
今回は、
サーバを有料でレンタルする
まずサーバを有料で借りるという時点で敷居が高いわけですが、
現在はプレビュー期間中ですが、
環境構築する
簡単に環境構築と書きましたが、
サービスが大きくなってくれば、
はじめからそういう構成になると考えて構築しておけば、
Google App Engineではそういうことを一切考える必要がありません。スケールすることが前提で組まれているので、
ただ逆に言えば、
しかし、
特に私が気にしたポイントは以下の点になります。
- データの確認方法、
または不整合が発生した場合の復旧方法 (図1) -
エンティティ単位でデータを確認することができます。またGQLというSQLと非常に似通った構文のクエリを発行することができ、
それでデータを確認することができます。 絞りこんだデータに対して、
updateすることもGUIからできますし、 エンティティを作ることもできます。つまり、 普通にRDBMSに対するクライアントのように操作することが可能で、 不整合などが発生した場合には目視しながら直すことも容易にできます。 - リソースの監視
(図2) -
リクエスト数などの情報がグラフによって簡単に把握することができます。
すべてのリソースに対して、
どのくらい利用しているのかが一目瞭然なので、 Quotaを超えた場合もなにを購入すればいいのかすぐにわかります。また、 どのURIに対して何回リクエストされているのか、 どのくらいCPUをつかったのかもチェックすることができます。 つまり、
単純にリソースを購入すればいいとかいう話ではなく、 常にどこにボトルネックがどこにあるのかを理解できるし、 それらのチューニングをおこなうことによって、 効率的に購入等を行っていくことが可能なのです。 - ロギング
通常通りロギングすれば、
管理画面ですべて確認することができます。MetaGatewayではexceptionが発生した場合など、 一元的に処理してすべて同様にロギングしています。 つまり、
ユーザの画面で発生したバグのほとんどのケースを私は把握しています。ユーザはfeedbackしてくれない人のほうが圧倒的に多いので、 feedbackなしに進化できるシステムを構築しなければならないので、 それがしやすいシステムであることが重要なのです。
- インデックスの張り方
(図3) -
AppEngineではインデックスのはっていないクエリーは発行することができません。
(発行しようとするとNeedIndexErrorのexceptionが発生します。) これ自体は賛否両論じゃないかと思いますが、
私的にはわかりやすくていいかなと思っています。 (パフォーマンスもある意味バグと考えているので) インデックスを張る方法は非常に簡単でindex.
yamlというファイルにindexを記述するだけです。 開発環境ではindexが張られていなくても動作し、
一度でもそのクエリーが流れればindex. yamlに自動的に記述されます。 つまり、
一度でも動作させてからアップすればindexの漏れは発生しないことになります。 もちろん、
バージョンアップの際もindex. yamlに追加されていれば差分だけをきちんとindexを張ってくれます。いきなりはservingになりませんがほっておけば張られるのであまり心配はいりません。 - バージョンアップ方法
私が、
バージョンアップにおいて重要と考えていることは、 既存のシステムを停止しない、 また問題があった場合にすぐに前にシステムにロールバック可能だということです。 完全にメンテナンス状態にして終了後にはずすという方法では、
システムが停止します。また、 ステージングサーバにアップして確認、 本番へシンクなどの方法では非常にロールバックが非常に大変です。その点、 Google App Engineではすさまじく簡単です。app. yamlのversionを1つあげてアップするだけです。すると、 新しいバージョンの完全なコピーが生成されます。 完全にユニークなURLが生成されるので、
そこで動作確認し、 問題なかったら、 それを現在のバージョンに設定するだけです。もし問題があれば前のバージョンを現在のバージョンに戻すだけです。きわめて理想的なバージョンアップ方法になります。コマンド一発でアップしたあとは、 GUIですべて操作可能です。
そのほかにもいろいろありますが、
Webサービスを作成する
Google App Engineを使っている方は、
Google App Engineを利用するということは、
私自身はC/
特に私が気に入った点は、
私はC/
なお、
たとえばMetaGatewayでは、
Google App EngineはWebサービスを作る上でも、
たとえば、
MetaGatewayではopenIDなども含めてgoogle以外の認証方法にも対応したいと考えているので、
デプロイして公開する
Google App Engineでは、
上記のようにコールするだけで終了です。後はアップロードしたバージョンの動作確認をして、
すべてが一瞬で終了するこのプロセスに慣れてしまうと、
次回はMetaGatewayの中身について説明していきます。