2015年6月22日月曜日

GAE、Modulesの設定 ①

GAE(Google App Engine)の Modules API について、設定で試行錯誤したのでメモを兼ねた記事にします。
Modules API について
既に使っている方も多いと思いますが、Modules API について簡単に説明します。
GAEには以前から、Backends API という仕組みがありました。これは常時起動しているインスタンスで、主にCronなどのジョブを専門に実行する環境です。Backends API を利用した場合、次の利点があると思います。
  • フロントエンドの環境では10分を超える処理はできませんでしたが、Backends API では制限はありません。
  • フロントエンドとバックエンドで環境を分けることができます。非常に重い処理に対して、強力なCPUタイプを割り当てるなどの設定が可能です。
しかし Backends API は、2014年に非推奨の機能になってしまいました。 参考: Backends API

代わりに登場したのが、 Modules API です。フロントエンド・バックエンドに関係なく、アプリケーションの下に Modules という環境があり、その下にバージョン、更に下に実行環境であるインスタンスがある構成です。

参考: App Engine Modules in Python

Backends API との違いとして、次の点が挙げられると思います。

  • Module は幾つか作成できます(無償で5、有償では20個まで)。処理タイプによって Module を切り替えることが可能です(Backends API でも処理毎にCPUタイプを切り替えることが可能でしたが・・・)。
  • Backends API ではバージョンはなかったですが、Modules API ではバージョンを分けることが可能になりました。
  • フロントエンドの処理でも、特定のURLだけ強力なCPU環境の Module を割り当てることが可能になりました。
スケール・タイプ と インスタンス・クラス
Modules API との関連で、CPUに関するスケール・タイプとインスタンス・クラスを理解しておく必要があります。簡単にですが、解説してみたいと思います。
以前はなかったと思いますが、GAEに「スケール・タイプ」と「インスタンス・クラス」という概念が導入されました。スケール・タイプは処理に応じて、どのようにインスタンスが増えていくのかの設定です。またインスタンス・クラスは、CPUとメモリの割り当て種類です。
スケール
・タイプ
DeadlinesCPU/MemoryScalingFree Daily Usage Quota
Automatic ScalingHTTPリクエスト: 60秒まで
タスク: 10分まで
F1, F2, F4, F4_1G から選択自動スケール28時間インスタンス
Manual Scalingリクエスト: 無制限
タスク: 24時間まで
B1, B2, B4, B4_1G, B8 から選択マニュアルによるスケール8時間インスタンス
Basic ScalingManual Scalingと同じManual Scalingと同じ最大インスタンス数まで処理量に応じてスケールManual Scalingと同じ

インスタンス・クラスメモリCPU時間当たり費用
B1 128 MB 600 Mhz $0.05
B2 256 MB 1.2 Ghz $0.10
B4 512 MB 2.4 Ghz $0.20
B4_1G 1024 MB 2.4 Ghz $0.30
B8 1024 MB 4.8 Ghz $0.40
F1 128 MB 600 Mhz $0.05
F2 256 MB 1.2 Ghz $0.10
F4 512 MB 2.4 Ghz $0.20
F4_1G 1024 MB 2.4 Ghz $0.30

参考: App Engine Modules in Python

リクエストの制限のない Module にするには、スケール・タイプを Manual Scaling か Basic Scaling にする必要があります。
因みにGAEでは、無償のインスタンス割り当てがあります。フロントエンドである Automatic Scaling Modules で一日あたり28時間インスタンス、バックエンドの Basic and Manual Scaling Modules で一日あたり8時間インスタンスです。無償分を余すことなく使って費用を削減するためにも、Modules API を使用する必要があります。

前置きが長くなったので、次回に続きます。