実サイトに近いアプリをデプロイしてみる
連載第5回では、2つのテーブルを操作するごく小規模なアプリケーションを作成、実行してみました。当時は残念ながらGAE上ではまともに動作させられずに終わってしまいましたが、今回の環境であれば普通に動作させることができるはずです。しかしそれだけでは少々物足りない感じもしますので、ここでは実際にRailsで稼働しているサイトを例に、その主要機能を抜粋したものをGAEで動かしてみましょう。
今回、例としてあげるサイトは、筆者(ナレッジエックス)が開発に協力している「green pedal map」という自転車愛好家のための地図情報サイトです。
このサイトはRuby on Railsで構築されており、Google MapsのAPIを利用して自転車で巡りたいスポットやサイクリングのためのルートの情報などをみんなで登録し共有することができるようになっています。Google MapsのAPIはあくまでも表示にのみ利用されており、データの永続化はRDBMSによって行われています。
さて、今回はこのサイトの主要機能であるスポットおよびルートの登録・閲覧を抜き出して、GAE上で稼働させてみました。全機能をそのまま稼働させるという選択肢もあったのですが、GAE上で稼働させるとインターネット上に実サイトと同じダミーのサイトができることになり利用者の混乱を来す可能性があることなどを考慮し、主要機能の抜粋とさせていただきました。
とはいえ、個々の機能そのものは、実サイトのものとほとんど変わりませんし、ソースコードも抜粋のために削った以外には特に大きな変更をしておりません。
上記の手順通りにGAE用に変換して実際にデプロイしてみましたが、以前の連載時と違い、ローカルではもちろんですが、GAE上でも問題なく動作することが確認できました。筆者がデプロイを行ってみたテスト用のサイトが下記にありますので、興味がおありの方は是非お試し下さい。以前の掲載時(連載第3回、第5回)と比べても、体感速度で分かるくらいにレスポンスが良くなっています。
http://kx-gmaptestapp.appspot.com/
リベンジ(?)成る
ということで、なんとかGAE上でそれなりの機能を持ったアプリケーションが動作できることが確認できました。SQL4Gのチューンアップ・エンハンスはもちろんのこと、GAE上でのJRuby環境の性能改善、GAE自身のパフォーマンスアップなどが総合的に貢献し、RailsアプリであってもPure JavaのGAEアプリケーションと比べてもそれほど引けを取らない体感速度が実現できることがお分かり頂けたと思います。ここからは皆さんのアイデアで、もっといろいろなRailsアプリをGAE上で動かしてみてください。この連載をきっかけに、GAEでRailsを活用される方がより多くなれば幸いです。
GAEやSQL4Gの今後の展開について
今回で連載が終了します。最後に、GAEやSQL4Gのロードマップなど今後の展開について簡単に紹介します。
GAEのロードマップについて
Googleのサービスを支えているのと同じスケーラブルなインフラ上で、さまざまな機能を享受することができるGAEですが、最近行われたGoogle I/Oでの発表によれば、さらに多彩なサービスが提供される予定です。
2010年第4四半期以降に提供されているサービスは以下の通りです。
- App Engine for Business Support
- ビジネス向け、アプリケーションサポート(詳細)
- App Engine for Business SLA
- 99.9%の稼動保証
- Billing
- 課金、請求機能
- Hosted SQL
- フル機能のSQLサーバ提供
- Custom Domain SSL
- 独自ドメイン及びSSLによるGAEアプリケーションへのアクセス
上記を考慮すると、Googleは GoogleAppsを始めとする多彩なサービスの軸をエンタープライズ領域に傾けてきていると考えているのは筆者だけではないと思います。
また、GAEのSDKにおいては最近のバージョンアップにより、OpenIDとOAuthによる認証が実験的ながらサポートされるようになりました。これにより、例えばOAuth認証を使用するTwitterのAPIの活用など、Webサービスの領域にもその可能性を広げてきていて、ますますGAEは目が離せない存在となっていきそうです。
SQL4GとGAEについて
Googleが提供予定のサービスは確かに魅力的なものではありますが、サービスのスタートアップ時には、そこまで濃厚なケアは必要ないとお考えになる方も多いでしょう。そこで一例ですが、以下のような運用パスもSQL4Gなら容易に実現できます。
・ビジネスやサービスのスタートアップ時には完全無料で使いやすいSQL4G + ノーマルのGAEを活用する。
・ビジネスやサービスの進展と共にGoogle が提供する SLA、SSL等の高付加価値サービスを使用する。
または、GAEに頼らない別の方法で運用を行う。
連載の中で何度か述べましたが、SQL4GはH2DataBaseをベースとしたPureJavaデータベースサーバなので、OracleやMySQLをはじめとする各種RDBMSへのマイグレーションも容易です。これは、SQL4G自体が優れた可搬性を持っているが故の大きなアドバンテージといえます。
SQL4Gの優れた可搬性とGoogleが提供する各種高付加サービスの組み合わせにより、SQL4G/PHP4Gの活躍の幅はさらに広がっていくと筆者は確信しています。
SQL4Gのチューニングについて
2月の初回連載から半年が経ち、「クラウド」を取り巻く環境は成熟に向かってその歩みを速めていますが、その間、SQL4Gはたゆむことなくバージョンアップを重ねてきました。
オリジナルのH2DataBaseで不要となるクラスタリングや各種ファイルシステムの機能のソースを削除することによる軽量化や、不要なメソッドコールの削除を行うとともに、H2DataBaseのストレージI/O部分をBigtableに最適化(※)するよう大幅な書き換えを行いました。
その結果、SQL4G本体のファイルサイズは約8MBから1.5MBに、また、スピンアップ時間は約5秒から1秒へと大幅に軽量化、高速化しました。もちろんSQL発行に対する応答時間も改善しています。
SQL4Gを利用した弊社のクラウド・サービス「グループスケジューラー」の性能テストでは、20万件格納させたテーブルに対する問い合わせをはじめとするアプリケーション操作も十分な速度で問題なく動作していました。参考ですが、1テーブルに80万件のデータが格納されていてもSQL4Gがハングアップすることはありませんでした。
SQL4Gのロードマップについて
さまざまなチューニングによって、この半年でSQL4Gは大きく性能を向上し、GAE+SQL4G というインフラは完全に実用段階に入ったといっても過言ではありません。
今後はさらなる性能向上を目指すことは言うまでもなく、バックアップ/リストア機能をなど、エンタープライズの領域においても十分に使える機能を追加する予定です。
また、PHP4Gにおいても第6回の連載で述べたように、さらなる機能の向上を予定しています。
最後に……
半年にわたり連載を続けてまいりましたが、今回で最終回となります。
クラウドを取り巻く環境は「ドッグイヤー」と言われるとおり、ものすごいスピードで進化を遂げています。数年後のサーバ環境は現在のものからは想像が付かない世界となっているかもしれません。そのときは、私たちエンジニアやユーザーの誰もがハッピーになれる世の中になっていることでしょう。
いままでお付き合いいただき誠にありがとうございました。
2/2 |
Index | |
GAE+SQL4GでRailsアプリ開発(リベンジ編) | |
Page1 google-appengine gemのバージョンアップ google-appengine gem 0.0.15でのセットアップ手順 | |
Page2 実サイトに近いアプリをデプロイしてみる リベンジ(?)成る GAEやSQL4Gの今後の展開について GAEのロードマップについて SQL4Gのロードマップについて 最後に…… |
Coding Edgeお勧め記事 |
いまさらアルゴリズムを学ぶ意味 コーディングに役立つ! アルゴリズムの基本(1) コンピュータに「3の倍数と3の付く数字」を判断させるにはどうしたらいいか。発想力を鍛えよう |
|
Zope 3の魅力に迫る Zope 3とは何ぞや?(1) Pythonで書かれたWebアプリケーションフレームワーク「Zope 3」。ほかのソフトウェアとは一体何が違っているのか? |
|
貧弱環境プログラミングのススメ 柴田 淳のコーディング天国 高性能なIT機器に囲まれた環境でコンピュータの動作原理に触れることは可能だろうか。貧弱なPC上にビットマップの直線をどうやって引く? |
|
Haskellプログラミングの楽しみ方 のんびりHaskell(1) 関数型言語に分類されるHaskell。C言語などの手続き型言語とまったく異なるプログラミングの世界に踏み出してみよう |
|
ちょっと変わったLisp入門 Gaucheでメタプログラミング(1) Lispの一種であるScheme。いくつかある処理系の中でも気軽にスクリプトを書けるGaucheでLispの世界を体験してみよう |
|
- プログラムの実行はどのようにして行われるのか、Linuxカーネルのコードから探る (2017/7/20)
C言語の「Hello World!」プログラムで使われる、「printf()」「main()」関数の中身を、デバッガによる解析と逆アセンブル、ソースコード読解などのさまざまな側面から探る連載。最終回は、Linuxカーネルの中では、プログラムの起動時にはどのような処理が行われているのかを探る - エンジニアならC言語プログラムの終わりに呼び出されるexit()の中身分かってますよね? (2017/7/13)
C言語の「Hello World!」プログラムで使われる、「printf()」「main()」関数の中身を、デバッガによる解析と逆アセンブル、ソースコード読解などのさまざまな側面から探る連載。今回は、プログラムの終わりに呼び出されるexit()の中身を探る - VBAにおけるFileDialog操作の基本&ドライブの空き容量、ファイルのサイズやタイムスタンプの取得方法 (2017/7/10)
指定したドライブの空き容量、ファイルのタイムスタンプや属性を取得する方法、FileDialog/エクスプローラー操作の基本を紹介します - さらば残業! 面倒くさいエクセル業務を楽にする「Excel VBA」とは (2017/7/6)
日頃発生する“面倒くさい業務”。簡単なプログラミングで効率化できる可能性がある。本稿では、業務で使うことが多い「Microsoft Excel」で使えるVBAを紹介する。※ショートカットキー、アクセスキーの解説あり
|
|