メニュー

Google App Engine の魅力とは? Google App Engine (GAE) でのアプリケーション起動方法!

【GCP入門編・第5回】 Google App Engine の魅力とは? Google App Engine (GAE) でのアプリケーション起動方法!

GCP

記事投稿 | 2017.05.25

Google App Engine の魅力とは? Google App Engine (GAE) でのアプリケーション起動方法!

以前の記事では、 Google Compute Engine を使用して作成したインスタンスに、簡単なサンプルアプリケーションを構築しました。この記事では、同じアプリケーションを Google App Engine 上にデプロイしてみたいと思います。

この記事の目的

  • Google App Engine とは何か、その魅力と特徴を知ろう。
  • GCP の Google App Engine 向けサンプルアプリケーションを、 Google App Engine 上で動作させる手順を学ぼう。

Google App Engine (GAE) とは?

Google App Engine (GAE) とは、その名の通り Google が提供する Platform as a Service (PaaS) です。2008年の4月にサービスが開始された PaaS としては古株のサービスで、当初は Python のみだった言語ランタイムも、現在では Java, PHP, Go をサポートするに至っています。

Google App Engine (GAE) の魅力

GAE がその初期の頃からのセールスポイントに、“自分のアプリケーションを Google のインフラストラクチャー上で動かすことができる”、というものがあります。 Google の強固で安定したインフラ上でアプリケーションを運用でき、勝手にスケールするため爆発的なアクセスにも悩まされることがない点など、現在も非常に魅力的なポイントであり続けています。

信頼される安定稼働

また、長年安定したサービスを提供し続けていることも特徴の一つでしょう。実績としても、大ヒットした Angry Bird, オンライン講義を提供する Khan Academy, 小売大手の Best Buy などが Google App Engine 上でサービス提供しており、ユーザー数の非常に多い大規模サービスから信頼されていることがわかります。また、最近上場して話題になった Snapchat は GCP や App Engine をフルに活用しており今後5年間は GCP を使い続けることを予定していることが話題になったのも記憶に新しいところです。

このように、アクセス数の非常に多い大規模サービスも使用している GAE ですが、使い始めるのは非常に簡単です。小規模にスタートして事業の拡大とともにスケールさせていく想定の場合、スケールに合わせてアーキテクチャを大規模に変更する必要がないということは、ビジネスを行う上で大きなアドバンテージとなるでしょう。

GAE は PaaS であるため、より汎用的な Compute Engine と比較することは難しいと思いますが、 Web アプリケーションを運用することにかけては、 GAE を第一選択肢に入れて良いと考えます。

実際にサンプルのアプリケーションを立ち上げてみると、その簡単さに驚かれることでしょう。少し拍子抜けしてしまうかもしれませんが、このシンプルさ、簡便さこそが GAE の圧倒的な強みであると考えます。
それでは、早速 Web アプリケーションを立ち上げてみましょう。

Google App Engine でアプリケーションを立ち上げてみる

Google Compute Engine を使って Web アプリケーションを立ち上げてみた方もいらっしゃると思いますが、いかがでしょうか。正直なところ、コードをインスタンス上で立ち上げるにあたっての事前準備が多く、面倒だと感じた方も多いのではないでしょうか。

今回の記事では、 Google が公式に提供している Python で作られたサンプルアプリケーションを使用し、 App Engine 上での動作手順をご説明します。

App Engine では、ローカル環境で Google Cloud SDK を用いてアプリケーションのデプロイを行います。そのため、前回ローカルに作成した hello-world アプリケーションのフォルダ内で作業を行います。

まず、ローカルに hello-world アプリケーションを作成します。作成方法は【GCP入門編・第4回】すぐ出来なくても大丈夫!サンプルアプリで Google Compute Engine (GCE) の動作練習!を参照してください。

Hello-world アプリケーションのディレクトリは、以下のような内容となっています。

hello_world
 ├ README.md
 ├ app.yaml
 ├ appengine_config.py
 ├ main.py
 ├ main_test.py
 └ requirements.txt

hello-world アプリケーションの作成が完了したら、ターミナルを開き、ディレクトリに移動します。

$ cd hello_world

次に、 hello-world アプリケーションが利用する依存パッケージをインストールします。

App Engine では、 pypi にあるパッケージを使用する際に、アプリケーションのディレクトリに外部ライブラリ用のディレクトリを作成し、そこをロードする形で使用します。

この際に必要なのが、 appengine_config.py です。 appengine_config.py はアプリケーションのロード時に読み込まれるファイルで、 App Engine で使われる定数の上書きなど、アプリケーションの設定を行うために使われます。 hello-world アプリケーションでは、外部ライブラリ用のディレクトリを参照可能にするため、 appengine_config.py に以下のような設定を記述しています。

from google.appengine.ext import vendor

# Add any libraries installed in the "lib" folder.
vendor.add('lib')

pip コマンドで外部ライブラリをインストールするため、以下のコマンドをコンソールに入力します。

$ pip install -t lib -r requirements.txt

なお、 requirements.txt の内容は以下の通りです。

Flask==0.12

次に、開発環境用のサーバーである、 dev_appserver.py を使って、アプリケーションの動作を確認。引数として与える app.yaml は、アプリケーションの定義が書かれた設定ファイルとなっています。

$ dev_appserver.py app.yaml

起動の途中で “gcloud app Python Extensions” のインストールを求められた場合には、“Y”を入力してインストールを行いましょう。インストールが完了すれば、ローカルでアプリケーションが立ち上がります。 http://localhost:8080/ を開いて、前回と同じく ”Hello World!” が表示されることを確認します。

なお、 “dev_appserver.py” の使用を開始すると、 http://localhost:8000/ で管理画面が立ち上がります。この画面ではコンソールからアプリケーションへのアクセス機能や、 Datastore の状態を表示する機能など、開発時に必要となる機能が数多く含まれています。

さて、ローカル環境での動作が確認できれば、アプリケーションをデプロイします。以下のコマンドにより行えます。

$ gcloud app deploy

このコマンドを起動すると、デプロイ先の URL の確認を求められます。ここで ”Y” を入力すると、デプロイ開始。コードのアップロード、サービスの起動完了後は、以下のコマンドでデプロイされたアプリケーションの確認が可能です。

$ gcloud app browse

開発環境と同じく、 ”Hello World!” の文字が表示されたかと思います。

おわりに

いかがでしたでしょうか。Compute Engine と比較し App Engine は、PaaS である分、開発環境から簡単にアプリケーションをリリースすることができるという印象を受けたのではないでしょうか。

Memcache や Cloud Datastore などを利用するアプリケーションの場合は、 App Engine を使うことで、開発の速度を大幅にスピードアップすることが可能です。また、 App Engine で動作させることにより、トラフィックの増大と共に自動的にスケールできる、という点も魅力の一つだと思います。

別の記事では、本記事までで作成した hello-world アプリケーションに手を加え、 Google Cloud Datastore を利用する簡単なメッセージボードを作成する手順を解説します。

PAGE TOP