1. 한 사람의 사용자가 한 권의 책에 대해 여러권을 대여할 수 없어야 한다. 2. 여러사람이 단기간에 대여했을 경우 재고가 0이하로 떨어지게 되는 것을 막하야 한다.
문제의 발생상황을 순서대로? 나열해보자면
1. 한 명의 사용자가 도서 연속 대여가 가능했다 2. 여러명의 사용자가 재고가 1인 도서를 대여할 수 있었다.
각각의 해결 방법에 대해서는
1. 사용자ID, 도서ID를 복합 Key로 걸어 해결하였다.
2. Lock을 걸어 해결하였다.
새로운 문제점이 발생하였다!
1. Thread Pool을 5로 설정해두어 5명의 사용자가 동시에 들어가 exception이 발생!
2. 위와 같은 이유로 DeadLock이 발생!
Jmeter 테스트 결과 에러가 종종? 대부분 발생하였다.
Isolation Level도 변경해 보았지만 에러가 나는 것은 변하지 않았고, 마지막에 들던 생각은 실제 사용자 입장에서 서버 타임아웃으로 튕겨나가는 경우도 있으니 에러가 나는게 당연한게 아닐까? 라는 생각까지 하게 되었다.