Github 링크
https://github.com/ghrltjdtprbs/MSA_FirstComeStore/commit/099abad3b9e1e2d7b23872743ba9bf2a98901f53
분산락 적용 블로그 링크
https://velog.io/@ghrltjdtprbs/%EB%B6%84%EC%82%B0%EB%9D%BD
락이 잘 작동하는지 확인하기 위해 JMeter를 사용하여 동시에 많은 주문 요청을 보내는 테스트를 진행하였다.
실제 테스트를 수행하기 전에 테스트 결과를 예측해보자.
구매 수량이 1인 2000개의 주문 스레드가 거의 동시에 주문 API를 호출할 예정이다.
만약 동시성 제어가 잘 되어있다면, 먼저 요청된 500개의 API만 성공하고, 그 후의 요청은 모두 409 에러로 실패하여야 한다.(재고 부족 예외처리)
주문 API는 장바구니 기능인 wishlist의 id를 받아 wishlist안의 상품과 수량대로 주문이 수행되는 API이다.
신뢰성 있는 테스트를 위해서는 주문 API의 파라미터(wishlistId)를 동적으로 변경해야한다.
성공한 요청: 총 500개의 주문 요청이 성공적으로 처리
실패한 요청: 재고가 부족할 때 발생한 409 에러는 예상한 결과로, 재고 부족으로 인한 예외 처리
위의 테스트로 분산 락을 통해 대규모 서비스에서 선착순 주문 기능을 안정적으로 처리할 수 있음을 확인하였다.
product-service의 재고 반영도 성공적으로 처리되었음을 확인할 수 있다.