1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWS月$111のインフラをさくらVPS+Cloudflareに移行したら爆速・激安になった話

1
Posted at

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のものに変更するだけです。

  1. Cloudflareにドメインを追加
  2. お名前.comのネームサーバーをCloudflare指定のものに変更
  3. 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

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?