요청이 겹쳤을 때 생긴 문제
반복·후속 활성화에서는 요청이 겹치거나 처리 중에 거래 상태가 달라질 수 있었습니다. 중복 활성화가 충돌했을 때 원래 거래까지 실패할 수 있는 조건을 살펴봤습니다.
무시해도 되는 오류인지부터
중복 활성화를 처리하는 부분과 기존 요청을 조회하는 부분을 나눴습니다. 예상할 수 있는 중복인지, 거래를 실패시켜야 할 오류인지 구분했습니다. 원 거래의 트랜잭션을 보존하도록 SQL과 도메인의 판단 조건도 함께 검토했습니다.
오류를 무시하면 겉으로는 성공한 것처럼 보여도 잘못된 상태가 남을 수 있습니다. 재시도했을 때 무엇을 반환하고 어떤 기록을 남겨야 하는지부터 정해야 했습니다.
구현과 확인
AI의 도움을 받아 구현했습니다. 서버 운영 담당자로서 어떤 조건에서 실패하는지, 어디까지 바꿀지를 검토하고 테스트 결과를 확인했습니다. 코드 작성과 운영 반영은 구분해서 기록했습니다.
확인한 결과와 남은 부분
반복 활성화 변경은 개발 환경에서 검증하고 운영 배치에 적용한 기록이 있습니다. 이후 경쟁 상태를 다루는 코드와 회귀 테스트도 보완했습니다. 이후 변경이 운영에 배포됐는지와 장애 감소율은 이 사례에서 확인한 성과에 포함하지 않습니다.
이 작업에서는 처리 속도보다 실패한 뒤의 상태가 중요했습니다. 운영자가 나중에 잘못된 거래를 수습하지 않도록, 어떤 기록이 남는지 설명할 수 있어야 했습니다.