# Render と Railway の比較

どちらも Git push で常駐アプリを動かせる PaaS で商用利用可。差は無料枠の性質にある。Render は無料枠が継続するがスリープあり、Railway は $5 クレジットを使い切ると従量課金に移行する。

## 主要な差分

- 無料枠: Render は無料 Web サービス継続だが15分でスリープ＋月750インスタンス時間の上限。Railway は $5 の一度きりトライアルクレジット。
- 料金モデル: Render は固定インスタンス、Railway は CPU・RAM・転送量の実使用量課金。
- コールドスタート: Render 無料枠はスリープからの復帰待ちが発生。Railway は稼働中なら無し。
- Cron: Render は有料プラン、Railway は利用可。

## 解説と実務上の注意

### 「無料枠」の意味がまったく違う

「Railway 無料枠」「Render 無料」で調べている方が最初に知るべきなのは、**この2つの無料枠は別物**だという点です。

**Render の無料 Web サービスは継続的に無料**です。ただし制約が2つあります。**15分間アクセスがないとスリープ**し、次のリクエストでの復帰に**約1分**かかります。加えて、**ワークスペースあたり月750インスタンス時間という上限**があり、使い切ると無料 Web サービスは翌月開始まで停止されます。

750時間は1サービスを1か月動かすとほぼ使い切る量です（31日 = 744時間）。**無料枠で動かせるのは実質1サービスまで**で、2つ動かせば月半ばで両方止まります。この点は見落とされがちなので、複数サービスを無料で並べる計画があるなら最初に確認してください。なお静的サイトはこの枠とは別で、引き続き無料です。

**Railway の $5 はトライアルクレジット**であり、月々の無料枠ではありません。使い切ると従量課金に移行します。常駐アプリを24時間動かし続ければ、$5 は長くはもちません。**「Railway には無料枠がある」という理解で本番運用を始めると、想定していなかった課金が始まります。**

### スリープを許容できるかが最初の分岐

Render の無料枠を選べるかどうかは、**そのアプリがスリープからの復帰待ちを許容できるか**で決まります。

- **許容できる** — 個人の管理ツール、社内向けの軽い画面、ポートフォリオ、たまに叩く API → Render 無料枠で十分
- **許容できない** — ユーザーが待つ画面、Webhook の受け口、決済コールバック、外形監視の対象 → 無料枠は使えない

特に **Webhook の受信を無料枠に置くのは危険**です。Stripe や GitHub からの通知はタイムアウトが短く、スリープからの復帰が間に合わないと配信失敗として扱われます。再送してくれる送信元ばかりではありません。

なお「定期的に自分で叩いてスリープを防ぐ」という回避策が広く紹介されていますが、**これは無料枠を意図に反して使う行為**であり、規約上の扱いが変わる可能性があります。常時稼働が必要なら、素直に有料インスタンスを使うべきです。

### 課金モデルの違いは「予測できるか」の違い

**Render は固定インスタンス課金**です。このスペックのインスタンスを1つ、いくら。使用量が増えても、そのインスタンスの上限までは金額が変わりません。**請求額が事前に読めます。**

**Railway は CPU・RAM・転送量の実使用量課金**です。使った分だけなので、負荷が低いうちは安く済みます。反面、**トラフィックやバックグラウンド処理が増えると請求も連動して増えます。**

どちらが良いかは運用スタイル次第です。予算を固定したい、経理上の見通しを立てたいなら Render。負荷が読めず、小さいうちは安く抑えたいなら Railway。ただし Railway を選ぶなら、**使用量アラートの設定は運用開始時に必須**です。

### Cron の扱い

定期実行が要件にあるなら確認してください。**Render の Cron Jobs は有料プランの機能**です（`cron_available: yes` — 条件: 有料プラン）。無料枠では使えません。**Railway は Cron に対応**しています（`cron_available: yes`）。

「無料で定期バッチを回したい」という要件だと、Render の無料枠では成立しません。この場合は Cloudflare Workers の Cron Triggers（無料プランで利用可）など、別の選択肢を検討したほうが早いです。

### 商用利用はどちらも問題なし

両者とも **全プランで商用利用が可能**です（`commercial_use_allowed: yes`）。Vercel の Hobby のような「無料枠は非商用限定」という規約上の制限はありません。無料枠で収益化しても規約違反にはなりません。

## Rights

| key | Render | Railway |
|---|---|---|
| commercial_use_allowed | yes | yes |

## Constraints

| key | Render | Railway |
|---|---|---|
| api_available | yes | yes |
| cron_available | yes | yes |
| custom_domain_available | yes | yes |
| plan_limit_note | conditional | — |
| webhook_available | yes | yes |

## 結論：どちらを選ぶべきか

**Render を選ぶべきケース** — スリープを許容できる用途で無料のまま運用したい、請求額を固定して予測可能にしたい、まずコストゼロで置いておきたい。

**Railway を選ぶべきケース** — スリープが許容できない、負荷が小さいうちは安く抑えたい、無料枠で定期実行が必要。ただし $5 は月次の無料枠ではなくトライアルクレジットである点を必ず理解したうえで。

**どちらも合わないケース** — 「無料で、スリープなしで、常時稼働」を求める場合。この条件を満たす PaaS は基本的に存在しません。常時稼働が要件なら有料インスタンスを前提にするか、常駐が不要な設計（エッジ関数＋マネージドDB）に切り替えるほうが安上がりです。

## よくある質問

### Railway の $5 は毎月もらえますか？

いいえ。$5 はトライアルクレジットであり、月々の無料枠ではありません。使い切ると従量課金に移行します。常駐アプリを24時間動かす場合、長くはもちません。

### Render の無料枠はどのくらいでスリープしますか？

15分間アクセスがないとスリープし、次のリクエストでの復帰に約1分かかります。さらにワークスペースあたり月750インスタンス時間の上限があり、使い切ると翌月まで停止されます。

### 無料枠で Webhook を受け取れますか？

推奨できません。Stripe や GitHub からの Webhook はタイムアウトが短く、スリープからの復帰が間に合わないと配信失敗になります。Webhook の受け口には常時稼働のインスタンスを使ってください。

### Render の無料プランで Cron は使えますか？

使えません。Render の Cron Jobs は有料プランの機能です。無料で定期実行したい場合は Railway、または Cloudflare Workers の Cron Triggers を検討してください。

### 無料枠で商用サービスを運用してよいですか？

どちらも全プランで商用利用が認められています。Vercel Hobby のような非商用限定の制約はありません。

## 関連ページ

- Render: https://atlas.lb-product.com/entities/render
- Railway: https://atlas.lb-product.com/entities/railway

Canonical HTML: https://atlas.lb-product.com/compare/render-vs-railway
