ONE QUESTION AT A TIME.

천천히 생각하고, 분명하게.

TODAY’S QUESTION940 / 1500
분산 시스템난이도 중하5분 답변 목표 · 보강본

특정 메시지가 계속 실패해 큐를 막습니다. DLQ로 옮기면 무엇이 해결되고 어떤 책임이 남나요?

잠깐, 답변을 보기 전에
먼저 내 말로 설명해 볼까요?

답변과 점검 포인트 펼치기답변 접기
01

구두 답변

정의를 외우기보다, 원리와 조건을 연결해 설명해 보세요.

DLQ는 반복 실패 메시지를 정상 처리 경로에서 격리해 다른 작업의 진행을 돕는 수단입니다. 오류 원인을 고치거나 메시지를 자동으로 올바르게 처리하는 기능은 아닙니다.

동작 원리와 전제

스키마 오류·참조 데이터 부재·일시 장애·코드 결함을 구분하고 재시도 횟수·시간·분류 기준을 정합니다. 원래 이벤트 ID·payload 버전·오류·시도 이력을 보존해야 재처리와 감사가 가능합니다. 민감 원문 보관 권한도 제한합니다.

선택과 실패 처리

순서가 필요한 계정의 한 메시지를 건너뛰면 다음 상태 전이가 의미를 잃을 수 있습니다. 해당 키를 보류하거나 결과 조회·보정 정책을 둡니다. 원인 수정 없이 DLQ 전체를 다시 넣으면 같은 실패와 중복 효과가 반복됩니다.

구체적인 사례와 검증

주문 승인 이벤트가 실패한 상태에서 배송 이벤트만 계속 적용하면 큐는 진행해도 업무 상태는 깨질 수 있습니다. 독립 메시지와 키별 순서가 필요한 메시지를 분리하고 DLQ 이동이 후속 처리에 주는 영향을 정합니다. 원인을 고친 뒤 재처리할 때도 원래 event ID를 유지해야 이전 부분 성공을 중복시키지 않습니다. 운영자는 DLQ 건수만 보는 것이 아니라 가장 오래된 미해결 작업과 사용자 영향, 담당자·복구 기한을 봐야 합니다. 자동 재시도 한도가 끝났다는 사실이 작업을 영구 폐기해도 된다는 허가는 아닙니다. 보관 만료 전에 대사·수동 복구가 가능한 절차를 마련합니다.

작은 배치로 재생하고 멱등 키를 유지하며 재처리 결과와 원장을 대조합니다. DLQ 나이·유입률·미해결 수·담당자를 관리합니다. 정상 큐가 비었다고 작업이 모두 완료된 것은 아니므로 사용자 상태와 운영 완료 기준을 분리합니다.

02

득점 포인트

이해가 드러나는 지점을 확인해 보세요.

  • 핵심 구분: DLQ는 반복 실패 메시지를 정상 처리 경로에서 격리해 다른 작업의 진행을 돕는 수단입니다.
  • 선택 조건: 순서가 필요한 계정의 한 메시지를 건너뛰면 다음 상태 전이가 의미를 잃을 수 있습니다.
  • 검증 기준: 작은 배치로 재생하고 멱등 키를 유지하며 재처리 결과와 원장을 대조합니다.
03

감점 포인트

놓치기 쉬운 조건과 오해를 짚어 보세요.

  • DLQ로 옮기면 작업의 오류와 사용자 미완료 상태도 해결됐다고 한다.
04

더 파고들 거리

하나 더 질문하며 이해의 범위를 넓혀 보세요.

  • 메시지 숨김 시간이 끝나도 옛 워커가 실행 중일 때 중복 효과를 어떻게 막나요?
  • 처리 성공 뒤 ACK가 유실돼 다시 받은 이벤트를 원장에 한 번만 반영하려면 어떻게 하나요?
  • 전달 순서는 맞지만 여러 워커가 반영 순서를 바꾸면 어떤 키별 실행·버전 정책이 필요한가요?

득점·감점 포인트는 학습용 자기 점검 기준이며, 특정 회사의 실제 채점표가 아닙니다.

원리부터 공부하고 싶다면

답변을 보충하는 개념·예제·슈도코드를 읽어 보세요.

← 전체 질문 보기