안녕하세요.
선생님의 강의를 수강하고 MSA프로젝트를 수행하던 중 의문이 생겨 질문드립니다.
상황 :
- order-service가 A, B 두개의 애플리케이션으로 운영되고 있습니다.
- 두개의 서비스는 단일 DB를 공유합니다.
- 주문 수량만큼 아이템의 수량이 감소됩니다.
- 아이템의 수량은 1개가 남아있습니다.
- 이때 A, B가 동시에 아이템을 한개씩 주문합니다.
이슈 :
1. A의 서비스 로직에서 아이템의 수량이 주문 가능함을 확인
2. B의 서비스 로직에서 아이템의 수량이 주문 가능함을 확인
3. A는 주문 로직을 수행, 아이템의 수량은 0이 됨
4. B는 2.에서 주문 가능함을 확인했기 때문에 주문 로직을 수행
5. B는 주문 할 수 없는 상황임에도 불구하고 주문이 완료됨
2번을 실행할 때 modified_date를 저장하고 있다가 4번에서 modified_date를 비교하여
2번과 4번 사이에 데이터가 수정되었는지를 확인하는 방법도 생각해보았는데요.
그 사이에 데이터가 수정되었다고 해서 매번 요청을 거절하는 것도 문제가 있다고 생각이 됩니다.
시간이 굉장히 짧기 때문에 이런 일이 일어날까 싶기도 한데...
실무에서는 어떻게 생각하시는지, 어떻게 해결하시는지 궁금합니다.
강의 내용에 다소 벗어난 내용이라 죄송하지만ㅠㅠ
선생님의 답변을 듣고 싶어 질문 드립니다.
감사합니다.
안녕하세요. 이민준님
다음을 참고해주세요.
https://www.inflearn.com/questions/17498
https://www.inflearn.com/questions/228082
감사합니다.
답글