2025/10/12 とにかく安く上げたいサービス開発 on AWS
Rails を AWS にデプロイする
※ Rails = App + DB
Rails アプリを AWS に載せようとすると ALB + ECS on Fargate + RDS になる
これが高い!!!
ALB \3,500/mo
Fargate \2,000/mo
RDS \3,000/mo
\8,500/mo???
持続可能じゃなさすぎる
それぞれどうにか代替構成が作れないか
要素を分解
LB
App
DB
LB
ALB
HTTP レイヤでの分散・終端・認証を担うコンポーネント
ECS on Fargate ではタスク群を外部公開するときの入口としての役割が大きい
持っている機能
独自ドメイン
HTTPS 終端
ロードバランシング
ヘルスチェック・フェイルオーバ
CloudFront
従量課金なので安い
🙆♀️ 独自ドメイン
🙆♀️ HTTPS 終端
🙅♀️ヘルスチェック・フェイルオーバ
🙅♀️ロードバランシング
ロードバランシングをやるには
ECS CloudMap
ECS Service Connect
API Gateway
API Gateway
🙆♀️ 独自ドメイン
🙆♀️ HTTPS 終端
🙅♀️ヘルスチェック・フェイルオーバ
どうだっけ、自信が無い
🙆♀️ロードバランシング
従量課金だけどそこそこ高い
ある程度を越えると ALB の方が安くなる
CloudMap
ECS の機能
Route53 と組み合わせて、ECS Task が生えたら DNS に A record を増やしてくれる
DNS でラウンドロビンすることができる
ECS Service Connect
onk.icon 使ったことなーい
ずっとこの辺の発表をしてる
App
ECS on Fargate
を Fargate Spot で使う
ECS on EC2
を EC2 Spot Instance で使う
ECS on EC2 Managed Instance
先週出た新作!!!
Lambda
Lightsail?
Beanstalk?
App Runner
onk.icon 本来一番使うべきはコレっぽいんだよなァ……
EC2
Fargate Spot
驚愕の7割引
平日はよく落ちる
DB
Aurora
サイズとして medium が最小
RDS だと micro まで下げられる
DynamoDB
無料枠がある
完全従量課金
ActiveRecord のように扱える aws 公式 gem
DSQL
PostgresQL 互換のマルチリージョンマルチマスタで動く分散DB
spanner みたいなヤツ、と雑に思っておけばヨサソウ
なぜか安い
無料枠があり、完全従量課金
Sequence 無い
SERIAL 型は使えない
外部キー無い
TRUNCATE 無い
3,000行ずつ制限
The 3,000-row limit applies to all DML statements (INSERT, UPDATE, DELETE)
SQLite on EFS
Task 1 つに限定できれば
SQLite on S3
Litestream で S3 に replicate して、Task 起動時にファイルを取ってきて起動する、ができる?
セッションストア
Cookie Session
最安、デフォルト
RDB, EFS
expire できない (TTL が無い)
DynamoDB
aws-sdk-rails の機能として昔からあるのに使ってる人が少なそう
onk.icon 3 star は草
Job
Sidekiq on ECS を更に安くしたい
DB Backend にするとコンポーネントが減る
redis を追加しなくて良い可能性
RDBMS は最初からアル
:soon: solid queue
SQS
shoryuken
ECS は立てっぱになっていると思う
SQS + Lambda
SQS に queue が追加されたイベントで JobRunner を動かせば良い