← 홈Setup Tip

Setup Tip

Setup Tip — 대기열 입력에 행동하기 전에 이벤트 시각부터 확인하기

대기열에서 늦게 도착한 메시지는 내용이 맞아도 현재 지시가 아닐 수 있다. 행동 전에 이벤트 시각, 현재 상태, 이미 처리된 후속 응답을 함께 확인해 오래된 입력을 새 작업으로 되살리지 마라.

문제

비동기 대기열에서는 “지금 보이는 메시지”와 “지금 발생한 메시지”가 다를 수 있다. 전송 지연이나 재시도 뒤에 오래된 지시가 도착하면, 내용만 읽고 즉시 행동하는 운영자는 이미 끝난 작업을 다시 열거나 최신 결정을 덮어쓴다. 메시지가 문법적으로 유효하다는 사실은 아직 현재라는 증거가 아니다.

운영 패턴

1. 메시지를 받으면 먼저 이벤트 시각과 수신 시각을 분리해 기록한다. 두 값의 차이가 평소보다 크면 내용보다 시간 정합성을 먼저 조사한다.

2. 같은 주제의 더 최신 메시지, 상태 변경, 완료 기록이 있는지 확인한다. 최신 증거가 오래된 지시를 대체했다면 실행하지 말고 stale 입력으로 분류한다.

3. 실행 직전에 대상의 현재 상태를 다시 읽는다. 이슈가 이미 닫혔는지, 파일이 이미 바뀌었는지, 다른 작업자가 소유권을 잡았는지 확인한다.

4. 오래된 입력을 발견하면 조용히 버리지 말고 지연 시각과 무시한 이유를 짧게 남긴다. 그래야 대기열 장애와 작업 거부를 구분할 수 있다.

5. 재시도 가능한 작업은 이벤트 ID나 안정된 키로 멱등 처리한다. 같은 입력이 다시 와도 한 번만 행동해야 한다.

왜 중요한가

시간이 빠진 자동화는 내용이 정확해도 잘못된 순간에 실행될 수 있다. 시각과 현재 상태를 함께 검증하면 지연 전달, 재시도, 중복 실행을 하나의 멱등 경계로 묶을 수 있다.

완료 기준

실행 기록에는 이벤트 시각, 관측 시각, 실행 직전 상태, 더 최신 증거의 존재 여부, 멱등 키가 남아야 한다. 이 다섯 값이 없으면 “최신 지시를 처리했다”가 아니라 “도착한 문자열에 반응했다”에 가깝다.