WEBBOOK CHAPTER

NestJS 11, 시작부터 런칭까지: 44장. 장애 훈련 — Queue lag가 계속 증가한다

44장. 장애 훈련 — Queue lag가 계속 증가한다

oldest message age, publish rate, consume rate, retry, DLQ, worker event-loop, DB pool, provider 429를 같은 시간축으로 본다. 단순 worker 증설은 provider limit과 DB connection을 악화시킬 수 있다. poison message인지 전체 지연인지 event type·version별로 범위를 좁힌다.

먼저 비핵심 notification을 지연하고 핵심 안전 알림 capacity를 보호한다. provider Retry-After와 업무 deadline에 맞춰 concurrency를 낮추거나 대체 channel을 승인한다. message를 삭제해 graph를 깨끗하게 만들지 않는다. 이미 처리됐지만 ack가 끊긴 event는 idempotency receipt로 확인한다.

실습은 429와 slow response를 주입해 lag alert를 발생시키고 concurrency 조정 전후를 비교한다. 복구 완료는 queue 0이 아니라 Dispatch·Outbox·receipt 수량과 사용자 알림 중복 0을 대사한 시점이다. runbook에는 replay filter, dry run, 승인, 중단 기준을 둔다.