Google App Engineについて

Google App Engine ( GAE )とは

Google App Engine (以下 GAE ) は、 Google が運営している Google Cloud Platform (以下 GCP ) のサービスの一つです。今でこそ GCP は100近いサービスを有していますが、 Google のクラウドサービスはアプリケーションプラットフォーム ( PaaS ) であるこの GAE から始まりました。

GAE のサービス

では GAE はどのようなサービスなのでしょうか。 GAE では、エンジニアが開発したウェブアプリケーションを、 Google が用意したインフラストラクチャ上で実行することができます。これだけ聞くと Google が用意したインフラではなく、サーバがあればどこでもいいのではないかと思いますが、この Google が用意したインフラが素晴らしく GAE を利用するメリットがここにあります。 GAE には環境として Standard environment とFlexible environment の2種類がありますが、以下に紹介する内容は Standard environment となります。

GAE のメリット

メリット1 … インフラストラクチャを気にする必要がない

GAE があればインフラエンジニアが不要と言っても過言ではありません。一般的に、サービスが大きくなりサーバへの負荷が大きくなると、サーバのスケールアウトが行われます。これには、サーバを分散させるためにロードバランサを用意し、必要な台数だけ同じサーバを立ち上げなければいけません。言葉で説明すると簡単ですが、実際の作業となるとそう簡単ではありません。しかし GAE を利用していると、システムの負荷に応じて GAE が自動でスケールアウト・スケールインしてくれます。エンジニアは何も手を加える必要はありません。更にスケールアウトによるインスタンスのスピンアップ速度は最短で数十ミリ秒と圧巻です。システムを GAE に寄せることができるのであれば、これに勝るシステムはないでしょう。

メリット2 … 利用できる開発言語が豊富

GAE で用意されている環境では、 Python , Java , PHP , Go , Node.js などサーバサイドの開発でよく利用される開発言語が利用できます。その他の言語やランタイムも利用することができますが、その場合は Standard environment ではなく Flexible environment を利用すればいいでしょう。 GAE を利用する前提で、どの開発言語がいいかはエンジニアの間で分かれるところではありますが、個人的には Python をオススメします。なぜなら GAE に新しい機能が追加されるとき、ベータ版の開発では Python から入るからです。いち早く新しい機能を試すには Python を利用しましょう。

メリット3 … 料金が安い

GAE は利用した分だけ料金が発生する仕組みとなっています。サーバのインスタンス数に関わる費用で見ると、サーバのインスタンス数・時間に応じて料金が発生します(この他、ネットワークなどの料金も発生します)。「利用した分だけ」というところからは実際の料金が想像しづらいと思いますので、実際の例を挙げてみましょう。 これまで広告管理システムを AWS EC2 , RDS で用意しており、運用するのに月約10万円掛かっていました。このシステムは、高可用性を担保するためホットスタンバイで運用しなければいけなかったため、 EC2 , RDS 共にそれぞれ最低2台のインスタンスが必要でした。これを GAE , Google Cloud Datastore に最適化することにより、なんと月約1千円に抑えることができました。更にメリット1で述べたようにインフラに手が掛からなくなったため、サーバ以外の人的コストも抑えることもできています。 また、アクセスは少ないけどサービスのホームページを用意しなければいけない場合にも GAE は有効です。これまで数サービスのホームページを GAE で用意しましたが、 GCP のトライアル後にも利用可能な GAE の無料枠内で運用できています。これですと、レンタルサーバを借りるよりもお得ですね。

GAEのメリット

メリットの大きい GAE ですが、良いこと尽くめと言うわけではありません。デメリットについても言及しておきます。

デメリット1 … サービスの制限

GAE は PaaS ですので、サーバの設定を自由に変更することができません。そのため、構築しているシステムを GAE の仕様に合わせたり、 GCP の他のサービスを併せて利用したりする必要があります。 新規システムの開発であれば、 GAE の仕様に合わすことはそこまで大きな問題にならないですが、既存システムを GAE に移植するときはどのような機能が利用されているかなど注意しなければいけません。 それでももし GAE の仕様に合わすことができないようであれば、 Flexible environment を利用する選択肢もあります。

まとめ

  • Google App Engine ( GAE ) は、Google Cloud Platform ( GCP ) のサービスの一つである。
  • GAE のオートスケール機能により、インフラストラクチャを気にすることなくシステムの開発に集中できる。
  • GAE の料金体系から費用の算出が難しいが、結果的に安い運用費が期待できる。
  • GAE の仕様に合わせたシステムを開発することが望ましいが、それができない場合は Flexible environment を利用する選択肢もある。
» エンジニア登録はこちら