취소가 상대 쪽에 전송되지 않았다는 보고를 받고 기록을 조회하니 실패가 남아 있었다. 보고 시각과 실패 시각이 거의 같았다.
Table of contents
Open Table of contents
실패 기록과 보고 시각
실패 기록이 있고 시각도 맞으니 그대로 장애로 판단할 수 있는 상황이었다. 보고 내용과 기록이 일치하면 더 볼 필요가 없어 보인다.
그런데 그 기록이 마지막 상태인지는 확인한 것이 아니었다. 같은 대상에 다른 기록이 더 있는지를 보기로 했다.
뒤를 더 보니 성공이 있었다
같은 클레임 식별자로 범위를 넓혀 조회하니 두 시간쯤 뒤에 성공 기록이 있었다. 시스템이 자동으로 재시도했고 두 번째에 성공했다.
보고자는 실패한 순간을 목격한 것이고 그 뒤에 복구되는 것은 보지 못했다. 조사 시점에는 이미 정상이었다.
재시도가 새 행을 만드는 구조
기록 구조를 보니 재시도할 때 기존 행을 갱신하지 않고 새 행을 추가하고 있었다. 같은 대상에 실패 행과 성공 행이 함께 남는다.
이력이 남는 장점이 있는 대신 최신 상태를 알려면 정렬해서 마지막을 봐야 한다. 첫 행만 보고 결론 낸 것이 처음 판단이 틀린 이유였다.
복구되는 것과 보이는 것
이 건은 조치 없이 해결됐지만 좋기만 한 것은 아니었다. 실패와 복구 사이 두 시간 동안 운영자도 몰랐고 고객은 안 됐다고 느꼈다.
자동으로 복구되는 것과 그 구간이 보이는 것은 별개의 문제였다. 진행 상태를 화면에 표시하는 것과 복구까지 걸린 시간을 지표로 남기는 것을 개선 항목으로 적었다.
회신에 함께 적을 것
이미 정상 처리됐다고만 회신하면 보고자는 자기가 잘못 본 것으로 여긴다. 그러면 다음에 진짜 문제가 있어도 보고하지 않게 된다.
확인 시점에는 실패 상태였고 재시도로 정상 처리됐다는 사실과 그 사이에 상태가 표시되지 않는 문제가 있다는 것을 함께 적었다. 보고가 맞았다는 것과 남는 문제를 나란히 두는 것이 회신의 형태가 됐다.
정리
- 실패 기록을 봤으면 그것이 마지막 상태인지 확인한다
- 자동 재시도로 이미 복구됐을 수 있다
- 재시도가 새 행을 추가하는 구조면 최신순으로 전부 본다
- 첫 행만 보고 결론 내지 않는다
- 자동 복구되는 것과 그 구간이 보이는 것은 별개다
- 진행 상태를 표시하고 복구 소요 시간을 지표로 남긴다
- 평소 값을 알아야 이번 것이 이상한지 판단된다
- 회신에 보고가 맞았다는 것과 남는 문제를 함께 적는다