-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
enhancementNew feature or requestNew feature or request
Description
관련 PR
PR 내용 요약
주요 변경 지점
1. 루아 스크립트
음수 재고막기DECR명령어를 쓰면 재고가 0일 때 요청이 들어오면 -1, -2로 계속 내려감 → 애플리케이션에서 재고 관련 예외("재고는 0보다 작을 수 없다")를 던져도 이미 Redis 데이터는 음수가 됨재고의 1차 저장소로 Redis 를 사용중인 만큼, 0보다 작은 상태를 갖도록 하는 것은 재고 정합성에 맞지 않다고 생각함- 또한, 재고가 음수가 되어 -100 이 된 이후에
주문 취소로 인한 재고 복구요청이 들어오면, 재고 정합성에 맞지 않게됨 - Lua Script를 사용하면 **'현재 재고가 요청 수량보다 클 때만 차감한다'**는 If 문을 Redis 안에서 수행할 수 있어, 데이터가 음수로 떨어지는 것을 물리적으로 막을 수 있음
→ Lua Script 를 사용하지 않으면 decr 수행 이후 결과가 0 미만이면 다시 incr 을 해줘야 하는데, 선착순 주문이라는 트래픽이 몰리는 환경에서 쓸데없는 연산이 추가되는 것이므로, Lua Script 를 사용하는 것이 좋을 것으로 판단
2. StockQuantity VO 클래스
- Stock 도메인 엔티티가, id 식별자가 null 인 상태로 생성되는 문제가 있었음
Integer quantity필드를StockQuantityVO 클래스로 매핑하여, 재고 수량에 대한 도메인 규칙을 관리하도록 함
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request