⚡
Cloudflare前提のRailsは月$3.89でもこれだけ捌ける
構造を先に置く。Cloudflare をフロントに据えた、DB 接続のない Rails。インスタンスは shared-cpu-2x@512MB を 1 台、月額 $3.89 程度。ここで何が起きているかを測る。
計測条件
- ツール:
ab - 対象:
https://aileron.cc/の GET/ - リクエスト数: 1000
- 同時接続: 1 / 5 / 10 / 20(Keep-Alive も試行)
- Cloudflare 経由(オリジン直ではない)
- 失敗リクエスト: 0
結果(1000リクエスト平均)
| concurrency | req/s | mean (ms) | p90 (ms) | 備考 |
|---|---|---|---|---|
| 1 | 13.0 | 76.8 | 146 | 単発レイテンシの素顔 |
| 5 | 57.5 | 87.0 | 157 | 体感レスポンスは 70ms 前後 |
| 10 | 85.8 | 116.5 | 174 | スループットはまだ伸びる |
| 20 | 111.9 | 178.7 | 229 | p95 242ms、上限が見え始める |
| 10 (KA) | 93.3 | 107.2 | 165 | Cloudflare 側で Keep-Alive は実質無効 |
| 20 (KA) | 111.6 | 179.3 | 220 | 同上で KA=0 件 |
Document Length は 1153 bytes。TLS は Cloudflare 側の終端。Keep-Alive は 0 件なので、CDN の接続管理に委ねていると読める。
読み解き
処理の重さがオリジンに届く前に、Cloudflare が静的応答をキャッシュしている。Rails 自体は DB なし・薄いルーティングのみ。結果として、shared-cpu-2x@512MB でも 100 req/s 超を維持し、p90 も 200ms 前後で収まる。月 $3.89 のコストでこの粒度なら、簡易な API や Landing のフロントには十分な帯域があると見える。
余白
- オリジン直の URL でも同条件を 1 セット回すと、CDN の効果を分離できる。
- 時間帯・ロケーションを変えて再計測すれば、ばらつきの幅を示せる。
- 動的処理を足す場合は、まずレスポンスボディをキャッシュ可能に保ち、キャッシュヒット率のログを観察するとよいと思う。
Discussion