백엔드 개발 포트폴리오 | 등산 크루 모집 커뮤니티

내일배움캠프 4기 웹 개발 과정 Spring 트랙 수료생 최종 프로젝트 ‘올라’을 소개합니다.
Aug 17, 2023
백엔드 개발 포트폴리오 | 등산 크루 모집 커뮤니티
스프링 프로젝트 ‘올라’ 입니다. 취미공유 커뮤니티 서비스로, 등산과 관련된 관심사를 해시태그로 만들어 다양하게 공유할 수 있는 방법을 구현했습니다.

✨ 주요기능

관심사가 비슷한 친구를 랜덤으로 추천

  • 회원가입할 때 고른 해시태그를 비교하여 하나 이상 겹칠 경우 추천 친구로 노출됩니다.
    • notion image
 

동적쿼리와 해시태그를 이용한 게시글 조회

  • 산 높이, 점수, 추천계절, 해시태그 등 다양한 조건으로 필터링 조회를 구현했습니다.
    • notion image

실시간 채팅을 통한 크루원 모집

  • 채팅방을 통해 크루원을 모집할 수 있도록 구현했습니다.
  • 최대인원과 현재인원을 추가하여 크루원 모집을 마감할 수 있도록 하였습니다.
    • notion image

조건 충족시 자동 등업

  • 커뮤니티 게시글을 5번 작성 시 ‘등산매니아’로 자동 등업됩니다.
  • 크루원 모집글을 5번 작성 시 ‘산신령’으로 자동 등업됩니다.
    • notion image
       

🛠 서비스 아키텍쳐

notion image
 

💬 기술적 의사결정

사용 기술
기술 설명
QueryDSL
다양한 필터링이 필요한 기획특성 상 동적 쿼리를 더 편리하게 사용할 수 있고, IDE에서 문법에러를 잡아주는 장점이 있는 QueryDSL을 선택했습니다.
PresignedURL
서버는 접근권한에 대한 보안절차를 진행하고 URL을 생성하여 반환합니다. 클라이언트에서 해당 URL을 이용해 S3 버킷에 바로 업로드 하거나 조회할 수 있습니다.
RDS(MySQL)
서버가 꺼지더라도 데이터베이스의 관리를 위하여 오픈 소스 관계형 데이터베이스인 MySQL을 선택했습니다.
Github Action
기존 CI/CD 서비스 대비 간편한 설정과 높은 접근성으로 자동배포를 할 수 있습니다. 서버 설치가 필요한 Jenkins나 비용이 발생하는 AWS Codes, NCP Source에 비해 비용적으로 더 많은 이점이 있다고 판단하였습니다.
WebSocket
클라이언트와 서버가 양방향 연결 채널을 구성하기 때문에 클라이언트의 요청이 없어도 서버에서 데이터를 송신하는 것이 가능한 WebSocket을 이용해 실시간 채팅을 구현했습니다.
JWT
수명이 짧은 Access 토큰과 수명이 긴 Refresh 토큰을 이용해 로그인 보안을 강화했습니다.
OAuth2
소셜로그인 기능을 구현하기 위해 OAuth2 카카오 로그인 API를 활용했습니다
 

 
 
Share article
Subscribe Newsletter
Stay connected for the latest news and insights.
RSSPowered by inblog