世の中クラウドが結構数で回ってきてるけど、クラウドの最大手AWSはどうか。
EC2以外もたくさんあるけど、EC2だけに絞ってみてみる。
前回の40夜でスモールインスタンスについて金額だけ比較してみた。
スケールアウト(複数のサーバーを用意してサービス全体の性能を上げる)の場合並列に並べるだけなので基本この数字を足し算していけばいい。
ではスケールアップ(マシン自体の性能を上げる)はどうだろうか。
スケールアップの最大の利点はコードを書き換えずに性能がアップする可能性があること。シングルスレッド性能がどうしても必要な場面等が存在するのでレスポンスの向上と合わせて納得しやすい。ただし、オートスケールのようにアクセスが少ないときにマシンの稼働台数を減らして、増えてきたら稼働台数が増えるといった融通は利かない。
実際はスケールアウトだけ、スケールアップだけを選択するのは意味がなくて、組み合わせることになる。シングルスレッド性能が低いマシンを並べてもかえって効率が悪いってデータが出てるんで、アプリごとのバランスを考えて選択する。選択できるところがクラウドの利点でもあるけど。
というわけでEC2のスペックを一覧にしてみる。
お金は一ヶ月750時間の77円計算で東京リージョンのLinuxの概算。転送量等は入っていません。間違っていても泣かないこと。
仮想CPUはスモールインスタンスを1とした場合の性能。1.0-1.2GHzのCoreアーキクラスの性能くらいらしい。
ファミリー | インスタンス | 仮想CPU | メモリ | オンデマンド月額 | 3年リザーブ月額 |
---|---|---|---|---|---|
マイクロ | マイクロ | --- | 613M | 1,560円 | 820円 |
スタンダード | スモール | 1 | 1.7G | 5,775円 | 3,386円 |
スタンダード | ラージ | 4 | 7.5G | 23,100円 | 13,540円 |
スタンダード | エクストララージ | 8 | 15G | 46,200円 | 27,079円 |
ハイメモリ | エクストララージ | 6.5 | 17.1G | 34,650円 | 20,085円 |
ハイメモリ | ダブルエクストララージ | 13 | 34.2G | 69,300円 | 40,169円 |
ハイメモリ | クアドラブルエクストララージ | 26 | 68.4G | 138,023円 | 79,760円 |
ハイCPU | ミディアム | 5 | 1.7G | 11,550円 | 6,770円 |
ハイCPU | エクストララージ | 20 | 7G | 46,200円 | 27,079円 |
見てわかるとおり、全体的にEC2はメモリがリッチ。事実上一番ローエンドのスモールですら1.7GB。そこからのスケールアップだと大抵ハイCPUファミリーのミディアムあたりが選択肢になるでしょうか。メモリはそのままですがCPU性能5倍、価格はぴったり2倍でとまります。大抵なんでもまかなえそうです。それ以上はスケールアウトのほうが大抵いい気がします。これだけCPUリソース割り振られても3年リザーブだと安い…。
ハイCPUのエクストララージはスモールの20倍というCPUが割り当てられますが、リザーブあたりだと価格的には意外とそんなに高くもない。メモリも7GBに増えていて、業務用でコレでまかなえないってのはあまり考えにくい。スタンダードのエクストララージと同じ価格だけど、7.5GBで足りない場合のみスタンダードファミリーで。JSFとかEJBとかでサーバーサイドでがっつりセッションやEJB保持しても1000人くらい余裕でさばけますね。
ハイメモリファミリーは通常のサービス用途だと使わないでしょうねぇ。というか、価格がとんでもなく高いし。CPUの1コアあたりの性能が実は一番高いため、シングルスレッド性能重視はこいつになります。メモリ容量も馬鹿でかいため、ハイメモリどころかハイエンドのファミリーといっていいようです。
マイクロはCPUが保障されていなくて、短期的なブーストによって行われる。そのためコレを活用するのはそのままのコードでは難しく、専用に最適化をしないといけない。特定のクラウド向けにチューニングするというのはコスト的に非現実的となることも多いので運用にはあまりオススメできない(インスタンス数がデフォで複数あってオートスケール利用するのもほぼ必須)。ブースト中のCPU性能は明らかにスモールより高いこともあってアクセス数がかたまらないところならまぁまぁありか。
個人的には0.5仮想CPUでメモリが800MB程度なインスタンスがほすいところ。入り口として。
このようにAmazon Web Servicesは小さく始めていってあとでアプリの特性に合わせてインスタンスを調整できます。メモリがほしいのか、CPUがほしいのか。それらはアプリが小さいうちはわからない可能性は高いし、データの偏り方にも影響している可能性もある。そしてスケールアウトももちろん可能。
価格的にはリザーブかどうかってのはかなり重要で、オンデマンドインスタンスとの差はかなりある。1年リザーブでも結構差はある。オートスケールで増減するインスタンスをオンデマンドにして常に立ち上がっている分だけリザーブというのがコスト的にもよいと思われる。
ただし、スケールアップの場合インスタンスそのものが違うんで、インスタンスを指定するリザーブとの相性は悪い。
コストを最大限に重視したいならアメリカの東海岸のリージョンを選ぶとよいです。ドロップダウンリストで選ぶだけで簡単に使えて大幅に価格も下がります。基本的には東京リージョンが世界で一番高い。
負荷分散のために静的ファイルはS3+CloudFrontを利用するのがいいと思う。EC2には本当に動的な計算にのみ利用で。画像やJS、css等静的なファイルはこちらにおくべきと考えます。特に東京リージョン以外だとCloudFrontの影響は絶大です。
また、東京リージョンであってもS3よりはCloudFrontのほうが圧倒的に早いため、サービス目的ならば積極的に活用したほうがいいでしょう。