문제 발견·원인 분석·조치·교훈 중심으로 푸는 결
인턴 당시 간이 결제 기능을 포함한 웹 서비스 프로젝트에 참여했습니다. QA 단계에서 특정 조건의 환불 요청이 중복으로 처리되는 버그를 발견했습니다. 결제 요청이 짧은 시간 안에 두 번 들어오면 두 건 모두 승인되는 구조였고, 실 서비스였다면 이중 환불로 이어질 수 있는 문제였습니다. 원인을 분석하니 환불 처리 로직에 멱등성 보장이 없었고, 동시 요청에 대한 락 처리도 빠져 있었습니다.
Idempotency Key를 도입하고 요청 처리 전 상태 확인 단계를 추가해 수정했습니다. 동일 요청 ID가 들어오면 첫 번째 처리 결과를 반환하고 두 번째는 무시하도록 했습니다. 테스트 시나리오를 짜서 동시 요청 20건을 병렬로 보냈을 때 정확히 한 건만 처리되는 것을 확인했습니다.
단위 테스트와 통합 테스트를 모두 돌리고, 버그 발견 경위와 수정 내역을 문서로 남겼습니다. 결제 관련 이슈는 금액과 직결되기 때문에, 예외 케이스를 먼저 정의하고 테스트하는 습관이 중요하다는 것을 그 경험에서 배웠습니다.