프로젝트/배달 REST API

📌 1. 문제상황 주문API에 대해 검토하던 중, 주문 상태 변경에 대해 데이터 경쟁 문제가 발생할 수 있다고 판단하였다. 마치 멀티쓰레드 환경에서 동시성 문제가 발생하는 것 처럼, 주문수락과 주문취소가 동시에 발생했을 때 운이 좋지 않으면 사용자에게는 주문 취소 요청이 되었다고 응답될 것이고, 음식점은 주문 취소된지 모르고 수락하여 처리해버리는 사태가 발생할 수 있다. 📌 2. 분석 실제로 이러한 데이터 경쟁문제가 발생하는지 확인하는 과정이 필요했다. 그래서 아래와 같이 주문수락 요청 후 10초정도 대기하면서, 주문 취소요청을 수행하도록 하였다. 1. 판매점 계정으로 주문 수락 하기 -> 2. 주문 수락 요청 후 10초안에 주문 요청자 계정으로 주문 취소하기 @Transactional public Or..
Security의 crypto라이브러리 사용하기 비밀번호 암호화를 위한 라이브러리 추가 회원 도메인의 회원가입 기능을 구현할 때, 비밀번호를 그냥 저장하기보다는 암호화를 해서 저장하면 보안성이 더 뛰어날 것이다. 암호화를 위해서 제공되는 여러 라이브러리들이 있는 것 같다. 대표적으로 crpto라이브러리가 있는데, spring-security모듈에도 포함되어있기 때문에, spring-security 의존성을 추가하였다. 우선 spring-security라는 모듈을 추가할 때, spring-boot의 자동설정 기능이 적용이 된다. 나는 여기서 암호화 기능만을 우선 적용하고 싶고, 별도의 security기능을 적용시키지 않을 예정이므로, 자동으로 설정되어있는 기능들중 필요없는 기능은 초기화해주던가 새로 설정을..
Food id값을 통해서 DB의 Food를 가져오는 서비스 로직이다. 이때 id에 해당하는 Food가 존재하지 않으면 예외를 발생시키도록 하였다. public FoodResponse get(Long foodId) { final Food food = foodJpaRepository.findById(foodId).orElseThrow(() -> new IllegalArgumentException(foodId + "id의 Food가 존재하지 않습니다."); } 이 상태로 어플리케이션을 실행시키고 존재하지 않는 id의 Food를 조회하도록 요청하면 아래와 같이 에러가 발생한다. 별도로 try-catch처럼 예외가 발생했을 때 어떻게 처리해 줄지 구현하지 않았기 때문이다. 응답데이터로는 아래처럼 받을 수 있는데,..
Don't stop 훈
'프로젝트/배달 REST API' 카테고리의 글 목록