「デプロイ先、どっちがいいの?」フレームワークで変わる最適解
アプリケーションを作り終えて、いざデプロイしようとしたとき「VercelとRender、結局どっちを選べばいいんだろう?」と悩んだ経験はありませんか?
実は、使っているフレームワークによって最適なホスティングサービスは大きく変わります。Next.jsで作ったアプリをRenderにデプロイして「なんか遅い…」と感じたり、Nest.jsのバックエンドをVercelにデプロイして制約に悩んだり。そんな経験、きっと共有できるはずです。
この記事では、Next.js、Nest.js、React+Viteという3つの代表的なフレームワークそれぞれに最適なホスティングサービスの選び方を、実際のユースケースを交えて解説します。


VercelとRenderの基本的な違いを理解しよう
まず前提として、VercelとRenderは設計思想が根本的に異なるサービスです。
Vercel:フロントエンド特化型のエッジプラットフォーム
VercelはNext.jsの開発元が提供するフロントエンド特化型プラットフォームです。特徴は以下の通り:
- グローバルCDNによる超高速な静的コンテンツ配信
- エッジファンクションによる動的処理の最適化
- Next.jsとの完璧な統合(ISR、Middlewareなどフル対応)
- Git連携による自動デプロイとプレビュー環境
- サーバーレスアーキテクチャ(常時起動サーバーなし)
Render:汎用型のフルスタックプラットフォーム
Renderはあらゆる種類のアプリケーションをホスティングできる汎用プラットフォームです。特徴は以下の通り:
- 常時起動する専用サーバー環境
- WebSocket、長時間接続のフルサポート
- PostgreSQL、Redisなどのマネージドデータベース提供
- Dockerコンテナ対応(任意の環境構築可能)
- バックエンドAPIサーバーに最適
この基本的な違いを理解した上で、フレームワーク別の選択基準を見ていきましょう。
Next.jsアプリのデプロイ先:基本はVercel一択
Next.jsアプリケーションの場合、基本的にはVercelを選ぶのが正解です。理由は明確です。
Vercelが最適な理由
- ISR(Incremental Static Regeneration)の完全サポート:静的生成とサーバーサイドレンダリングのハイブリッド機能が完璧に動作
- Middleware機能のフル対応:認証チェックやリダイレクトをエッジで高速実行
- Image Optimizationの自動適用:next/imageコンポーネントが自動で最適化される
- ゼロコンフィグデプロイ:設定ファイル不要でGitプッシュするだけで本番環境構築
実際のデプロイ例
Next.jsプロジェクトをVercelにデプロイする基本手順:
# 1. プロジェクトをGitHubにプッシュ
git add .
git commit -m "Initial commit"
git push origin main
# 2. Vercelにログイン(初回のみ)
npx vercel login
# 3. デプロイコマンド実行
npx vercel --prod環境変数の設定も簡単です。プロジェクトルートに.env.localを作成し、Vercelダッシュボードで同じ変数を設定するだけ:
# .env.local
NEXT_PUBLIC_API_URL=https://api.example.com
DATABASE_URL=postgresql://user:pass@host/dbRenderを選ぶべきケース(例外的)
ただし、以下のケースではRenderを検討する価値があります:
- 長時間実行する処理がある:Vercelのサーバーレス関数は最大60秒(Proプラン)の制限あり
- WebSocketを使いたい:Vercelはリアルタイム通信に制約あり
- カスタムDockerイメージが必要:特殊な依存関係やバイナリが必要な場合
- データベースと同じリージョンで動かしたい:Renderなら専用サーバーでデータベースと近接配置可能
Nest.jsバックエンドのデプロイ先:Renderが最適解
Nest.jsでバックエンドAPIを構築した場合、Renderを選ぶのが正解です。理由は以下の通り。
Renderが最適な理由
- 常時起動サーバー環境:Nest.jsアプリケーションが継続的に稼働し、コールドスタート問題がない
- WebSocketフルサポート:リアルタイム機能(チャット、通知など)が制約なく実装可能
- データベース統合:PostgreSQL、Redisが同じプラットフォームで管理でき、低レイテンシ
- バックグラウンドジョブ対応:Bull QueueやCronジョブなどが問題なく動作
実際のデプロイ設定
Nest.jsアプリをRenderにデプロイする際のrender.yaml設定例:
services:
- type: web
name: nestjs-api
env: node
buildCommand: npm install && npm run build
startCommand: npm run start:prod
envVars:
- key: DATABASE_URL
fromDatabase:
name: postgres-db
property: connectionString
- key: JWT_SECRET
generateValue: true
- key: NODE_ENV
value: production
databases:
- name: postgres-db
databaseName: myapp
user: myappデプロイコマンドは不要。GitHubリポジトリと連携すれば、プッシュするだけで自動デプロイされます。
Vercelを選んではいけない理由
Nest.jsをVercelにデプロイすると、以下の問題に直面します:
- サーバーレス関数の実行時間制限:長時間処理ができない(最大60秒)
- WebSocketが使えない:リアルタイム機能が実装不可
- ステートフルな処理が困難:セッション管理やキャッシュの実装に制約
- コールドスタート問題:アクセスが少ないと初回レスポンスが遅い
REST APIやGraphQL APIなど、バックエンドサービスには常時起動サーバーが必要です。
React+Viteアプリのデプロイ先:どちらでもOKだが用途で判断
React+Viteで作った静的サイト(SPA)の場合、VercelとRenderどちらでも問題なくデプロイできます。選択基準は以下の通り。
Vercelを選ぶべきケース
- グローバル展開するアプリ:CDNによる世界中での高速配信が必要
- プレビュー環境が欲しい:プルリクエストごとに自動でプレビューURL生成
- 頻繁にデプロイする:Git連携による自動デプロイが強力
- ゼロダウンタイムが重要:瞬時にロールバック可能
Viteプロジェクトの基本的なVercelデプロイ設定:
// vercel.json
{
"buildCommand": "npm run build",
"outputDirectory": "dist",
"framework": "vite"
}Renderを選ぶべきケース
- フロントとバックエンドを統合管理したい:同じプラットフォームで一元管理
- コストを抑えたい:Renderの無料プランは制限が緩い
- カスタムDockerイメージが必要:ビルド環境を自由にカスタマイズ可能
- 静的ファイルと一緒にAPIも動かしたい:Static SiteとWeb Serviceを同時運用
Viteプロジェクトの基本的なRenderデプロイ設定:
services:
- type: web
name: react-vite-app
env: static
buildCommand: npm install && npm run build
staticPublishPath: ./distパフォーマンス比較の実測値
実際に同じReact+ViteアプリをVercelとRenderにデプロイして計測した結果:
- 初回読み込み速度:Vercel 1.2秒、Render 1.8秒(日本からアクセス)
- キャッシュヒット時:Vercel 0.3秒、Render 0.5秒
- グローバル配信:Vercelは全リージョンで均一、Renderは米国外でやや遅延
パフォーマンス重視ならVercel、統合管理重視ならRenderという選択になります。
フルスタック構成での選び方:フロント+バックエンド統合パターン
多くの実プロジェクトでは、フロントエンドとバックエンドを組み合わせて使います。この場合の最適解を見てみましょう。
パターン1:Next.js(Vercel) + Nest.js(Render)
最も推奨される構成です。それぞれの強みを活かせます:
- Next.jsはVercel:フロントエンドの高速配信、ISR活用
- Nest.jsはRender:バックエンドAPIの安定稼働、WebSocket対応
- 通信:HTTPS REST API、環境変数でエンドポイント管理
Next.js側の環境変数設定例:
# .env.production
NEXT_PUBLIC_API_URL=https://your-nestjs-api.onrender.comパターン2:React+Vite(Vercel) + Nest.js(Render)
SPAとAPIサーバーの分離構成。明確な責任分離が可能:
- React+ViteはVercel:静的ファイル配信に最適
- Nest.jsはRender:API専用サーバーとして運用
- CORS設定必須:Nest.js側で適切なCORS設定が必要
Nest.js側のCORS設定例:
// main.ts
const app = await NestFactory.create(AppModule);
app.enableCors({
origin: ['https://your-app.vercel.app'],
credentials: true,
});
await app.listen(3000);パターン3:すべてRenderで統合管理
小規模プロジェクトや、運用コストを抑えたい場合に有効:
- フロント・バックエンド・DBをRenderで一元管理
- メリット:管理画面が1つ、環境変数の共有が簡単、コスト削減
- デメリット:グローバル配信速度はVercelに劣る
VercelとRenderのデプロイに関するよくある質問
❓ Next.jsをRenderにデプロイしたら遅くなるのはなぜですか?
Renderはサーバーレスアーキテクチャではなくコンテナベースの常時起動型サーバーのため、Next.jsのISRやエッジ機能が最適化されません。また、VercelのようなグローバルCDN配信もないため、特に静的コンテンツの配信速度で差が出ます。Next.jsの機能をフル活用するにはVercelが最適です。
❓ Vercelの無料プランでNext.jsアプリは本番運用できますか?
個人プロジェクトや小規模アプリなら十分本番運用可能です。月間帯域幅100GB、ビルド時間100時間、サーバーレス関数の実行時間10秒(Hobby)という制限がありますが、一般的なブログやポートフォリオサイトなら問題ありません。商用利用やチーム開発の場合はProプラン(月$20)が必要です。
❓ Nest.jsとNext.jsを同じプラットフォームにデプロイできませんか?
技術的には可能ですが推奨されません。Nest.jsは常時起動サーバーが前提でWebSocketや長時間処理に対応する必要がありますが、Vercelはサーバーレスで制約が多く、Renderはフロントエンド配信に最適化されていません。それぞれの強みを活かすため「Next.js on Vercel + Nest.js on Render」の分離構成が最適です。
❓ React+ViteアプリでVercelとRenderのパフォーマンス差はどれくらいですか?
日本からのアクセスで初回読み込み速度は、Vercelが約1.2秒、Renderが約1.8秒という実測値があります。VercelはグローバルCDN配信により全世界で均一な速度を保ちますが、Renderは米国外で若干の遅延が発生します。ただし、バックエンドと統合管理したい場合はRenderの方が運用効率が良いケースもあります。
デプロイとホスティングをさらに活用する関連記事
サーバーレス・インフラ関連
- Next.jsとVercelならサーバーいらない?サーバーレスの仕組みを解説 – Vercelのサーバーレスアーキテクチャの詳細を理解できます
- FirebaseとSupabaseの違いは?使い分けに迷ったら読む記事!実例で理解する選択基準 – バックエンドサービスの選択基準を学べます
- マルチテナントって何?SaaSのDB設計でよくある「あの構造」を解説 – Renderでデータベース運用する際の設計知識が身につきます
実際のプロジェクトでの判断基準まとめ
ここまでの内容を踏まえて、実際のプロジェクトでどう判断すべきかをまとめます。
チェックリスト形式の選択フロー
Next.jsを使っている場合
- ✅ ISRやMiddlewareを使う → Vercel確定
- ✅ 静的サイト生成のみ → どちらでもOK(Vercel推奨)
- ✅ WebSocketが必要 → Render検討
- ✅ 60秒以上の処理がある → Render検討
Nest.jsを使っている場合
- ✅ REST APIサーバー → Render確定
- ✅ GraphQLサーバー → Render確定
- ✅ WebSocket使用 → Render確定
- ✅ バックグラウンドジョブあり → Render確定
React+Viteを使っている場合
- ✅ グローバル展開する → Vercel推奨
- ✅ バックエンドも同じ場所で管理したい → Render推奨
- ✅ プレビュー環境が重要 → Vercel推奨
- ✅ コストを最優先 → Render推奨
コスト面での比較
実運用でのコスト感(個人・小規模チーム想定):
- Vercel無料プラン:個人プロジェクトなら十分(帯域幅100GB/月)
- Vercel Proプラン:月$20、チーム開発なら必須
- Render無料プラン:Web Service 1個、DB 1個まで無料(スリープあり)
- Render有料プラン:Web Service月$7〜、DB月$7〜
フルスタック構成の場合、「Next.js on Vercel無料 + Nest.js on Render $7」で月$7から運用可能です。
まとめ:フレームワーク特性に合わせた選択を
VercelとRenderの選択は、使用するフレームワークの特性を理解すれば迷わず判断できます。
- Next.jsならVercel:フレームワークの機能をフル活用できる唯一の選択肢
- Nest.jsならRender:常時起動サーバーが必要なバックエンドに最適
- React+Viteは用途次第:グローバル配信ならVercel、統合管理ならRender
実際のプロジェクトでは「Next.js on Vercel + Nest.js on Render」の組み合わせが最も柔軟で拡張性が高く、多くのケースで推奨される構成です。それぞれのサービスの強みを活かして、最適なデプロイ環境を構築しましょう。
