結論(おすすめ1つ)
Render を選べ。
Heroku の Procfile・buildpack との互換性が3ツール中で最も高く、移行コストが最小に抑えられる。render.yaml 一枚でサービスとデータベースを宣言的に管理でき、チームの学習コストも低い。無料枠でも Web サービスと PostgreSQL が動くため、スモールチームが試しながら移行するには最も現実的な選択肢だ。
比較表(料金/無料枠/移行コスト/対応言語)
| 項目 | Render | Railway | Fly.io |
|---|---|---|---|
| 無料枠 | あり(アイドル後スピンダウン) | あり(月次クレジット制、公式の料金ページで要確認) | あり(一定時間後マシン停止) |
| 有料最低ライン | 公式の料金ページで要確認 | 公式の料金ページで要確認 | 公式の料金ページで要確認 |
| Heroku からの移行コスト | 低(Procfile 互換、buildpack 類似) | 中(設定の書き直しが一部必要) | 高(Dockerfile 必須、ops 知識が要る) |
| 対応言語・ランタイム | Node / Python / Ruby / Go / Rust / Docker | Node / Python / Ruby / Go / Docker 他 | Docker ベース(任意言語) |
| マネージド DB | PostgreSQL | PostgreSQL / MySQL | Fly Postgres(セルフマネージド寄り) |
| リージョン展開 | US / EU / AP | US / EU 中心 | 世界30拠点以上(エッジ寄り) |
| CLI の使いやすさ | 中 | 高(railway up 一発) |
中(設定項目が多い) |
移行手順
Heroku → Render の最短ルートを示す。
ステップ1: render.yaml をリポジトリルートに作成する
services:
- type: web
name: my-app
runtime: node # python / ruby / go なども指定可
buildCommand: npm install && npm run build
startCommand: node dist/index.js
envVars:
- key: NODE_ENV
value: production
- key: DATABASE_URL
fromDatabase:
name: my-db
property: connectionString
databases:
- name: my-db
plan: free
ステップ2: 環境変数を移行する
# Heroku から環境変数を .env 形式でエクスポート
heroku config -a my-heroku-app --shell > .env.heroku
# Render ダッシュボードの Environment タブへ手動コピー、
# または Render CLI を使う場合
render env set --service my-app < .env.heroku
ステップ3: データベースをダンプ・リストアする
# Heroku Postgres からバックアップを取得
heroku pg:backups:capture -a my-heroku-app
heroku pg:backups:download -a my-heroku-app # latest.dump として保存される
# Render の PostgreSQL へリストア
pg_restore --verbose --clean --no-acl --no-owner \
-h <render-host> -U <user> -d <dbname> latest.dump
ステップ4: カスタムドメインと DNS を切り替える
1. Render ダッシュボード → Settings → Custom Domain で[ドメイン](https://px.a8.net/svt/ejp?a8mat=4B3XB4+4VMW8I+50+2HU3GX)を追加
2. DNS プロバイダで CNAME を <appname>.onrender.com に向ける
3. 切り替え前に TTL を 60 秒に下げておくとロールバックが楽
Railway を選ぶ場合は railway login && railway up で既存の Procfile を読み込めるケースが多い。Fly.io は fly launch が Dockerfile を自動検出するが、ボリュームやリージョンのピン留めなど ops 寄りの設定が必要になる。
向き不向き
Render に向くチーム・用途
- Heroku の Procfile や buildpack をそのまま流用したいチーム
- フロント / バックエンド / DB を一つのリポジトリで宣言的に管理したい少人数チーム
- IaC を深く学ぶ余裕はないが設定をコード化したい場合
Railway に向くチーム・用途
- CLI 中心のワークフローで
push したら終わりを実現したい開発者 - GitHub 連携だけで完結させたいプロトタイプ・個人開発
- テンプレートから素早くサービスを立ち上げたいフェーズ
Fly.io に向くチーム・用途
- グローバルエッジへの低レイテンシ展開が要件に含まれるサービス
- Docker イメージをすでに管理しており、リソースを細かく制御したいチーム
- WebSocket や長時間接続を多用するリアルタイム系アプリ
避けるべきケース
- Render 無料枠:コールドスタートが許容できない本番 API には不向き
- Railway:月次クレジット上限を超えた際の挙動を事前に確認せず本番投入するのはリスクが高い
- Fly.io:Docker・Linux 運用の経験が浅いチームには学習コストが重すぎる
- 3ツール共通:大規模トラフィックや厳格な SLA・コンプライアンス要件がある場合は、専用インフラ(ECS / GKE 等)を最初から検討する
Top comments (0)