선착순 동시성
Optimistic Lock으로 선착순 한 명 쿠폰을 만들어보자
Optimistic Lock으로 선착순 한 명 쿠폰을 만들어보자
2021.08.28개요 사내에서 쿠폰 등록 이벤트를 만들어야하는 상황이 있었다. 쿠폰은 고유의 쿠폰번호가 있으며, 해당 쿠폰은 유저당 하나만 등록할 수 있었다. (대표적으로 스타크래프트 cd키라고 생각하자). 고민했던 점 - 확장성: 쿠폰은 한 번만 등록할 수 있지만, 언제 선착순 최대 x명으로 변경될지 모른다 - 동시성: 동시에 x명의 유저들이 쿠폰을 등록한 경우 결론 - 확장성: 쿠폰의 최대 사용 개수랑, 현재 남은 쿠폰 물량으로 나눴다. - 동시성: 현재 선착순 한 명에서 Redis를 사용하면 오버 엔지니어링이라고 판단됐다. 우선 optimistic lock을 이용하고, 기획이 확장되면 필드를 제거하고 Redis를 이용한 추가 설계를 고려할 수 있다. 간단한 설계 예시 실제로는 유저가 쿠폰을 등록하는 것이지만 동시성..