まもなく大型コンサートのチケット販売が始まります。残っている座席の範囲内でのみ 予約が成立し、どんな場合でも在庫より多く売れてはいけません。 reserve(count) の予約処理を完成させてください。 Note: 販売開始時には、多くの予約リクエストが同時に(一つのプロセス内で 非同期に)届きます。
NestJS でコンサート座席予約 API を作る問題です。予約は残っている座席の範囲内で のみ成立し、どんな場合でも在庫より多く売ってはいけません。販売開始時に多くの リクエストが一つのプロセス内で同時に届く状況を想定し、reserve(count) の予約処理を 完成させます。在庫はインメモリストアを唯一の真実の源として使います。
この問題は、多くのリクエストが同じ在庫を巡って同時に競合するとき API がどう 振る舞うべきかを扱います。座席・残高・ポイント・クーポンのように複数のリクエストが 同じ数値を奪い合う資源では、1 件ずつ処理すれば問題なく見えても、一斉に届く瞬間が 本当の試金石になります。こうしたコードを検証するときは、単一リクエストだけでなく、 在庫より多いリクエストを一度に送り、成功した予約の合計が初期在庫を超えないかを 確認する習慣が大切です。