프로덕션에서만 발생하는 버그를 로그로 추적해 재현한 경험
배포 후에 특정 사용자만 결제가 안 되는 버그가 발생했는데, 로컬에서는 재현이 되지 않았습니다. 로그를 확인해야 했으나 당시에는 에러 로그만 있었고 어떤 조건에서 발생하는지에 대한 맥락 정보가 부족했습니다.
로그에 사용자 ID, 요청 파라미터, 서버 내부 상태를 단계별로 남기도록 수정하고 같은 에러가 재발했을 때 수집된 정보를 분석했습니다. 로그를 확인해 보니 특정 카드사 코드가 포함된 요청에서만 파싱 오류가 발생하고 있었으며, 해당 카드사가 새 코드를 추가했으나 내 코드에는 반영이 되지 않은 것이 원인이었습니다.
그 이후로는 로그가 없으면 디버깅을 할 수 없다는 기준을 삼고, 배포 전에 주요 분기마다 로그가 남는지 확인하는 습관을 들였습니다. 버그는 결국 재현할 수 있어야 고칠 수 있으며, 재현은 충분한 로그에서 시작한다는 것을 배웠습니다. 그 실패가 로그 설계를 먼저 생각하는 습관을 만들어주었습니다.