Closed7
Vercel 移行メモ
ピン留めされたアイテム
AWS ECS に構築された Next.js アプリケーション(App Router)を Vercel に移行できるか調査したメモ
メリット・デメリット
- React の Web フレームワークである Next.js と開発元が同じなので、非常に相性が良い
- Next.js + Vercel にすることで、ビルドやランタイムさまざまなキャッシュが有効になる
- 悪く言えば、ベンダーロックインされてしまう
- ほぼゼロコンフィグでホスティングまでいける
- デプロイ CI が不要
- SSR する場合も自前でサーバーを用意する必要がない
- AWS ほどの高度なカスタマイズ性はない
- AWS の場合は、LB など AWS 他リソースとの連携が強み
- Vercel はフロントエンド向け機能に特化している
Next.js + ECS だと使えない機能
※ こちら現状調査中
- Next.js の standalone モードで、t3-env を利用した場合、ランタイム(ECS)の環境変数が設定できない
- t3-env(タイプセーフな環境変数が設定できるライブラリ)経由だと設定できないっぽい
- t3-env を使わず、process.env だとたぶんいける
- Next.js の Middleware 機能が ECS だと動かない
- 調査中
デプロイ手順
初回デプロイ
- Vercel 上にプロジェクトを作成
- GitHub アカウントを紐付ける
- Deploy
初回以降デプロイ
GitHub のベースブランチ(main)にマージされたら自動的にデプロイされる
ベースブランチ以外だとプレビュー環境にデプロイされる
料金プラン
- 商用利用する場合、基本的に Pro プランを利用することになると思う
- Pro プランは、1 メンバー(Vercel を設定できるユーザー):$20/month
- プランごとに帯域幅(トラフィック)やデプロイ回数などに制限が設けられており、その月制限を超えなければ課金はされない(Pro プランなら$20 のみ)
月の制限を超える可能性がありそうな箇所
- 帯域幅(トラフィック)
- 1 TB/month
- その月内で上記を超えると、100GB ごとに$40
- 画像の最適化枚数(next/image を使って画像のリサイズなどをやっている箇所)
- 5,000 枚/month
- その月内で上記を超えると、1,000 枚ごとに$5
対策
- リンクの prefetch 機能を使わない
- prefetch 機能はリンク先のページを先読みする機能
- これを使うとトラフィックが増大する可能性がある
- 画像の最適化を行わない or 別のツールで画像の最適化を(安価であれば)検討
- ※ 画像の最適化を行わないと通信量サイズが増えるので注意
参考:https://zenn.dev/aiji42/scraps/748b2aa4dd8dd1
その他気になる点
- Pro プランでもランタイムのログは 1 日分しか保持されない
- 別途ロギングツールを検討する必要はあるかも
- Web ページ解析(GA みたいな)、パフォーマンス計測、監視は別途課金すれば使える
- リソースの使用量は以下で確認できる
機能
- カスタムドメイン
- テスト環境
- https://vercel.com/docs/deployments/preview-deployments
- プレビュー環境がある
- ベースブランチ(main)以外のブランチに push された場合に、プレビュー環境が作られる
今後に関して
- すでに作られた AWS 構成を置き換えてまで Vercel を使うメリットは今の所感じていない
- 今後新規システムの場合に検討の候補にいれたい
- 以下の要件を持つシステムの場合、Vercel を検討するかも
- 高いパフォーマンスを求めるシステム
- Vercel の KVS や DB などのエッジコンピューティングサービスを利用すれば、API サーバーを経由せずにブラウザと Vercel 間のみの通信で完結できる可能性がある
- SSR をやるシステム
- Vercel だと自前でサーバーを用意しなくてよい
- 小・中規模なシステムや画像が少ないシステム
- コストが抑えられるかも
- 高いパフォーマンスを求めるシステム
- 以下の要件を持つシステムの場合、Vercel を検討するかも
このスクラップは2024/02/01にクローズされました