기존 구조는 @PostConstruct로 워커를 띄워 ScheduledExecutorService를 이용해 Redis 큐를 주기적으로 감시하는 Polling 방식이었다. 하지만 이 방식에는 다음과 같은 단점이 있었다.항상 워커가 실행 중이기 때문에 Redis 큐에 아무
선착순 쿠폰 발급 시스템을 구현하면서 가장 중요한 요구사항은 정해진 수량만큼만 쿠폰이 발급되어야 한다는 것이었다. 동시에 수천 명의 사용자가 몰릴 수 있기 때문에 동시성 문제를 해결하지 않으면 DB에 초과 발급이 발생할 수 있다. 초기에는 synchronized 키워드