DEV Community

スシロー
スシロー

Posted on

【2026】Heroku 代替 2026 (Render/Railway/Fly.io):料金・移行コストで選ぶ

結論(おすすめ1つ)

乗り換え先は Render を推奨する。

Heroku との操作感の近さ、render.yaml による IaC 対応、PostgreSQL/Redis のマネージドサービスが一体化しており、移行工数が三択の中で最も少ない。無料枠は存在するが、Webサービスにスリープ動作がある点は押さえておく必要がある。Railway は DX が良いが料金体系が変動しやすく、Fly.io は Docker と運用知識が前提になるため、Ops リソースが限られるチームには過剰になりやすい。


比較表(料金/無料枠/移行コスト/対応言語)

項目 Render Railway Fly.io
料金モデル サービス単位の月額制 使用量課金(シート料金あり) 使用量課金(リソース単位)
無料枠 あり(Webサービスはスリープあり) あり(トライアルクレジット制) あり(一定リソースまで)
具体的な金額 公式の料金ページで要確認 公式の料金ページで要確認 公式の料金ページで要確認
移行コスト 低(Heroku と操作感が近い) 低〜中(テンプレート整備が必要) 高(Docker 化・flyctl 習得が前提)
対応言語 Node.js/Python/Ruby/Go/Rust/静的サイト等 Node.js/Python/Ruby/Go/Rust 等 Docker が動けば言語不問
マネージド DB PostgreSQL/Redis PostgreSQL/MySQL/Redis Fly Postgres(セルフホスト型)
カスタムドメイン SSL 無料(Let's Encrypt) 無料(Let's Encrypt) 無料(Let's Encrypt)
GitHub 連携 あり あり あり(Actions 組み込み推奨)

移行手順

Node.js(Express)アプリを Render へ移行する例で示す。

1. render.yaml をリポジトリに追加する

# render.yaml
services:
  - type: web
    name: my-app
    runtime: node
    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
Enter fullscreen mode Exit fullscreen mode

2. Heroku の環境変数をエクスポートする

heroku config -a <your-heroku-app> --json > heroku_env.json
Enter fullscreen mode Exit fullscreen mode

出力した JSON を確認し、Render ダッシュボードの「Environment」タブへ転記する。APIキー等のシークレットは Secret Files か環境変数欄に手動で設定する。

3. Render にデプロイする

# Render CLI をインストール(任意)
npm install -g @render-com/cli

render login
render deploy
Enter fullscreen mode Exit fullscreen mode

CLI を使わない場合は、Render ダッシュボードから GitHub リポジトリを接続するだけでデプロイが完了する。render.yaml が存在すればサービス構成は自動で読み込まれる。

4. DB データを移行する

# Heroku 側からダンプを取得
heroku pg:backups:capture -a <your-heroku-app>
heroku pg:backups:download -a <your-heroku-app>

# Render 側の PostgreSQL へ復元
pg_restore --no-acl --no-owner \
  -h <render-db-host> \
  -U <render-db-user> \
  -d <render-db-name> \
  latest.dump
Enter fullscreen mode Exit fullscreen mode

接続情報は Render ダッシュボードの Database 詳細ページから取得する。

5. カスタムドメインを切り替える

1. Render ダッシュボード → 対象サービス → Settings → Custom Domain
2. DNS の CNAME を Render が提示するホスト名へ変更
3. TTL 伝播を確認してから旧 Heroku アプリのトラフィックを停止
Enter fullscreen mode Exit fullscreen mode

TTL を事前に短縮(例:300秒)しておくと切り替えロールバックが速くなる。


向き不向き

Render が向くチーム・規模

  • Heroku の操作感に慣れており、移行コストを最小化したい
  • PostgreSQL/Redis をアプリと同じプラットフォームで管理したい
  • インフラ専任がいない小〜中規模チーム
  • render.yaml で構成をコード管理したい IaC 志向

Railway が向くチーム・規模

  • プロトタイプ・ハッカソン・個人開発など素早く立ち上げたい場面
  • Dockerfile を書かずに即デプロイしたいケース
  • フルスタックテンプレートをそのまま使いたい初期フェーズ

Fly.io が向くチーム・規模

  • グローバルエッジ配置でレイテンシを最小化したいアプリ
  • Docker をすでに運用しておりコンテナ単位の制御が必要
  • WebSocket や長時間接続が多いリアルタイムアプリ
  • SRE/Ops リソースが確保できる中〜大規模チーム

避けるべきケース

  • Heroku アドオン(Heroku Scheduler の設定 UI 等)に深く依存しており再設計が大規模になる場合 → 段階移行を計画してから着手すること
  • 無料枠でスリープなし・24時間稼働を前提にしているケース → 各プラットフォームの制限を公式ページで必ず確認すること
  • Fly.io で flyctl や Docker の経験がないまま本番移行を急ぐケース → 学習コストを工数見積もりに明示的に含めること

Top comments (0)