GAEでのWordPressの動作確認
今までの連載で、アプリケーションをGAE環境にアップロードすることは何度も行っているのですが、今回はWordPressという今までのアプリケーションとは比較にならないほどの大きさのものですので、GAE環境に上げるだけでも時間がかかります。アップロードの時間は環境やGAEの状態によっても異なるのですが、筆者の環境ではアップロード完了まで2分ほどかかります。
インストールの画面と初期設定
WordPressのインストール画面がGAE上に表示されました。なお、初期設定で必要となるwp-config.phpの編集やデータベースの作成はGAE環境にアップロードする前に、すべて行う必要があります。wp-config.phpは本来インストールのプロセスで自動的に作成することも可能なのですが、繰り返しになりますがGAEの環境ではファイル作成ができないため、対象となるファイルを、あらかじめ作成しておく必要があるためです。
GAE環境でインストール画面が表示されました(クリックで拡大) |
---|
インストール
先に述べた30秒ルールの対策として、プロセスを分離してインストールを行いました。
インストールのプロセスを分離して、インストール中にレスポンスを返すことにより、30秒ルールを回避 |
---|
インストールが終了し、デフォルトのブログが無事表示された
|
---|
ログイン画面が表示され、デフォルトの投稿画面が無事表示されることを確認しました。
動作速度に関してですが、今回動作検証の対象としたWordPressでは、例えば1回の投稿の表示につき、数十回程度データベースサーバにクエリを発行しています。これはSQL4Gとしては、少々荷が重い処理になります。そのため、現状のところ一般的なサーバより、動作が少し緩慢なのはやや残念なところです(なお、この問題に関しては将来解決する見込みです、詳しくはPHP4GとGAEの今後についてをご覧ください)。
PHP4G + SQL4Gアプリケーションを作成する上での注意点について注意点は以下のとおりです。
・SQL4Gを利用してデータを取得するときは、クエリを大量に発行するような実装をしない
これは、WordPressの動作を検証しているときに判明したことです。具体的には、ユーザーの設定情報がDBに格納されている場合、その設定情報を1つ1つ取得するためにSQLを複数回発行するのではなく、1回のSQLで設定情報をすべて取得し、アプリケーション側でその設定情報を特定するようにするなどです。
これは、WordPressの場合、設定情報1つ1つを取得する前者の方式を採用していたため、速度が低下してことによる問題点に対する解決策の1つです。
・GAE、SDK 1.2.8の新機能「precompilation」機能を使用する
precompilationは、App Engineに配置する前にクラスローディングの一部の作業を実行することで最適化し、アプリケーション実行速度を高める機能です。
この機能は執筆時点ではオプションのため、有効にするにはappengine-web.xmlに、
<precompilation-enabled>true</precompilation-enabled>
と記述します。
この機能を有効にすると、GAEへのアップロード時間は従来よりかかるようになりますが、アプリケーションの起動時間や実行速度が向上します。筆者もこのオプションを試したみたところ、体感できるほどに実行速度が速くなりました。具体的な速度の差は計測していないのですが、実際に速度を測ったサイトによるとおおむね30%向上したという報告があります。
そのほかの注意点としては、20秒ルールやスピンアップ待ち(GAEでアプリケーションを起動(インスタンス生成時)の待ち時間)を意識した開発など挙げられますが、こちらについては、すでにWebを通じて様々な情報を入手できますので、ここでは割愛させていただきます。
PHP4GとGAEの今後について
今回の対応を行った結果、浮かび上がった問題点とその解決策について簡単ですが以下に述べます。
・GAE環境におけるファイルI/O系動作について
こちらは技術的な課題と対応方法については、すでに構想は練りあがっていますので、今後予定しているPHP4Gのバージョンアップ時にはファイル書き込みなどのI/O系動作に対応したいと考えております。
・アプリケーションやSQL4Gの実行速度や30秒ルールについて
前回、5回目の連載でも取り上げましたが、グーグルが公表しているGAEのロードマップを見ると、半年以内に30秒制限やスピンアップ待ちがなくなるという記述があります。これが実現すると、SQL4Gの動作速度の大幅な向上が見込まれるとともに、先のI/O系の問題が解決され、GAEの特徴を良い意味で意識しないプログラミングが可能になることも考えられます。
最後に実際に広く使われているアプリケーションをGAE+PHP4G +SQL4Gという組み合わせで動作させることができました。WordPressのような大きなアプリケーションを動かすことができるGAE+PHP4G+SQL4Gならば、一般企業の通常業務やパブリック向けのサービスを展開していくことも決して難しくないと思います。
なお、今回の連載で作成したWordPressは、
http://wordpressphp4g.appspot.com/wordpress/
にあります。また、連載第4回目で作成したアプリケーションについては、
http://employeephp4g.appspot.com/empmaint.php
にございますので、興味のある方はぜひご覧ください。
次回はいよいよ最終回です。お楽しみに!!
3/3 |
Index | |
GAE上でWordPressを動かす | |
Page1 GAEにインストールするアプリケーションについて WordPressとは? なぜWordPressをGAEで検証しようとしたか? 著名なアプリケーションをGAE上で動作させるということは…… | |
Page2 GAE環境で動作されるために想定される問題について WordPressを動かしてみよう! データベースの互換性問題とその解決 文字化けの問題とその回避策 GAEの30秒ルールの問題 ファイル書き込みの問題 | |
Page3 GAEでのWordPressの動作確認 インストールの画面と初期設定 インストール PHP4GとGAEの今後について |
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を紹介する。※ショートカットキー、アクセスキーの解説あり
|
|