この記事は playpark Blog からの転載です。
この記事で分かること
- Rustフルスタックアプリを無料枠で本番運用するための技術選定の考え方
- 「1サービスにまとめる」vs「責務分割」の比較と判断基準
- 各サービスの無料枠が効く条件・効かない条件
背景: こういう課題があった
Rustで作った個人アプリを本番公開したいが、サーバー費を月5,000円かけるのは勉強プロジェクトには重い。一方でFreeプランがある PaaS はスリープ方式だったり、クレジット方式で月末に止まったりする。「本当に無料で、かつユーザーを待たせない構成」を探す必要がありました。
Rustの場合、さらに厄介な点があります。
- バイナリが大きい(数十MB)ため、静的配信先を選ぶ必要がある
- コンパイル時間が長く、Edge系のビルド制限に引っかかりやすい
- Postgres/Redis などのステート管理も別途必要
つまり「1つの無料サービスに全部乗せる」が成立しにくい。
選択肢の検討
候補として検討したのは以下の4パターンです。
| アプローチ | メリット | デメリット |
|---|---|---|
| Render.com 1台構成 | シンプル、DB内蔵 | 無料プランは15秒スリープ、UX悪い |
| Railway | モダンUI、Docker対応 | 無料枠が月$5クレジット制、使い切ると停止 |
| AWS App Runner + RDS | スケールしやすい | 無料枠なし、最小構成で月$15〜 |
| 責務分割(4サービス) | 各無料枠が厚い、常時稼働可能 | 接続設定が増える |
なぜ責務分割を選んだか
ポイントは「各サービスが得意領域で無料枠を設計している」という点です。
- Cloudflare Pages: 帯域無制限(静的配信の勝ち筋)
- Fly.io: 常時稼働VM(スリープしない)
- Neon: サーバーレスPostgres(使わない時間は課金されない)
- Upstash: サーバーレスRedis(コマンド数課金)
1サービスにまとめると、必ずどこかで無料枠を超えます。例えばRender無料枠はDB付きで一見お得ですが、スリープ仕様のため初回応答が15秒遅れ、ユーザー体験を損なう。Fly Postgresを使うと今度はFly側の無料枠を食い潰す。
「責務を分けて、それぞれ得意領域のサービスに預ける」 のが、トータルで見ると最もUXと費用のバランスが良い、という判断でした。
構成図
実装例: Fly.io にシークレットを渡す
fly launch --name my-app --region nrt --no-deploy
fly secrets set \
DATABASE_URL="postgresql://user:pass@ep-xxx.neon.tech/neondb?sslmode=require" \
REDIS_URL="redis://default:xxx@xxx.upstash.io:6379" \
ALLOWED_ORIGINS="https://my-app.pages.dev" \
ROCKET_SECRET_KEY="$(openssl rand -base64 32)"
fly deploy
Postgresの接続文字列に sslmode=require を付ける点がポイント。Neonは SSL 必須のため、これがないと接続時に弾かれます。
どういう場面で使うべきか
この構成が効くのは、以下の条件が当てはまるときです。
- 個人・小規模チームのプロジェクト
- トラフィックが予測しづらい初期フェーズ
- 常時稼働が必要だがスリープ仕様は受け入れられない
一方、以下のケースには不向きです。
- データが数GBを超える(Neon 0.5GB制限)
- WebSocketなど常時接続が多い(Fly.io 256MB RAM)
- 月数百万PVレベル(Upstashコマンド数 / Cloudflareビルド数)
「まだ誰も使うか分からないプロダクト」を、費用0から本番公開するための構成と考えるのが正確です。スケールする時は有料プランに引き上げる前提で設計しておけば、初期投資ゼロで動かせるメリットが最大化されます。
さらに深掘りしたい方へ
この記事では4サービス構成の選定理由を解説しました。
【Rust】無料枠だけでフルスタック本番デプロイ - 月0〜5ドルの実践構成 ではさらに:
- Cloudflare Pages / Fly.io / Neon / Upstash それぞれの詳細な無料枠とビルド手順
-
sslmode=require忘れ、Redis URL 形式ミスなど実際のハマりポイント - 無料枠内に収めるためのコスト管理Tips(TTL設計、サーバーレススリープ活用)
なお、この構成で動いている「カゾエルくん」はyaoyorozチームの「非生産的の極み」プロジェクトで、実際に本番稼働中です。playpark LLCはチームの一員としてインフラ担当で参加しています。
playpark について
playpark LLC - 業務自動化・AI活用・Web開発