본문 바로가기
반응형

개발/시스템 설계2

간단한 distributed-lock 구현하기 개발을 하다보면 데이터 정합성이 굉장히 중요한경우들이 발생한다. 간단한예로는 1인당 구매수량 제한이 걸려있는 상황이 있을 수 있다. 1인당 상품 1개밖에 구매하지 못한다고 했을때 2개이상을 구매하게 되면 절대 안된다. 우리는 아래와 같은 코드를 작성할 수 있을 것이다. fun order(userId: Long, productId: Long) { val alreadyBuy = orderRepository.findByUserId(userId, productId) if(alreadyBuy) { throw AlreadyBuyException("$userId is already buy") } orderRepository.save(userId, productId) } 언뜻 보기에는 위코드에는 전혀 문제점이 없어보인.. 2022. 4. 10.
선착순 쿠폰 이벤트는 어떻게 구현을 해야할까 ? (1) 이 게시글은 주니어개발자의 시야로 작성된 글입니다. 이 방법보다 좋은방법이 무수히 많을 수 있습니다. 비난보다는 좋은방법을 댓글로 알려주신다면 고민해보고 공부할 수 있을 것 같습니다 🙂 선착순 쿠폰이벤트 설계 는 서버개발자 면접을 보다보면 쉽게 마주칠 수 있는 문제중 하나이다. 면접뿐만 아니라 실제로 업무를 하다가도 한번쯤은 마주칠 문제이다. 이 때 중심적으로 봐야할건 크게 2가지가 있다고 생각한다. 동시성 트래픽 대부분의 선착순 쿠폰이벤트는 선착순 x개 를 주는 이벤트이다. 그렇다보니 특정시간대에 접속자(요청량)가 늘게 되고 이것을 버틸 수 있는 인프라가 준비되어야 할것이다. 두번째는 정확하게 x개의 쿠폰만 발급 되어야 하기 때문에 동시성을 고려하여 설계해야한다. 동시성이 고려되지 않는다면 x개 이상의.. 2021. 11. 9.