| 김원기 | 이정빈 | 박현도 |
|---|---|---|
| @TrendFollow | @jungbin97 | @att08 |
| BE | BE | BE |
2024.09.05 ~ 2024.09.20
- 회원 : 가입(등록), 로그인, 개별조회, 권한수정, 탈퇴, 전체조회(검색)
- 배송 담당자: 등록, 개별조회, 타입수정, 삭제 전체조회(검색)
- 애플리케이션 초기 시점 전국 17 개 허브 생성
- 허브 정보 수정 및 삭제 기능 지원
- 허브 관리에 대한 권한별 접근 제어 구현
- 업체 등록, 수정 시 업체 주인의 권한인 사람 등록, 수정 가능 (마스터, 허브 관리자 대리 등록, 수정 가능)
- 업체 삭제 시 등록된 상품 같이 삭제
- 상품 등록, 수정 시 업체 주인의 권한인 사람 등록, 수정 가능 (마스터, 허브 관리자 대리 등록, 수정 가능)
- AI 답변 받은 내용 조회 구현
- AI 답변 내용 삭제 (마스터만 가능)
- 허브 경로 생성 - 애플리케이션 초기 시점 허브 리스트 조회 후 허브 간 이동 경로 생성 및 저장
- 주문 : 주문 CRUD - 주문 생성 시 주문 상품과 배송, 배송 상세 정보를 함께 생성하며, 주문 상품과 배송 상세 정보는 주문 정보와 함께 조회됩니다.
- 주문상품 : 주문상품 CRUD - 주문 상품은 주문 생성 시 함께 생성되며, 상품 서버에 재고 확인 후 주문 상품 생성합니다.
- 배송 : 배송 CRUD - 배송은 주문 생성 시 함께 생성되며, 배송 경로 및 배송 담당자 정보와 함께 조회됩니다.
- 배송 경로 : 경로 조회 - 허브 간 이동 경로에 따라 최적의 배송경로 순서를 조회합니다.
- 각 도메인 별 검색은 QueryDSL을 활용하여 동적 쿼리작성이 가능하도록 구현하였습니다.
- 검색 조건 및 정렬(생성일 순, 수정일 순) 기능을 제공하며 페이징 처리를 통해 반환되는 데이터 양을 제한하였습니다.
- 정렬, 검색어 등에 따른 동적 쿼리 작성을 위하여 QueryDSL 도입하여 활용했습니다.
◻ Swagger
- 프론트엔드와 정확하고 원활한 소통을 위하여 스웨거를 도입하여 적용하였습니다.
- 연속된 요청으로 인한 데이터베이스 병목 현상을 해소하기 위해 다음과 같은 방법을 적용했습니다
- DB 부하 감소 및 응답 속도 향상: Redis 캐시를 활용하여 데이터베이스의 부하를 줄이고 응답 속도를 개선했습니다. 주로 세션 관리 및 빠른 데이터 접근을 위한 캐시로 활용했습니다.
- 데이터 불일치 문제 해결: Look Aside와 Write-Through 방식을 적용하여 데이터 불일치 문제를 효과적으로 해결했습니다.
- MSA 기반 서비스의 확장성과 효율성을 높이기 위해 도입하였습니다.
- Client의 요청을 적절한 서비스로 라우팅하고, 필요에 따라 부하를 분산시켜 서비스의 안정성을 높였습니다.
- 인증된 토큰을 검증하여 사용자의 정보를 헤더에 담아서 요청받은 서비스로 라우팅 하도록 설정했습니다.
- 허브 간 이동정보 생성 시 외부 API 호출로 인한 장애를 방지하기 위해 도입하였습니다.
- 3회 이상의 재시도로 인한 장애를 방지하고, 그 이상 장애 발생 시 보상 로직을 통해 경로에 데이터에 대한 정합성 유지 및 서비스 안정성을 높였습니다.
- Zipkin 을 활용하여 MSA에서 분산 추적 기능을 구현하였으며, 각 서비스 간의 호출 흐름을 시각화하여 병목 현상 등을 빠르게 확인 할 수 있도록 하였습니다.
- Gemini AI: 매일 오전 8시 허브별 주문 정보를 분석하고, 이를 요약하여 공통 배송 담당자에게 슬랙 메시지로 자동 전송하는 기능을 구현했습니다. AI 기반의 데이터 처리 및 요약 기능을 통해 업무 효율성을 높였습니다.
- 날씨 API: 매일 오전 6시 허브 별 날씨 정보 데이터를 번역하여 각 업체 배송 담당자의 슬랙으로 담당 허브 날씨 데이터를 전송하는 기능을 구현했습니다.
- NAVER Direction 5: 허브 간 실제 이동 거리, 시간을 계산하여 경로 최적화 알고리즘을 적용하여 배송 효율을 높였습니다.
- 서비스의 보안성을 높이기 위해 도입하였습니다.
- Auth 서비스 - 사용자의 정보를 입력받아 사용자 정보를 인증하여 유효한 토큰을 발급했습니다.
- Other(요청 받은) 서비스 - Gateway를 통해 검증된 사용자의 정보를 토대로 사용자 정보를 검증하고 인가처리 했습니다.
Java 17 SpringBoot 3.3.3 QueryDSL 5.0.0