분산락 어노테이션으로 재고의 중복 반영을 막고 보일러 코드를 제거한 경험 공유
문제 상황
작업을 완료할 때에 어떤 재고를 몇개의 수량으로 완료를 했다고 보내는 기능이 있는데 해당 기능에서 중복 요청이 발생하는 문제가 있었습니다.
작업 완료 이벤트가 2번 씩 중복 요청됨 → 재고도 중복으로 반영됨
분석
비지니스 로직 상에서는 요청된 수량보다 완료된 수량을 더 많이 진행할 수 없도록 방어처리되고 있었지만 동시성 문제로 서로 다른 스레드에서 db에 반영되기 전에 병렬적으로 처리하다보니 중복적으로 반영하는 문제였습니다.
따라...
blog.hyunjun.org4 min read