동시성
개념 설명
동시성 문제는 여러 사용자가 같은 재고나 주문을 동시에 변경할 때 발생합니다. 유통 시스템에서는 재고 할당과 스캔 반영에서 특히 자주 나타납니다.
왜 필요한가
재고 1개를 두 주문이 동시에 가져가면 시스템상으로는 둘 다 성공했지만 실제로는 하나만 출고할 수 있습니다. 이런 문제는 운영 장애로 바로 이어집니다.
실무 흐름
가용재고 확인과 할당 저장을 같은 트랜잭션으로 묶고, 필요한 경우 행 잠금 또는 낙관적 락을 사용합니다. PDA 이벤트는 멱등 키로 중복 반영을 막습니다.
개발자가 주의할 점
조회 후 저장 사이에 다른 요청이 끼어드는 상황을 항상 가정해야 합니다. 단순 프론트엔드 비활성화로는 서버 동시성을 막을 수 없습니다.
예시
현재 가용재고 5개에 주문 4개 요청이 동시에 두 번 들어오면 둘 다 성공해서는 안 됩니다. 첫 요청 처리 후 두 번째 요청은 부족으로 실패해야 합니다.