한국이 처음이라도, 한국어를 몰라도
제약없이 즐기는 한국 로컬여행
한국 로컬 관광정보 플랫폼
- 현지인들에게 인기 있는 장소를 구석구석 수록
- 한국어와 문화를 몰라도 만족스러운 여행 경험 선사할 수 있는 정확하고 자세한 정보를 영어로 제공
- 오번역을 포함한 검색이 가능
- 음식의 재료 및 제조 과정 등 정확하고 자세한 정보 제공
- 검색한 음식을 이용할 수 있는 관련 식당정보 제공
- 예약 대행 서비스
- 의사소통의 어려움 없이 간편하게 식당, 축제 예약
- 찜하기 기능
- 리뷰 작성 및 관리
- 프로필 수정
JWT
와Spring Security
를 이용해서Access-Token
을 발급하는 단순한 인증 프로세스를 넘어서Access-Token
만료 시 재발급 자동화를 위한Refresh-Token
도입Refresh-Token
은 엑세스가 빈번한 데이터이므로 다른 DB들보다 빠르고 가벼운 인메모리 DB인Redis
를 이용해 저장Refresh-Token
과 관련된 필터를 개별적으로 구현하여 단일 책임 원칙(SRP)을 지향Refresh-Token
의 도입으로Access Token
의 유효기간을 단축해 정보 유출 위험을 줄여 보안성 강화- 빈번한 로그인 만료로 인해 사용자의 서비스 이용 흐름을 방해하지 않아 사용자 편의성 증대
RefreshTokenFilter
,RedisConfig
,RedisUtil
,JwtProvider
참고
- 본 프로젝트는 관광정보 플랫폼이므로 컨텐츠, 리뷰 등 이미지 처리가 잦기 때문에 이미지들을 프로젝트 내부에 저장할 경우 용량과 관리에 대한 이슈 발생 가능성이 매우 높음
- S3를 이용한 이미지 저장/삭제 로직을 구현하여 리뷰 작성/수정, 프로필 이미지 수정 등의 API에 적용
- 이미지 저장 용량 이슈 저하 및 관리 용이성, 접근성 증대를 기대
S3Config
,ImageS3Service
참고
- Business 예외에 대한 적절한 API
Error Code
와Error Message
정의 - 유효성을 검증하는 서비스 클래스를 따로 만들어 코드 재사용성 증대
- 발생 가능한 문제 상황에 대한 꼼꼼한 예외 처리
- 리뷰 작성 시 작성하려는 장소 유형에 따라 예약 상태가 완료여야 하거나, 리뷰 작성 날짜가 예약 날짜보다 뒤여야 하는 등의 다양한 조건 처리
- 이미 처리된 요청에 대한 적절한 예외 처리
- 존재하지 않는
place
에 대한 적절한 예외 처리 외 다수
- 이를 통해 프로그램 실행 중 오작동이나 비정상적 종료를 방지하는 효과를 기대
ErrorCode
,BusinessException
,ValidContentsService
,CheckDuplicateService
참고
- 본 프로젝트는
Setter
를 사용하지 않고 개발되었으므로Builder
를 활용한 Test Helper를 작성하여 효율적인 Test code 작성 - test에 필요한
Repository
,Service
,TestHelper
이외의 다수 세팅을IntegrationTest
에 작성하고 상속을 이용하여 Test code 작성 Spring Rest Docs
를 이용한 API 문서 자동화 시스템 구축ContentsTestHelper
,PlaceTestHelper
,IntegrationTest
외 다수 참고