クラウドサービスの比較 | CyberX:エンジニアブログ

クラウドサービスの比較

こんにちは!

以前CyberXで一緒に仕事をさせていただきましたイクバルです。
現在は、CyberXを離れ、自身の会社を切り盛りしています。

自身の会社ではあるサービスを運営していますが、
そのサービスを立ち上げるときにスタートアップコストとランニングコストを控える目的として
クラウドサービスの利用を考えていました。
そのときにAmazonEC2 (EC2)と Google App Engine(GAE)という2つのクラウドサービスをみて比較していましたが、
そのときに分かったことをまとめていきたいと思います。
WEBアプリ(ブラウザでアクセスして何かのサービスを提供する、例: SNSとか)を作って公開する開発者側から考えて比較していきます。
1年前にあるプロジェクトを開始するときに行っていました比較ですが、現在は変わったところがあるかもしれないので、ご了承くださいませ。


利用可能なOSに関して


EC2ではいろんなOSを選ぶことができます。イメージとしてはEC2の共通のハード上で仮想マシン(VM)を使うという。
利用可能なOSとしてはWindowsの他、Red Hat LinuxやUbuntuなどです。
オープンソースのOSに関してはAmazon自身が提供しているではなく、サードパーティが提供するのは一般的にです。(例えば、Ubuntuに関して)

一方、GAEはOSを選ぶことができません。OSやハード層はすべてブラックボックスという存在になっています。

価格

EC2では「従量型」で課金されます。何を課金されるかといと基本的にサーバのアップする時間と外部から、外部へのデータ通信量です。
インスタンスと呼ばれる仮想サーバの「強さ」によって課金のレートが変わってきます。もちろんより大きい処理能力のインスタンスのほうが
高くなります。

GAEの場合、EC2と違ってCPUのアップ時間ではなく、ページビューの数になります。極端の話、自分のWEBアプリがまったく使用されてない状況ですと
(ページビュー0)コストかかりません。EC2と違ってリスクが低いです。
その他GAEに対して大きいなメリットは「無料枠」という設定が存在します。月に500万のページビュー以下、または500MB以下のデータの容量限り、無料になります。



開発用のツール/デプロイメント

EC2の場合、root権限持ちでデータセンターに通常のサーバを運営しているようなことになりますので、ほとんどなんでもできてしまいます。
WEBサーバ一2台、DBサーバ1台、WEBサーバの前にロードバランサーという一般的な小さい構成でもできます。
アプリを開発するためのツールが物理サーバを運営することとまったく同じ形になりますので、制限がありません。

GAEでアプリを開発にはPythonまたはJavaを使用しないといけません。またGAEでは決められたSDKを使用してアプリを開発します。
Python用のSDKとJava用のSDKが用意されています。

Pythonによる簡単なアプリ作成のHOWTOがこちらです。
http://www.youtube.com/watch?v=bfgO-LXGpTM


サーバーメンテ/サポート

EC2は通常のサーバーの運営と一緒ということで、サーバーのシステムメンテも行わないといけません。
運営者側としては、サーバーの管理、ロードバランサーやデータのキャッシュなどを管理する必要があります。

GAEの場合、サーバー側のシステム管理は透明化されているので、運営者側はアプリのロジックに関わるところだけを考えればよいです。

サポートに関しては24/7体制の電話によるサポートなどのサービスはありません。
GAEやEC2の場合、公開されている掲示板やヘルプページでユーザ同士、情報交換しながら関係者混じって
サポートに対応するという感じがいままでのやり方です。


パフォーマンス/スケーラビリティ

自分のアプリをより多くのアクセスを捌くためにEC2でもGAEでもスケーラビリティを拡大するオプションがあります。

GAEの場合、Googleに用意されているツールなどを使ってアプリを監視するなど、拡大の方法なども推薦されてる方法がありますので、それに
従って行えばほとんどの場合問題がありません。

EC2は比較的に自由な形(または手間かかる形?)でスケーラビリティを実現します。
自分で自分が設置したツールなどで監視を行って、必要に応じてインスタンスをもっと投入するかどうか自分で判断します。


プラットフォームロック

決められたSDKの利用、システムの監視もGoogleのツールを使う前提ですので、GAEのほうはプラットフォームにロックされます。
将来に別のクラウドサービスを利用することになりましたら移行コストが高くなるわけです。

その一方自由なEC2と比べると移行することになってもそんなコストが高くありません。


最後に

では、「いろいろの比較をしていましたが、結局どのサービスが一番いいの?」という質問になってくるでしょう。
それはこれから開発して運営していくサービスによって違ってきます。

一つのいいルールとしてはより高レベルなクラウドサービスは開発側の手間が省くことができますが、
もっと専用的なサービス向けになってくるでしょう。
例えば、GAEの場合、OSやVMの作成が必要がないので、ビジネスアップリケーションだけを集中して開発できるが、
その反面WEBアップリケーションのみ利用できる(ポート80に対するサービスのみ)ことになります。

従来のデータセンターにあるサーバーでサービスを提供することでしたら、もっと自由なEC2のほうがいいかもしれません。


以上です。