
실습으로 배우는 선착순 이벤트
·
study/인프런
요구사항선착순 100명에게 할인쿠폰을 제공하는 이벤트를 진행하고자 한다.이 이벤트는 아래와 같은 조건을 만족하여야 한다.선착순 100명에게만 지급되어야한다.101개 이상이 지급되면 안된다.순간적으로 몰리는 트래픽을 버틸 수 있어야합니다.Race condition 해결방법1. synchronizedsynchronized는 서버 인스턴스가 여러개일 경우 race condition이 발생할수 있다.2. 데이터베이스 락데이터베이스 락을 걸 경우 쿠폰 조회부터 완료까지 락이 걸리게 되므로 성능 저하가 발생할 수 있다예를들어, 쿠폰 저장까지 2초가 걸린다면 2초만큼 계속 락이 발생3. Redis쿠폰 갯수만 정확하게 관리하면 되므로 redis incr 명령어를 활용해 쿠폰 갯수 관리 (redis는 싱글스레드로 돌아가..