Skip to content
isdnetworks
Go back

0건 수집이 0건 존재는 아니다

외부에서 데이터를 수집하는 배치 중 하나가 오랫동안 0건이었다. 그쪽에 데이터가 없는 것으로 보고 넘어갔다.

Table of contents

Open Table of contents

0건으로 남던 로그

한참 뒤에 응답을 찍어 보니 인증이 실패하고 있었다. 우리 코드는 응답을 목록으로 파싱하려 했고 파싱 결과가 비어서 0건으로 처리했다.

상태 코드를 보지 않으니 실패가 성공한 0건처럼 기록됐다. 수집 완료 0건이라는 줄이 매일 로그에 남고 있었다.

정상 0과 실패 0

주말이나 휴일에는 실제로 0건인 경우가 있다. 그러면 같은 로그가 정상과 실패 두 가지를 뜻하게 된다.

구분이 안 되는 신호는 며칠이 지나도 아무도 이상하게 여기지 않는다. 몇 달이 지나도록 그 상태가 유지된 이유가 거기 있었다.

상태 코드와 본문 결과 코드

가장 기본적인 것부터 고쳐서 응답 상태가 정상이 아니면 예외를 던지게 했다. 그러면 실패가 0건으로 넘어가지 않는다.

다만 상태는 정상인데 본문에 오류 코드가 담겨 오는 시스템도 있었다. 그래서 본문의 결과 코드도 확인하게 했고 형식이 시스템마다 달라 연동별로 따로 짜야 했다.

성공한 지 오래된 것을 알린다

더 근본적인 것은 마지막으로 실제 데이터를 받은 시각을 남기는 일이었다. 마지막 실행 시각과 마지막 성공 시각을 나란히 두면 매일 돌지만 몇 달째 성공이 없다는 것이 바로 보인다.

여기에 알림을 걸되 실패했을 때가 아니라 성공한 지 오래됐을 때 알리게 했다. 조용한 실패는 실패 신호를 안 내므로 성공의 부재로만 잡힌다.

만료와 대체 경로

원인이 자격증명 만료였으므로 연동별 발급일과 만료일을 기록하고 미리 알리게 했다. 만료는 예측 가능한 실패라서 미리 막을 수 있는 종류다.

다른 연동도 훑어보니 비슷한 상태가 몇 개 있었는데 심각도는 달랐다. 같은 데이터를 다른 경로로도 받고 있으면 실질 유실이 적고 그 연동이 유일하면 유실이 그대로 쌓이므로 우선순위를 그것으로 갈랐다.

정리


Share this post on:

Previous Post
확인하려던 요청이 만든 것
Next Post
메시지 하나가 큐를 멈춘다