kitoketa blog

AWS/GCP、プログラミング、育成、リーダー、本の感想、などについて

Google App Engine 基礎知識

はじめまして!

クラウドエンジニアのkitoketaです。

現在のGCPを使った業務では主にDataFlowとBigQueryを使ったビッグデータ処理システムに携わっていますが、以前の現場ではプラットフォームにAWSのElastic Beanstalkを使ったWebアプリケーションの開発を行っていました。

今回、GCPのサービスを使ってWebアプリケーションを開発する際のプラットフォームはどんなサービスを使うのか調べた際に、一番最初に出てきた、
Google App Engine(GAE)に関しての基本情報をまとめてみました。

 

GAEの概要


f:id:kitoketa:20200517172440p:plain

App Engine

一言で言うと...

「Webアプリケーションを容易に構築・稼働させることができるサービス」

です。

インスタンスの管理や、スケーリングを自動的に行ってくれるので、開発者はアプリケーション開発に集中できます。

対応言語(2020/5 時点)

  • Python 2.7、3.7、3.8
  • Java 8、11
  • Node.js 10、12
  • PHP 5.5、7.2、7.3
  • Ruby 2.5
  • Go 1.11、1.12、1.13

Standard Environment(SE)とFlexible Environment(FE)

詳しい比較は公式ドキュメント(https://cloud.google.com/appengine/docs/the-appengine-environments?hl=ja)を参照してほしいのですが、

その名の通り、FEの方がSEに比べて自由度の高いWebアプリケーション開発が可能です。

しかし、近年ではSEも各種の制限が大きく緩和され、自由度が高くなってきています。

どちらの環境にするかの選択方法としては、基本的にはSEでできないかを考えて、それでも難しいような下記のような条件がある場合はFEを選択すればよいでしょう。

  • Googleが対応している言語以外でアプリケーション開発する場合
  • 60秒以上のタイムアウト時間が必要な場合

以降は、SEを前提として記載していきます。

GAEの特徴


複数バージョンの管理

1つのWebアプリケーションに対して複数のバージョンを配置することができます。

これにより、Blue-Greenデプロイメントが実現できます。

トラフィック分割

サービスの各バージョンに対してユーザーからのトラフィックを分割させることができます。

これにより、カナリアリリースが実現できます。

自動スケーリング

負荷が増大したさいに自動的にインスタンスを増やしたり、負荷が低下した場合は自動的にインスタンスを減らしてくらます。

これにより、ピーク時を想定して対策を行う必要がなく、適切なインスタンス数にしてくれるので無駄な料金が発生しません。

GAEの料金体系

詳しい料金は公式ドキュメント(https://cloud.google.com/appengine/pricing?hl=ja)を参照してください。

デフォルトでは、アクセスが無い場合は最低インスタンスが0台なので、全くアクセスがなければ料金が発生する心配もありません。

また、1日あたり28時間分の無料枠があるので、インスタンス1台であれば料金は発生しません。(FEは無料枠無し)

まとめ


 調べた結果、とりあえずGCPを使ったWebアプリケーションを開発する際のプラットフォームは、基本的にGAEのSEを選んでおけば間違いないということが分かりました。

ただ、他のサービスとして、コンテナ化されたWebアプリケーションを稼働させることができる「Cloud Run」や、HTTP(S)でのリクエスト以外にもトリガーにできる「Cloud Functions」など、いろいろな候補があることも分かったので、調べてみて別記事でまとめてみたいと思います。

次回は実際にデプロイしてWebアプリケーションを動かしてみるところまでをやってみたいと思います!