커리큘럼
home
React
home

[올라] 관심사로 공유하는 등산 크루 모집 커뮤니티

Section info
Section B
B3
커뮤니티
Specialty
Spring
스프링 프로젝트 ‘올라’ 입니다. 취미공유 커뮤니티 서비스로, 등산과 관련된 관심사를 해시태그로 만들어 다양하게 공유할 수 있는 방법을 구현했습니다.

 주요기능

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

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

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

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

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

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

조건 충족시 자동 등업

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

서비스 아키텍쳐

기술적 의사결정

사용 기술
기술 설명
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를 활용했습니다