Modules API について
既に使っている方も多いと思いますが、Modules API について簡単に説明します。GAEには以前から、Backends API という仕組みがありました。これは常時起動しているインスタンスで、主にCronなどのジョブを専門に実行する環境です。Backends API を利用した場合、次の利点があると思います。
- フロントエンドの環境では10分を超える処理はできませんでしたが、Backends API では制限はありません。
- フロントエンドとバックエンドで環境を分けることができます。非常に重い処理に対して、強力なCPUタイプを割り当てるなどの設定が可能です。
代わりに登場したのが、 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とメモリの割り当て種類です。
スケール ・タイプ | Deadlines | CPU/Memory | Scaling | Free Daily Usage Quota |
---|---|---|---|---|
Automatic Scaling | HTTPリクエスト: 60秒まで タスク: 10分まで | F1, F2, F4, F4_1G から選択 | 自動スケール | 28時間インスタンス |
Manual Scaling | リクエスト: 無制限 タスク: 24時間まで | B1, B2, B4, B4_1G, B8 から選択 | マニュアルによるスケール | 8時間インスタンス |
Basic Scaling | Manual 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 を使用する必要があります。
前置きが長くなったので、次回に続きます。