에러가 없다고 문제가 없는 건 아니다
종료 코드 0은 아무것도 증명하지 않습니다.
배치가 종료 코드 0으로 끝났고 에러 로그가 없습니다. 통과했다고 봐도 될까요.
아닙니다. 종료 코드 0과 빈 로그만으로는 2가지를 구분할 수 없습니다.
- 할 일을 다 하고 성공했다
- 조건이 잘못돼 전부 건너뛰었다
둘 다 로그가 비어 있고 종료 코드가 0입니다.
건수로 남기기
“처리했다”가 아니라 “몇 건 처리했다”를 남깁니다. 0건이면 그게 정상인지 아닌지를 판단할 수 있습니다.
대상이 0건이어도 정상인 날은 많습니다. 그래도 0건이 며칠째 이어지는지는 봐야 합니다. 어제도 0건, 오늘도 0건이면 대상을 고르는 조건이 잘못됐을 가능성이 큽니다.
조용한 건너뜀
실패하면 알림이 옵니다. 크래시가 나면 스택 트레이스가 남습니다. 하지만 조건에 맞지 않아 건너뛴 작업은 성공으로 분류됩니다. 종료 코드는 0이고 알림도 없습니다.
며칠 뒤 데이터가 비어 있는 걸 사람이 발견합니다. 그때는 어느 날부터 비었는지 되짚어야 합니다.
건너뜀도 집계합니다. 처리·건너뜀·실패 건수를 모두 남기면, 건너뜀 수가 갑자기 늘어난 날을 찾을 수 있습니다.
성공으로 위장한 실패
겪은 일입니다. 한 작업이 응답에 상태값을 넣지 않았습니다. 상태값이 빈 문자열이면 실패 목록에 들어가지 않았고, 집계는 그 실행을 성공으로 셌습니다. 실패 건이 집계에서 빠진 게 아닙니다. 성공 건으로 집계됐습니다.
2주치 실행 로그 76건의 상태값은 모두 빈 문자열이었습니다. 그동안 실패율은 0%로 보였습니다. 알림은 한 번도 안 왔습니다.
건수를 남겨도 끝이 아닙니다. 0건이 진짜 0건인지는 아직 모릅니다.