TL;DR
- AWS(ALB + ECS + RDS + ECR)で月$111 → さくらVPS + Cloudflareで月約¥4,400
- コスト約85%削減
- 副産物としてレスポンス速度も向上(DOMContentLoaded: 155ms)
- Cloudflare Tunnelのおかげで東南アジア圏のユーザーへの速度も改善
背景
個人開発のポーカーサービス「nlh.poker」を運営しています。
フルスタックのソロ開発で、インフラにAWSをフル活用していたのですが、月$111というランニングコストが個人サービスにしては重くなってきました。
サービスの成長を待ちながら長期運用するために、コストを抑えられる構成への移行を決断しました。
Before: AWS構成
| サービス | 用途 |
|---|---|
| ALB | ロードバランサー |
| ECS (Fargate) | アプリケーション実行 |
| RDS | データベース |
| ECR | コンテナレジストリ |
| Route53 | DNS |
月額: 約$111
個人サービスのトラフィック規模では、ALBだけで数千円持っていかれる料金体系がとにかくつらい。
AWSはエンタープライズ向けの冗長性・SLAが料金に乗ってくるので、小規模サービスには完全にオーバースペックでした。
After: さくらVPS + Cloudflare構成
Cloudflare(HTTPS / CDN / DNS)
↓
Cloudflare Tunnel
↓
さくらVPS Ubuntu(Docker Compose)
↓
Nginx → Hono/ Next.js
| サービス | 用途 | 月額 |
|---|---|---|
| さくらVPS 3core/2GB | アプリ実行 | ¥1,738 |
| さくらDBサーバー | データベース | ¥2,750 |
| Cloudflare | CDN / DNS / Tunnel | 無料 |
| AWS Cognito | 認証(据え置き) | ほぼ無料 |
| お名前.com | ドメイン | 割愛 |
月額: ¥4,488
なぜCloudflare Tunnelか
さくらVPSはグローバルIPを持っていますが、Cloudflare Tunnelを使うことで:
- VPS側でインバウンドポートを一切開けなくていい
- DDoS対策・WAFがCloudflare側で完結
- TLS証明書の管理不要
- 世界中のエッジサーバーからコンテンツ配信
設定も非常にシンプルで、docker-compose.ymlに追加するだけです。
cloudflared:
image: cloudflare/cloudflared:latest
command: tunnel run
environment:
TUNNEL_TOKEN: ${CLOUDFLARE_TUNNEL_TOKEN}
depends_on:
nginx:
condition: service_started
restart: unless-stopped
あとは.envにCloudflareダッシュボードで発行したトンネルトークンを設定するだけで完了です。
速度比較
移行後に計測した結果:
- DOMContentLoaded: 155ms
- Load: 247ms
ALBのオーバーヘッドがなくなったことに加え、Cloudflareのエッジキャッシュが効いている効果も大きいです。
東南アジア圏での改善
nlh.pokerはインドやフィリピンにもユーザーがいますが、AWS東京リージョン直接接続だとレイテンシが発生していました。
Cloudflareはシンガポール・マニラ・ムンバイなどにもエッジサーバーを持っているため、東南アジア圏のユーザーへの速度も大幅に改善されました。これは移行の主目的ではなかったのですが、嬉しい副産物でした。
DNS移行(Route53 → Cloudflare)
お名前.comのネームサーバーをCloudflareのものに変更するだけです。
- Cloudflareにドメインを追加
- お名前.comのネームサーバーをCloudflare指定のものに変更
- Route53のレコードをCloudflareに移植
認証(AWS Cognito)は据え置き
パスワードのハッシュ移行が現実的でないため、AWS CognitoはそのままAWS上に残しています。無料枠(MAU 5万人まで)で収まっているのでコストへの影響はほぼゼロです。
VPS側でCognitoのJWKSを検証する実装は変わらないため、アプリケーションコードへの影響も最小限でした。
まとめ
| 項目 | Before | After |
|---|---|---|
| 月額コスト | $111 | ¥4,488 |
| レスポンス速度 | 普通 | 爆速 |
| 東南アジア速度 | 遅い | 改善 |
| 設定の複雑さ | 高い | シンプル |
個人サービスや小規模サービスにAWSのフルスタックは本当にオーバースペックだと痛感しました。
Cloudflare Tunnelは「ポートを開けずにグローバル公開できる」という点だけでも採用価値がありますが、CDN・DDoS対策・TLS管理まで無料でついてくるのは反則級です。
自分の用途に合ったインフラ選択の重要性を強く実感しました。
nlh.poker: https://nlh.poker