공부 내용을 정리하고 앞으로의 학습에 이해를 돕기 위해 작성합니다.
이번 시간에는 프로젝트 설계를 해보고 어떤 기술 스택을 사용할지 어떤 기능들이 구현되어야 할지 살펴본다.
Pharmacy Recommendation Process
- 주소 변환
사용자가 입력한 주소는 문자열 기반이기 때문에, 이를 위치 기반 데이터인 위도와 경도로 변환해야 한다. 이 과정에서는 Kakao API를 이용한다. - Redis를 통한 성능 최적화
각 요청마다 DB에서 약국 현황 데이터를 조회하고 계산하는 대신, Redis를 사용하여 캐싱을 통해 성능을 최적화한다. - 약국 현황 데이터 조회 및 거리 계산
Redis나 DB에 저장된 약국 현황 데이터를 조회하고, 하버사인 포뮬러 알고리즘을 이용해 거리 계산을 수행한다. 이후 결과를 소팅하여 가까운 약국을 추출한다. - Shorten URL 생성
결과값은 Shorten URL을 생성하기 위해 사용되며, 고객에게 전달된다.
Direction Shorten Url Process
- 길안내 요청
고객이 길안내를 요청하면, 인코딩된 ID값과 매핑된 결과값들을 조회한다. - URL 리다이렉트
조회된 결과값을 바탕으로 고객에게 카카오 길안내 URL을 생성하여 리다이렉트하는 프로세스를 진행한다.
- Spring Data JPA를 이용한 CRUD 메서드 구현
- Spock를 이용한 테스트 코드 작성
- Testcontainers를 이용하여 독립 테스트 환경 구축
- 카카오 주소검색 API 연동하여 주소를 위도, 경도로 변환
- 추천 결과를 카카오 지도 URL로 연동하여 제공
- 공공 데이터를 활용하여 약국 현황 데이터 개발
- Handlebars를 이용한 간단한 View 제작
- Docker를 사용하여 다중 컨테이너 애플리케이션 구축
- 애플리케이션을 클라우드 서비스에 배포
- Spring retry를 이용한 재처리 구현 (카카오 API 네트워크 오류 등)
- base62를 이용한 shorten URL 개발 (길안내 URL)
- Redis를 이용하여 성능 최적화
사용 기술
- JDK 17
- Spring Boot 3.3.3
- Spring Data JPA
- Gradle
- Handlebars (프론트엔드 개발을 빠르게 하기 위해 사용)
- Lombok
- Docker (클라우드 서비스를 빠르게 배포하기 위해 다중 컨테이너 사용)
- AWS EC2
- Redis
- MariaDB
- Spock (JUnit에 비해 간편하게 테스트 코드를 작성할 수 있음)
- Testcontainers (독립적인 환경에서 테스트 코드를 작성하기 용이함)
'BackEnd > Project' 카테고리의 다른 글
[PharmNav] Ch04. 개발 및 운영 환경 분리와 Docker를 이용한 다중 환경 구성 (1) | 2024.09.02 |
---|---|
[PharmNav] Ch04. 개발 환경 구성 & 도커 (2) | 2024.09.01 |
[PharmNav] Ch02. 요구사항 분석 (0) | 2024.09.01 |
[RealPJ] Ch04. Github Action을 이용하여 빌드시 동적으로 변숫값 주입하기 (0) | 2024.09.01 |
[RealPJ] Ch04. build.gradle에서 주의할 점 (0) | 2024.09.01 |