この記事は、ひとり開発 Advent Calendar 2019の22日目の記事になります。
自分でサービスを開発し運用しているのですが、そのインフラ構成や実際にかかるお金などをまとめていきたいと思います。
サービスとそのインフラ構成について
自分はTwitterでお気に入りに登録した画像を保存するTwipicaというサービスを運用しています。
インフラはAWSのサービスを活用しており使用しているサービスは以下です。
サービス名 | 説明 |
---|---|
EC2 | ECSで使用するためのリソースとして使用 |
ELB | コンテナにつなぐために使用 |
RDS | サービスのデータを保存するために使用 |
ECS | コンテナオーケストレーションのために使用 |
ECR | サービスを動かすコンテナをアップロードするために使用 |
S3 | サービスの一部データを保存するために使用 |
Route53 | ドメイン周りのために使用 |
CloudWath | ログ保存のために使用 |
細かい実装等については大体同人誌に書いてあるとおりです。
サービスの特性としてはあまり多くの人に使ってもらえているサービスというわけではなく、自分のためのサービスでトラフィックはほとんどありません(とほほ。。。
それぞれのリソースに一月でかかるお金
ではそれぞれリソースに一月でかかるお金についてみていきます。AWSの各リソースのコストをざっくりとまとめます。
サービス名 | 使用しているリソース | 価格 |
---|---|---|
EC2 | c3.large 2台 + EBS等 | $50.72 |
ELB | ALB + 通信料 | $17.63 |
RDS | db.t2.micro + EBS等 | $21.48 |
ECR | 使用容量 | $1.47 |
S3 | 使用容量 + 通信料 | $3.32 |
Route53 | 通信料 | $3.50 |
合計 | $98.12 |
大体$100弱です。月の飲み会を何回か我慢したりガチャをするのを諦めたりすれば捻出できそうな額ですね。
節約のポイント
節約のポイントをざっくりと書いていきます。
EC2インスタンスはSpotInstanceを使用すると安く抑えられます。使用しているc3.largeのオンデマンド価格は現在(2019/12/22)$0.128なのですが、$0.0302と1/4ほどの価格で使用することができます。特に強い理由がない限りはSpotInstanceを使用しましょう。自分のサービスだとc3.largeは結構リソースに余裕がある状態を保つことができます。もう少し弱いインスタンスでも良いかもしれません。
Redisなどキーバリューストアを使用するとき、もしSideKiqなどのジョブのキュー程度しか使わず、ジョブがそれほど重要なものでないならば、自分でECSのTaskDefinitionにRedisのコンテナを立ち上げるようにしたほうがElastiCacheを使うよりは安上がりです。
まとめ
自分がサービスを運用する際のAWSのリソースにかかるお金について簡単にまとめました。普通のRailsアプリケーションで使用する人が自分ぐらいのサービスの場合大体月1万円で運用できます。この価格を高いと感じるかは人によって違うと思いますが、自分でAWSの学習をしたいと思ったりコンテナの運用をしてみたいと思うのであれば払う価値はあるんじゃないかなと思ったりします。
あともし万が一サービスがヒットした場合、マネタイズによってはインスタンス代等賄えるかもしれません。そうなればほとんど無料で学習し続けられるので良いですね。自分のサービスはそこまで行く気配はほとんどありませんが、続けていくことで知見を貯め、活かしていければなと思っております。