Google App Engineの新料金体系とその他クラウド

Ken published on
12 min, 2332 words

Categories: misc

既にいろんなところで話題になってるGoogle App Engineの新料金体系。

■ Google cloud services – App Engine http://www.google.com/enterprise/cloud/appengine/pricing.html

今後、自分でもどのサービス、どのクラウドを利用していくか迷っているけど、今思っていることをメモしておくことにする。 Google擁護な内容が出てくるかも知れないので、先に書いておくと…トップゲート社員です。でも、Googleのサービスを使った業務には携わっていなく、ITアーキテクトとして働いてます。 なので、書いてることは間違ってるかもしれません!!

Twitter botの場合

自分で動かしてるのは小さなTwitter bot(3分間隔でごにょごにょして、tweetしてるだけ)だから課金されることないだろうと思っていたのだが、あんな小さなbotも課金されるくらいに料金体系が変わってました。 具体的にどれくらいになっていたかというと、$2.25〜$2.34/dayくらい。月額に換算すると5500円/月くらい。 今までは毎月無料の範囲内に収まっていたのに、急に5000円以上の出費!…になるかも。

お手軽な対処

まず、お手軽にこの金額を減らす方法。 あっとゆーまに設定が完了する割に効果あります! Max Idle Instancesを1にし、Min Pending Latencyをなるべく大きく(15.0s)にすること!

■ 404 shin1のつぶやき ないわー Not Found: Google App Engineの新料金体系に向けた準備 #gaeja http://shin1o.blogspot.com/2011/09/google-app-engine-gaeja.html 詳細はこちらを参照〜。

具体的な効果は?というと、これによって、$0.03/dayくらいまで下がりました。 月に換算すると70円/月程度。これなら全然問題無し。 ここで気を付けなければならないのは「な〜んだ、月に70円か」にはならないいうこと! 有料プランの場合$9/monthかかります。 今なら$9と言っても700円かからないくらいだけど、70円からすると大きな数字。

自分が取るであろう選択肢は有料プランにしないこと。 無料の範囲を超えてしまった場合、アプリが止まってしまうが、困る人がいないので気にしない。 1日70円分だけアプリが止まりますって解釈。

金額に関しては上記のとおりなんだけど、これによるアプリの性能はどうなるか?というのがまだよくわからない。 Twitter botなんて放置しっぱなしだし、性能なんて気にしてないんだけど、サービスとして利用している人はどうなるだろう? レスポンスが遅くなって、不便になったりするんではないだろうか?という懸念がある。

この施策は簡単に出来るものの、インスタンスに関わる設定なので、そのことも気にしておいた方がよさそうだ。

Google App Engine使うのやめる?

簡単に課金を抑える施策をして一息ついたところで、今後どうするか?ということを考えてみる。 うちのbotは放置だけど、世間一般的に…ってことで。

この新料金体系によって、運営無理っ!って辞めてる人もいるんだけど、その答えを出すには早いと思ってる。 大きな理由は2つ。

  • App Engineの最適化してないでしょ?
  • App Engineと他のクラウド比べてどっちが安い?

App Engineの最適化というのは、各種サービスをうまく活用しているか?ということ。 うちのTwitter botは最適化してない。最適化したら間違いなく無料の範囲内に収まる。 Twitter botの最適化としてすぐに挙げられるのはこれら。

  • Task QueueをBackendsで動くようにする
  • 1インスタンスで複数スレッドを捌く
  • Memcacheを使う

たぶん、これだけでだいぶ変わる。 Botを作った当初はMemcacheなくても動くからいいやって放置したままだし、他の2つはあとからリリースされた機能なので対応してない。 これらの対応をするだけで無料で収まるのであれば、また、安くなるのであれば、これらを実装しなかったエンジニアの怠惰だと思う。

後者のAppEngineと他のクラウドの価格についてだが、これは人それぞれだろう。 AppEngineが安くなることもあれば、高くなることもあると思ってる。 そこはアプリの特徴次第だと思っているけど、その比較はインスタンス数を等しくしてから比べるべきだと思う。 少なくとも、Max Idle Instancesの設定がAutomaticなんて無しだろー!ということ。

で、App Engineどうするよ?

個人的には、App Engineはありだと思いつつ、無しだと思うところもある。 アプリの特徴次第としか言えないが、結果的に他のクラウドより高くなるのであれば辞めればいいと思う。 辞めればいいというと、少し乱暴だが、そのアプリの適所がApp Engineではなかったということか、App Engine用に最適化していないということだと思う。 移植性やベンダーロックを考えれば、App Engineに最適化すべきとも言えないわけだし、そこは適するクラウドを選択すべきだと思う。 App Engineと相性のいいアプリだったらまた利用すればいいんじゃないかな?

新料金体系になって、どういうアプリがApp Engineに適しているかというと、とても小さなアプリか、スケールアウトを自動にして欲しいアプリだと思う。 とても小さなアプリであれば無料の範囲内で収まるし、イニシャルコストがなくて済む。ただし、App Engineに最適化していないと無料の範囲を超えやすいため、各種サービスをうまく連携させる必要がある。そういう意味では従来よりも敷居が上がっている。 Memcacheを間に挟むだけだとしても、どのデータをどのようにキャッシュさせておくか?ということを考慮するのは容易ではないと思うから。

もうひとつのスケールアウトして欲しいアプリは、キャンペーンサイト向けなのかも? 常にトラフィックが多いサイトであれば、他のクラウドの方が安い気もするが…この辺はよくわからない。 それよりも、キャンペーンサイトみたいに一時的にトラフィックが膨大になる可能性がある場合、 「$9/month払うし、膨大なトラフィックにはその分払うからなんとかしてよ」 ってことに対応できる。膨大なトラフィックに関しては前例もあるし、安心して任せることが出来る。

では、上記2つに当てはまらないアプリについてはどうだろう? これについては全体的に模索している時期なのではないだろうか? 今までは最適化してないアプリでも無料だったけど、新料金体系では最適化してあるアプリがどれくらいの価格になるかまだ落ち着いてなくて、感覚が芽生えていない気がする。

他のクラウド

個人的に気になっているクラウドは次の2つ。
  • Cloud Foundry
  • さくらのクラウド

どちらもまだ料金体系が明確になっていなくて、リリースされていないので比較できないが、楽しそうではある。 App Engineを含めたこの中で、自分の要望にあっているクラウドはどれだろう?と考えた場合、 App Engine >= Cloud Foundary > さくらのクラウド のような感じかな?と思ってる。 理由は簡単で、

  • サービスを作ることに集中できる
  • 知らない分野はプロに任せる

ということ。 IaaSの場合、色々と出来るけど、ネットワークやサーバーの扱いについては知っているけど、専門家じゃない。 それに比べ、PaaSの場合は実装だけに集中できる。

理屈では書いたとおりだと思っているけど、Cloud FoundryのMongoDBにも興味あるし、さくらのクラウドにも興味あります!(笑) 嗜好や感情を入れたらキリないよね。