Vercel 以外の環境にデプロイしたことはありますか。何が必要でしたか。
Node.js のプロセスを常駐させ、前にリバースプロキシを置きます。Docker で固めるなら standalone 出力を使うと、必要な依存だけがまとまってイメージが小さくなります。
面接官が見ているのは自前ホスティングの実際を知っているか。
よくある答えと、面談でどう見られるか
- Node のプロセスを常駐させる。Docker なら standalone 出力でイメージを小さくする
サーバー機能を使っているなら静的書き出しでは足りない、という点も押さえたいところです。 - 静的ファイルとして書き出して、任意のサーバーに置く
完全に静的なサイトなら成立します。ただし Server Function や動的レンダリング、画像最適化を使っていると動きません。 - ビルド成果物をそのまま置けば動く
Node のプロセスが要ります。置くだけでは動きません。 - Node のプロセスを常駐させ、前段にリバースプロキシを置く
構成として妥当です。切り戻せる形にしておく点まで言えるとなお良いです。
面接官は何を見ているか
- Node のプロセスが要ると理解している
- 静的書き出しでは足りない場合があると言えた
- ビルド成果物の扱いに触れた
模範解答
Node.js のプロセスを常駐させて、その前にリバースプロキシを置く構成にします。Docker で固める場合は、standalone 出力を使うとイメージが小さくなります。必要な依存だけをまとめた成果物が出るので、node_modules を丸ごと入れずに済みます。
注意点として、サーバー機能を使っているなら静的書き出しでは動きません。Server Function、動的レンダリング、画像最適化などはサーバーが要ります。完全に静的なサイトなら書き出せますが、その場合は使える機能が限られます。
デプロイ時は、ビルド済みの成果物を入れ替えてプロセスを再起動します。前のリリースに戻せる形にしておくと、失敗したときに素早く切り戻せます。
ここからどう深掘りされるか
この問いに答えられた場合、面談は次の質問に進みます。
観点をすべて押さえられた場合
本番で「ローカルでは出なかったエラー」が出ました。何から確認しますか。一部しか触れられなかった場合
next build と next dev は、何が違いますか。触れられなかった場合
next build と next dev は、何が違いますか。