数分から数時間かかる処理を、どう動かしますか

長い処理を利用者の要求から切り離し、キューで小さく分ける、手順を記録して途中から再開する、重い所だけ専用の実行環境に逃がす、の 3 つで答える問い。やり直しても壊れない作りまで話します。

答えてみる

面接官に「数分から数時間かかる処理を、どう動かしますか」と聞かれたつもりで、答えを見る前に自分の言葉で答えます。

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

解説を読む

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

こう聞かれます

  • 「数分から数時間かかる処理を、どう動かしますか」
  • 「何万件ものメールの送信や、大きなファイルの変換を、API の中でそのまま動かしてよいですか」
  • 「途中で落ちたら、最初からやり直しですか」

面接官が見ている点

  • 要求を受けた処理の中で待たせず、裏に回すと言えるか
  • 落ちたときに途中から再開でき、2 回動いても壊れない作りを考えているか
  • 実行環境ごとの時間の上限を知っていて、置き場を選べるか

短い答え

  • 利用者の要求からは切り離し、キューに仕事を積んで、裏の担当が小さな単位ずつ処理します。
  • 手順が長い物は、どこまで進んだかを記録する仕組みに乗せ、落ちても続きから再開できるようにします。
  • 1 つの単位がそれでも重いときは、その部分だけ長く動ける専用の実行環境に逃がします。そのぶん仕組みが増え、全体の流れは追いにくくなります。

少し詳しい答え

キューで細かく分ける

キューは、仕事を順に並べておく待ち行列です。API は「この仕事をやって」と積むだけですぐ返し、裏の担当 (コンシューマー) が取り出して処理します。1 万人にメールを送るなら、1 人分ずつか数十人分ずつの小さな仕事に分けて積みます。

小さく分けると、1 つが失敗してもその分だけやり直せます。担当の数を増やせば並べて速く進められます。キューの例は、AWS の SQS、Google Cloud の Pub/Sub、Cloudflare の Queues などです。

何回やり直しても失敗する仕事は、別の置き場 (デッドレターキュー) に移して、人があとで見ます。いつまでも同じ仕事を回し続けないためです。

手順を記録して途中から再開する

「データを取る、変換する、保存する、通知する」のように手順が長い物は、各手順が終わったことを記録するワークフローの仕組みに乗せます。途中で落ちても、済んだ手順は飛ばして続きから動きます。AWS の Step Functions、Google Cloud の Cloud Workflows、Cloudflare の Workflows などがこの役です。

キューでもワークフローでも、同じ仕事が 2 回動くことがあります。だから「すでに送った人には送らない」「同じ番号の書き込みは上書きで済む」のように、2 回動いても結果が変わらない (冪等な) 作りにしておきます。

重い所だけ逃がす (トレードオフ)

1 つの単位がそれでも数十分かかる、たくさんのメモリが要る、といった処理は、軽い実行環境の時間の上限に当たります。その部分だけ、長く動けるバッチ用の実行環境に渡します。Google Cloud の Cloud Run Jobs、AWS の Batch や ECS のタスクなどです。上限の長さはサービスや設定で変わるので、選ぶ前に確かめます。

分けるほど、どこで何が詰まっているかが見えにくくなります。仕事ごとに番号を付けてログをつなぐ、進み具合を画面や表で見られるようにする、などの手当てが要ります。件数が少なく数分で終わる処理なら、毎晩動く定期の処理 1 本で十分なこともあります。

話すときは、自分が関わったサービスで、長い処理をどう分けたか、何件をどれくらいの時間で流したかの例を 1 つ用意します。

よくある間違い

  • API の中で終わるまで待たせる 利用者を待たせるうえ、途中で接続が切れると処理も止まります。受け付けたらすぐ返し、裏で動かします
  • やり直しで 2 回動くことを考えない同じメールが 2 通届く、同じ金額が 2 回足される、が起きます。冪等な作りにします
  • 失敗した仕事を無限に回すいつまでも同じ失敗を繰り返して、ほかの仕事を詰まらせます。回数を決めてデッドレターキューに移します

深掘りの問い

  • 「進み具合を利用者に見せるには」仕事に番号を付けて状態を DB に書き、画面はその状態を読みに行く、と答えます
  • 「キューの担当を増やすと、何が困りますか」書き込み先の DB や、外の API の回数制限にまとめて当たるので、担当の数の上限を決める、と答えます
  • 「順番が大事な仕事はどうしますか」同じ利用者の仕事は同じ列に入れる、または順番の番号を持たせて追い越しを捨てる、と答えます

確認日 2026年10月24日

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