やりたいこと

アプリのバックエンドとしてAPIを提供するサーバーを構築したい。

ウェブアプリケーションへの拡張の可能性も高いと思うので、Scala & Play Frameworkで構築しようと思う。
データベースにApache等HTTPサーバー、Javaコンテナにローテーションバックアップ、動作監視等のスクリプトあたりが必要?
VPSに環境構築するのが安く済みそうではあるが、スタートアップなのでどのくらいの負荷がかかるかは分からない。
理想的には少しずつユーザーが増えて増えてスケールアウトしていく、、、、というイメージなので、VPSでは環境の載せ替えや、サーバーウェアのチューニングなどの業務にかなり手間を割かれそうな予感がする。
ということで少なくとも最初はPaaSでの運用をしたほうが地雷が少なさそう。
候補としてはAWSとGoogleCloudPlatform(GCP)が使いたいなーーということで比較してみた。

 

それぞれ必要な構成

AWS: ElasticBeanstalk(EB) & Amazon Relational Database Service (RDS) & S3
GCP: AppEngine(GAE) & Google Cloud SQL & Cloud Storage

AWSではEBを使ってJavaのアプリケーションをホストして、staticなファイルはS3においておく感じ。
GCPではGAEにホスト、StaticファイルはCloudStorage。
データベースはどっちでも機能的に不足はなさそう。

他の様々な”便利”なサービスを利用しないんであれば、どちらでもできることはほとんどかわらなさそう。

 

PaaSの比較(AWS EB vs GCP GAE)

EBはEC2の上で動くサービスなのでVM上にマネジメントされた環境を構築して、スケールするときはVMを新しく起動する形。
EBはEC2を使ったマネジメントシステムということなので、EC2でできることなら柔軟に色々できそう。
GAEではVMはつかわずアプリケーションコンテナのプロセスを起動する形なので、スケールアウトの時間がミリ秒レベルの速さになるよう。
ただし、VMがないので、SSH接続もファイルの書き込みもできないなどの制限がある。(ファイルはCloudStorageに保存すれば良さそうだけど)

料金は
GAE:0ドル (1インスタンス) : 30ドル(2インスタンス) : 322ドル(10インスタンス)
AWS:20ドル弱 (1インスタンス) : 38ドル(2インスタンス) : 190ドル(10インスタンス)

GAEのほうは無料枠がついてるのでインスタンス一つで設定すると無料になる!
その場合GAE送信転送量のみに課金される

インスタンスが少ない場合はGAEのほうが安いがインスタンスが多くなるとAWSのほうが安くなるようだ
AWSでインスタンスを10にするような場合はインスタンスの種類を買えるほうが良いかもしれないが、、、、

 

DBの比較(AWS RDS vs GCP Cloud SQL)

レスポンスはそんなに大きな差はなさそう。使い勝手に差も対してないだろうと思う。
つかえるRDBMSもそれぞれ色々使えるので問題はなさそう
料金は最小構成と容量10GBで見積もってみたところ
RDS: 20ドル強
CloudSQL10ドル弱

こちらもお値段ではGCPの方に軍配。

 

Storageの比較(AWS S3 vs GCP Cloud Storage)

https://thinkit.co.jp/story/2015/03/30/5801?page=0%2C1
速度計測をしたレビューがありました。日本にデータセンターが無いにも関わらずCloudStorageがダントツに早いようです。
料金は1TB確保して、割りと大きなファルを配信する設定にしました。
S3:34ドル程度
CloudStorage: 27ドル程度

データ転送量に対する課金の比較

AWSではAWS全体からの転送量
GCPではGAEの転送量とCloudStorageの転送量にたいしてそれぞれレートで料金がかかるようです。
GAEの転送量に関してはGAEの料金に含めてしまったのでここでは

どちらも受信に関しては料金が発生しない。

それぞれS3とCloudStorageに関しては1TB/月で
GAEの転送量に関しては重いデータはStorageに逃がすと考え50GB/月

AWS:150ドル(S3-1TB)
GCP: 61ドル(GCS-1TB) + 5.9ドル(GAE-50GB)

 

無料枠について

AWSではこのプランの場合、新規契約から12ヶ月は月44.8ドル割引が適用されるらしい。
GAEでは1日毎にそれぞれ無料枠があるので、アクセスが少ない場合などは0円運用なども視野に入ってくる。

 

まとめと特筆事項

この構成で、ほとんど両者に機能や性能の差はなさそう。
特にそれぞれのPaaSにロックインされてしまうのが困るので特殊な機能はあまり使いたくない気持ちもある。
上記の設定、それほど負荷がかからないがstaticなデータ転送が多い想定での構成で料金はそれぞれ以下のようになった。

AWS:初年度の月額182.06ドル 次年度から 226.86
GCP: 月額103.31ドル

あとは料金の比較になるが、スタートアップや小さいサービスであればGoogleに完全に軍配があがる。

リスクとしては、AWSが規模で大きくリードしているため、GCPがサービスを終了させる可能性などもすこし頭をよぎる。
またGCPに関して今までは国内にデータセンターがなかったため、米国のデーターセンターへのアクセスとなり、ターンアラウンドタイムが少し遅いというデメリットがあったが、2016年中には日本にGoogle Cloud Platformのデータセンターが作られるようだ。国内でイマイチ盛り上がりにかけるところもあるので、これも期待したい。米国内でもデーターセンターの追加もあるようなのでGCP全体で勢いがつけばいいなというところ。

とりあえず、なるべくサービスにロックインされないような仕様のシステムを構成し、GCPを選択しようかなと思っています。
実際の運用データがでたらそれをもとにまた比較をしてもいいかも。

 



この記事のトラックバック用URL - http://mashi.exciton.jp/archives/241/trackback