오늘은 어제 저녁에 멘토님과 기술 멘토링을 바탕으로 프로젝트의 앞날을 정리해보고자 한다
우린 ResponseEntity안에 굳이 ApiResponse 커스텀 클래스를 감싸서 응답값을 반환하는것에 굳이..? 라는 의문을 제기하고 있었다
왜냐하면 msg, statusCode, data를 반환하는 ApiResponse인데 사실 ResponseEntity에서도 충분히 해당 정보들을 담아서 보낼 수 있기 때문이다. 또한 RESTFUL API에 가장 근접하게 설계할 수 있다고 생각했다.
우린 충분한 논의 끝에 ResponseEntity만을 사용해서 응답값을 반환하기로 했다
우린 service인터페이스와 그 구현체인 ServiceImplV1 클래스를 버전별로 관리하며 비교 분석하고자 하는데에 그 목표를 두고 있었다. 복잡성의 증가나 테스트 코드의 압박은 느껴질테지만 대신 버전관리를 통한 비교분석에 의의를 두고 도입해보고 싶었기에 멘토님에게도 좋은방식인것 같다고 칭찬 받았다.
나의 가장 주된 고민은 바로 동시성 처리를 어떻게 할 것인가 였다. 지금 구현하고자 하는 "핫딜" 기능은 할인하는 품목을 한시적으로 공개하여 만약 매력있는 물건이 올라온다면 순간적인 트래픽이라던가 동시에 요청이 들어왔을때 서버에서 처리를 해줘야만 한다.
예를 들면 재고가 1인 한정 매물을 2명(혹은 100명일수도 있는거다)의 고객이 동시에 요청했을때 구매로 인해 물품 재고 감소 로직 decreaseDealQuantity메소드가 재고를 0 이하로 떨어뜨렸을때 인스턴스에 문제가 생기는것
낙관적 락 혹은 비관적 락 JPA를 걸어서 처리한다