Skip to content

여행지, 축제 관련 리뷰 서비스 & 지역 팔로우를 통한 알림 서비스

Notifications You must be signed in to change notification settings

JaegeonYu/yesterday-s-Trip

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Yesterday's Trip

관광지, 축제에 관한 지도 기반 웹 리뷰 서비스입니다.

관광지, 축제의 평점 확인, 리뷰 작성 및 조회, 평점 높고 거리가 가까운 여행지들을 추천합니다.

관심있는 지역을 팔로우하고 새로운 관광지 추가시 실시간 알림도 받아볼 수 있습니다.


사용한 메인 라이브러리

  • Java 8
  • Spirng Boot 2.7.17
  • Spring Security/JWT
  • MySQL
  • Redis
  • MyBatis
  • AWS S3, EC2
  • Docker

프로젝트 실행

  • mysql

    • db.url
    • db.port
    • db.db
    • db.username
    • db.password
  • redis

    • redis.host
    • redis.port
  • 공공 데이터 API

    • api.data
  • Naver API

    • Clover
      • api.naver.id
      • api.naver.secret
      • api.naver.url
    • Map
      • api.naver.map.url
  • S3

    • api.s3.id
    • api.s3.secret
    • api.s3.url
    • api.s3.bucket
 mvn clean compile package
 
 java -jar -Dapi.data=api.key
-Dapi.naver.id=api.naver.ic -Dapi.naver.map.url=api.naver.map.url
-Dapi.naver.secret=api.naver.secret -Dapi.naver.url=api.naver.url
-Dapi.s3.id=s3.id -Dapi.s3.secret=s3.secret -Dapi.s3.url=s3.url
-Ddb.password=db.passowrd -Ddb.port=db.port -Ddb.url=db.url -Ddb.username=db.usernmae -Dmail.password=mail.password -Dmail.username=mail.usernmae -Dredis.host=redie.host -Dredis.port=redis.port target/*.jar 
 

배포 및 아키텍처

메인 화면

지역 팔로잉

관심있는 지역을 팔로우 할 수 있으며, SSE(Server Sent Event)를 활용해서 팔로우한 시도의 새 컨텐츠의 알람 조회 할 수 있습니다.

컨텐츠 조회, 리뷰 작성

지도 페이지에서는 '시도, 구군, 컨텐츠' or 키워드 조회 조회한 컨텐츠에 대한 리뷰 작성을 할 수 있습니다.

시퀀스 다이어그램

지역 팔로잉 & 실시간 알림

회원가입

로그인

알림 로직

문제 & 해결

쿼리압축

블로그 포스팅

  • 서버와 DB 사이의 네트워크 통신 지연되는 상황과 DB 시스템의 쿼리최적화 부담을 줄여 성능을 높이기 위해 쿼리 압축을 진행했습니다.
    • N+1 문제 해결을 위한 Mybatis Collection
    • INSERT INTO ~ SELECT
    • Mybatis 동적쿼리

SSE 실시간 알림

블로그 포스팅

  • 서버에서 클라이언트로 단방향 알림푸쉬 통신을 위한 SSE Connection 기술을 사용했습니다
    • polling, long polling, websocket, sse 등의 기술 중 원하는 기능 구현에 맞는 기술을 조사하고 선택했습니다.
    • 메모리로 관리하는 SSE Emitter의 소멸과 재생성 콜백은 생성과 다른 쓰레드에서 진행되기 때문에 Thread Safe한 자료구조를 사용했습니다.

정확하고 빠른 협업

  • 제가 설계한 백엔드 로직을 API 명세서만으로 설명하면서 프론트엔드 팀원과 구현이 다른 방향으로 이어져 협업에 어려움이 있었습니다. 시퀀스 다이어그램을 사용해 시각적으로 로직을 설명함으로써 이전에 비해 짧고 정확하게 의사소통할 수 있었고 고민에 대한 피드백도 더 빠르게 받을 수 있었습니다.

ERD

About

여행지, 축제 관련 리뷰 서비스 & 지역 팔로우를 통한 알림 서비스

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published