Skip to content

Step3-kakao-tech-campus/Team6_BE

Folders and files

NameName
Last commit message
Last commit date
Sep 22, 2023
Nov 11, 2023
Nov 11, 2023
Nov 10, 2023
Nov 7, 2023
Nov 11, 2023
Nov 11, 2023
Nov 11, 2023
Nov 6, 2023
Sep 22, 2023
Sep 22, 2023

Repository files navigation

한국이 처음이라도, 한국어를 몰라도

제약없이 즐기는 한국 로컬여행

TripKo

한국 로컬 관광정보 플랫폼

서비스 소개

1️⃣다양한 관광 정보 제공

  • 현지인들에게 인기 있는 장소를 구석구석 수록
  • 한국어와 문화를 몰라도 만족스러운 여행 경험 선사할 수 있는 정확하고 자세한 정보를 영어로 제공

2️⃣한국 음식 검색 기능

  • 오번역을 포함한 검색이 가능
  • 음식의 재료 및 제조 과정 등 정확하고 자세한 정보 제공
  • 검색한 음식을 이용할 수 있는 관련 식당정보 제공

3️⃣예약하기

  • 예약 대행 서비스
  • 의사소통의 어려움 없이 간편하게 식당, 축제 예약

4️⃣사용자 편의 기능

  • 찜하기 기능
  • 리뷰 작성 및 관리
  • 프로필 수정

개발 환경

💡BackEnd

  • Language & Framework

  • DataBase

  • Image Storage

  • Build tool & Dependency

💡FrontEnd

  • Language & Framework

💡Deplotment

구성도

구성도

최종 ERD

  • 전체 구조

    image

  • 플레이스 관련

    image-5

  • 음식 관련

    image-4

  • 주소 관련

    image-2

  • 회원 관련

    image-3

  • 파일 관련

    image-6

주안점을 두고 개발한 기능

1️⃣Redis를 이용한 Refresh-Token 구현

  • JWTSpring Security를 이용해서 Access-Token을 발급하는 단순한 인증 프로세스를 넘어서 Access-Token 만료 시 재발급 자동화를 위한 Refresh-Token 도입
  • Refresh-Token은 엑세스가 빈번한 데이터이므로 다른 DB들보다 빠르고 가벼운 인메모리 DB인 Redis를 이용해 저장
  • Refresh-Token과 관련된 필터를 개별적으로 구현하여 단일 책임 원칙(SRP)을 지향
  • Refresh-Token의 도입으로 Access Token의 유효기간을 단축해 정보 유출 위험을 줄여 보안성 강화
  • 빈번한 로그인 만료로 인해 사용자의 서비스 이용 흐름을 방해하지 않아 사용자 편의성 증대
  • RefreshTokenFilter, RedisConfig, RedisUtil, JwtProvider 참고

2️⃣S3를 이용한 이미지 관리 (멘토님 권장사항 반영)

  • 본 프로젝트는 관광정보 플랫폼이므로 컨텐츠, 리뷰 등 이미지 처리가 잦기 때문에 이미지들을 프로젝트 내부에 저장할 경우 용량과 관리에 대한 이슈 발생 가능성이 매우 높음
  • S3를 이용한 이미지 저장/삭제 로직을 구현하여 리뷰 작성/수정, 프로필 이미지 수정 등의 API에 적용
  • 이미지 저장 용량 이슈 저하 및 관리 용이성, 접근성 증대를 기대
  • S3Config, ImageS3Service 참고

3️⃣예외 및 오류 처리를 통한 서비스 개선

  • Business 예외에 대한 적절한 API Error CodeError Message 정의
  • 유효성을 검증하는 서비스 클래스를 따로 만들어 코드 재사용성 증대
  • 발생 가능한 문제 상황에 대한 꼼꼼한 예외 처리
    • 리뷰 작성 시 작성하려는 장소 유형에 따라 예약 상태가 완료여야 하거나, 리뷰 작성 날짜가 예약 날짜보다 뒤여야 하는 등의 다양한 조건 처리
    • 이미 처리된 요청에 대한 적절한 예외 처리
    • 존재하지 않는 place에 대한 적절한 예외 처리 외 다수
  • 이를 통해 프로그램 실행 중 오작동이나 비정상적 종료를 방지하는 효과를 기대
  • ErrorCode, BusinessException, ValidContentsService, CheckDuplicateService 참고

4️⃣ 효율적인 Test 구현

  • 본 프로젝트는 Setter를 사용하지 않고 개발되었으므로 Builder를 활용한 Test Helper를 작성하여 효율적인 Test code 작성
  • test에 필요한 Repository, Service, TestHelper 이외의 다수 세팅을 IntegrationTest에 작성하고 상속을 이용하여 Test code 작성
  • Spring Rest Docs를 이용한 API 문서 자동화 시스템 구축
  • ContentsTestHelper, PlaceTestHelper, IntegrationTest 외 다수 참고

배포 링크 모음