IT-Q

Vercel 以外の環境にデプロイしたことはありますか。何が必要でしたか。

Node.js のプロセスを常駐させ、前にリバースプロキシを置きます。Docker で固めるなら standalone 出力を使うと、必要な依存だけがまとまってイメージが小さくなります。

面接官が見ているのは自前ホスティングの実際を知っているか。

よくある答えと、面談でどう見られるか

  • Node のプロセスを常駐させる。Docker なら standalone 出力でイメージを小さくする
    サーバー機能を使っているなら静的書き出しでは足りない、という点も押さえたいところです。
  • 静的ファイルとして書き出して、任意のサーバーに置く
    完全に静的なサイトなら成立します。ただし Server Function や動的レンダリング、画像最適化を使っていると動きません。
  • ビルド成果物をそのまま置けば動く
    Node のプロセスが要ります。置くだけでは動きません。
  • Node のプロセスを常駐させ、前段にリバースプロキシを置く
    構成として妥当です。切り戻せる形にしておく点まで言えるとなお良いです。

面接官は何を見ているか

  • Node のプロセスが要ると理解している
  • 静的書き出しでは足りない場合があると言えた
  • ビルド成果物の扱いに触れた

模範解答

Node.js のプロセスを常駐させて、その前にリバースプロキシを置く構成にします。Docker で固める場合は、standalone 出力を使うとイメージが小さくなります。必要な依存だけをまとめた成果物が出るので、node_modules を丸ごと入れずに済みます。

注意点として、サーバー機能を使っているなら静的書き出しでは動きません。Server Function、動的レンダリング、画像最適化などはサーバーが要ります。完全に静的なサイトなら書き出せますが、その場合は使える機能が限られます。

デプロイ時は、ビルド済みの成果物を入れ替えてプロセスを再起動します。前のリリースに戻せる形にしておくと、失敗したときに素早く切り戻せます。

ここからどう深掘りされるか

この問いに答えられた場合、面談は次の質問に進みます。