DigitalOceanとAWSを利用し、スタートアップ初期に月額$100以下のインフラコストでサービスを提供する方法
私が勤めるActie, IncではTraBerryというサービスを提供しています(βです)。 弊社ではこのインフラにDigitalOceanと無料枠のAWSを利用しています。 DigitalOceanを利用することで大幅なコスト削減を実現しています。
スタートアップ時にはアクセスも少なく最低限のインフラ構成で良いです。 最低限の冗長化と大きくなっていくときにダウンタイムなしで、スケールアップとスケールアウトできることが必要です。
そのインフラのダイアグラムは、下記のようになります。
- Route53で入り口であるnginx(リバースプロキシ)を振り分ける
- nginxはアプリケーションサーバ群にアクセスを振り分ける
- アプリケーションは、RedisのキャッシュとMySQLのデータベースにアクセス
- イメージはcloudfrontを利用し取得(後でブログエントリ書きます)
伝統的なWebアプリケーションのインフラですね^^; RedisとMySQLのスケールアップは、やや手間です。hostnameをうまく使ってMigrationの必要がありますね。 ただDigitalOceanはAWSインスタンスと比べるとかなり早く起動する(1分以内)ので、幾分ストレスなくできます。
で、やっぱ駄目なとこをリストすると
Cons
- リージョンを挟んでデータベースのミラーリングが難しい
- したがって、リージョンを挟んだRedundancyを組めない
- データベース、キャッシュのスケールアウトはやっぱつらい
ま、安いのでしょうがないところでしょう。スケールアップしていって、これで持たないようならば、AWSに移行してもいい予算はあるはずです。
で内訳は、
- 512M instance x 5 ( nginx x 2 + app x 3) = $25/mo
- 2G instance x 3 ( MySQL x 2 + Redis x 1) = $60/mo x 20% backup = $72
- AWS(無料枠もれたもの)= 約$2ぐらい
AWSはアクセスが伸びると$20ぐらい行くかもしれないことは秘密。