GAEでの請求はすべて、インスタンス時間( "IH")、つまり一定期間実行されているサーバーインスタンスの数に要約されると私は理解しています。ただし、 IHに加えて、1日を通して使用する必要のあるクォータとリソース制限があるため(クォータは24時間ごとに補充されるため)、明らかにそれほど単純ではありません。
私は最初のGWT/GAEアプリを設計している最中であり、多くの記事(そのうちのいくつかは以下に引用されています)に出くわしました。 Googleでの請求と運用コストを最小限に抑えます。
ある例では、開発者はGAEアプリに一連の最適化を実装しました。これにより、同じアプリが最終的に「無料」の割り当てとリソースの請求しきい値を下回ったため、同じアプリが1日あたり7ドル(月額220ドルまで)から0ドルに下がりました。 。
GAEに非常に慣れていないので、アプリのアーキテクチャ/設計に事前に組み込むことができる一連の原則または実践があるかどうか疑問に思っています。これは、実装された関数型コードに細流化され、GAEにデプロイされると、アプリを引き起こします。可能な限り効率的に(金銭的に言えば)実行する。
これまでに私が行ったいくつかの控除は次のとおりです。
- キャッシュを最大化し、データストアのヒットを最小化します
- できるだけ多くの非同期リクエスト処理をバックエンドインスタンスにプッシュするようにしてください
- 同じインスタンスが同時に複数のリクエストを処理できるように、同時HTTPリクエスト処理を有効にします
だから私の質問:私が間違ったこれらの一般化のいずれかがありますか?もしそうなら、なぜ(またはそれらは条件付きであり、ある場合には当てはまりますが他の場合には当てはまらない)?ここで重要なものが欠けていますか?たとえば、どのコードがバックエンドインスタンス(リソースの制約が少し緩い)に属しているかを判断し、どのような種類のGAE固有のプロファイリングツール(AppStats、SpeedTracerなど)を使用してボトルネックなどを確認するか。
また、いくつかの引用記事:
- 最大アイドルおよび最小遅延の構成
- GAE独自のスケーリングのベストプラクティス
- CPU最適化の例