isolate 型のサーバーレスとコンテナは、何が違いますか

立ち上がりが速い理由と、そのかわりに使えない物を両方言う問い。isolate、コンテナ、関数型のサーバーレスを比べ、どんな処理ならどちらを選ぶかまで答えます。

答えてみる

面接官に「isolate 型のサーバーレスとコンテナは、何が違いますか」と聞かれたつもりで、答えを見る前に自分の言葉で答えます。

声に出して答えた人は「書かずに答えを見る」で開けます。

解説を読む

聞かれ方から関連するコースまで、この問いの解説を全部ここに置いています。

こう聞かれます

  • 「isolate 型のサーバーレスとコンテナは、何が違いますか」
  • 「isolate 型の立ち上がりが速いのはなぜですか」
  • 「速いなら、全部 isolate 型で作ればよいのではないですか」(裏から聞く形)

面接官が見ている点

  • 速い理由を、何を立ち上げずに済むかで説明できるか
  • 使える API、CPU の時間、メモリなどの制約を知っているか
  • 処理の重さや必要な道具で、どちらを選ぶか決められるか

短い答え

  • isolate 型は、1 つの JavaScript の実行環境の中に、小さく区切った部屋 (isolate) を作って動かすので、OS やコンテナを立ち上げずに済み、立ち上がりが速いです。
  • そのかわり、Node.js の API は一部だけ使える、CPU の時間やメモリに上限がある、などの制約があります。
  • 短く軽い処理を世界中の近い場所で返すなら isolate 型、重い計算や好きなライブラリやバイナリが要るならコンテナを選びます。

少し詳しい答え

何を立ち上げずに済むか

コンテナは、アプリと要る物一式 (言語の実行環境、ライブラリ、設定) を 1 つの箱にまとめ、その箱ごと起動します。最初の要求が来たときに箱を立ち上げると、その分だけ待ちます。これをコールドスタート (冷えた状態からの立ち上がり) と呼びます。

isolate 型は、Chrome にも使われている V8 という JavaScript の実行環境の中で、利用者ごとのコードを isolate という区画に分けて動かします。実行環境はすでに動いているので、区画を 1 つ作るだけで済みます。Cloudflare は、コンテナや VM の上で Node のプロセスを立ち上げるより、ずっと速く、少ないメモリで始められると説明しています。どれだけ差が出るかは処理の中身で変わるので、面接では「箱を立ち上げるか、区画を作るだけか」という仕組みの違いで話します。

isolate 型の代表は Cloudflare Workers です。AWS の Lambda や Google Cloud の Cloud Run functions は、関数の単位で動かすサーバーレスですが、中の仕組みは別なので、立ち上がりの速さや制約はサービスごとの説明で確かめます。

そのかわりの制約

  • 使える API Node.js の API は互換の設定で一部を使えますが、全部ではありません。ファイルを読み書きする前提のライブラリや、OS に頼るバイナリは動かないことがあります
  • CPU の時間とメモリ 1 回の要求で使える CPU の時間やメモリに上限があります。値はプランや設定で変わります
  • 状態を持たない isolate はいつ終わるか分からず、次の要求が同じ isolate に来るとも限りません。逆に、同じ isolate が続けて別の利用者の要求を受けることもあり、グローバルな変数の値はそのまま残ります。要求ごとの値をグローバルに置くと、ほかの利用者に漏れたり古い値を使ったりするので、続けて使う値は外の置き場に出します

どちらを選ぶか (トレードオフ)

isolate 型が向くのは、認証の確かめ、転送先の振り分け、小さな API、キャッシュの前段のように、短く軽い処理です。利用者の近くで速く返せ、使わない間の費用もかかりにくいです。

コンテナが向くのは、画像や動画の変換、重い計算、特定の言語やバイナリが要る処理、長くつなぎっぱなしにする処理です。AWS なら ECS や Fargate、Google Cloud なら Cloud Run がこの役です。そのかわり、立ち上がりの遅さを抑えるには最小の台数を置くなどの手当てが要り、その分の費用がかかります。

両方を組み合わせて、入口の軽い処理は isolate 型、重い処理だけコンテナに渡す、という分け方もよく使われます。話すときは、自分が関わったサービスで「この処理はこちらに置いた」という例を 1 つ用意します。

よくある間違い

  • 「isolate 型では Node.js が使えない」と言う Node.js の API は一部だけ使える、が正しい言い方です。使いたいライブラリが動くかを確かめます
  • グローバルな変数に利用者の状態を置く 次の要求が同じ isolate に来るとは限らず、逆に別の利用者の要求が同じ isolate に来て、前の値を読んでしまうこともあります。状態は外の置き場に出します
  • 速さだけで全部を寄せる重い処理を入れると、CPU の時間の上限に当たります。処理の重さで置き場を分けます

深掘りの問い

  • 「コンテナのコールドスタートは、どう抑えますか」最小の台数を置く、イメージを小さくする、起動時の処理を減らす、と答え、最小の台数には使っていなくても費用がかかる、と添えます
  • 「isolate 型でデータベースにつなぐとき、何に気をつけますか」 要求のたびに接続を作ると DB の接続数があふれるので、接続をまとめる中継や HTTP で話せる DB を使う、と答えます
  • 「同じ処理を両方で動かしたら、何を比べますか」応答の遅さ、費用、使えるライブラリ、運用の手間を、同じ負荷で測って比べる、と答えます

確認日 2026年10月24日

技術面接問題の一覧へ戻る