outbox 패턴 적용#36
Closed
mungsil wants to merge 89 commits into
Closed
Conversation
-Google Place API를 Kakao Local API로 대체하였습니다. Kakao Local API를 이용하여 장소에 대한 정보를 가져옵니다. - 장소 정보를 RDB가 아닌 NoSQL에 저장합니다.
- 기존 ODsay API가 수행하던 장소 간의 이동 시간 및 거리 정보를 Google Distance Matrix API가 수행하도록 합니다.
- 변경 전: 스레드 슬립 - 변경 후: 세마포어와 스케줄러
- 경위도가 같은 장소에 대한 API 중복 호출 방지
- 구글 API 응답의 status 필드를 매개로 유효한 응답인지 확인하는 로직을 추가하였습니다. - 패키지 이름 및 경로를 변경하였습니다.
- 유효하지 않은 응답임이 확인되면 예외를 throw 하는 로직을 ODsay 어댑터에 작성하였습니다.
- 비동기 논블로킹 방식으로 외부 API 호출 - 외부 클래스로 분리된 최적 여행 경로 계산 메서드 호출 - 서로 다른 장소가 같은 경위도를 가지는 문제를 해결하기 위해 TravelCatalog class 대신 Location class를 이용
- 현재 여행 계획 완료 시 [알림 전송 -> 유저가 조회]하는 플로우입니다. - 다음과 같은 이유로 유저 기능의 필요성을 느꼈습니다. - 알림을 위해 필요한 FCM 토큰은 유저 단위로 관리하는게 편리함 - 여행 계획 조회 API 구현 방식의 변화(동기 -> 비동기 알림)에 따라, '요청했던 여행 계획 리스트' 기능이 요구됨. 그러나 해당 조회 기능에 FCM 토큰을 식별자로 사용하는 것은 부적절하다고 생각됨.
- 변경 전: A -> B 하위 경로 구하기 - 변경 후: 여러 하위 경로를 포함하는 최종 경로 구하기
- 코드 내용: TransitRoute 이벤트 발생 시 장소 간 대중 교통 경로를 구함. 이때 '장소'는 '여행 코스'에 소속된 여행 장소임. 해당 소속 관계를 나타내기 위해 여행 코스를 배치 단위로 정의하고, 이벤트 소비 완료 시 배치 상태를 업데이트하는 코드를 작성함.
- 낮은 처리량의 외부 API를 호출하는 여행 코스 이동 경로 안내 API의 처리량 및 응답 속도 저하 문제 발생 - push 모델로 전환하여 UX 저하 방지 - 외부 API 호출 속도를 제한하여 429 에러 발생 방지
# Conflicts: # src/main/java/com/example/mohago_nocar/plan/presentation/v1/TravelPlanControllerV1.java
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
📄 PR 요약
outbox 패턴을 적용하여 메시지 유실을 방지했습니다. 메시지 소비 전 소비 기록을 체크하여 멱등성을 보장했습니다.
📋 관련 이슈
관련된 이슈 번호를 링크해주세요. 예: #123
🛠️ 변경 사항 설명
자세하게 변경된 사항을 설명해주세요.
📷 스크린샷
변경 사항을 시각적으로 보여주는 스크린샷을 첨부해주세요. 이미지를 첨부하는 방법은 다음과 같습니다:
📄 추가 정보
추가로 제공하고 싶은 정보가 있다면 작성해주세요.
리뷰어들에게 꼼꼼하게 리뷰받고 싶은 부분이나, 구현하면서 어려웠던 부분,
구현하면서 새로 알게 된 부분 등등 리뷰어의 이해를 돕기 위해 필요한 내용을 적어주세요.