백엔드 개발 포트폴리오 | 등산 크루 모집 커뮤니티
내일배움캠프 4기 웹 개발 과정 Spring 트랙 수료생 최종 프로젝트 ‘올라’을 소개합니다.
Aug 17, 2023
스프링 프로젝트 ‘올라’ 입니다. 취미공유 커뮤니티 서비스로, 등산과 관련된 관심사를 해시태그로 만들어 다양하게 공유할 수 있는 방법을 구현했습니다.
✨ 주요기능
관심사가 비슷한 친구를 랜덤으로 추천
- 회원가입할 때 고른 해시태그를 비교하여 하나 이상 겹칠 경우 추천 친구로 노출됩니다.
![notion image](https://inblog.ai/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fs3-us-west-2.amazonaws.com%252Fsecure.notion-static.com%252F1a777ef7-cc2f-42a6-85b7-e31cfd17e8a8%252F%2525E1%252584%252580%2525E1%252585%2525AA%2525E1%252586%2525AB%2525E1%252584%252589%2525E1%252585%2525B5%2525E1%252586%2525B7_%2525E1%252584%25258E%2525E1%252585%2525B5%2525E1%252586%2525AB%2525E1%252584%252580%2525E1%252585%2525AE_%2525E1%252584%25258E%2525E1%252585%2525AE%2525E1%252584%25258E%2525E1%252585%2525A5%2525E1%252586%2525AB.png%3Ftable%3Dblock%26id%3D2166147a-3470-4e24-906f-4b2239947c09%26cache%3Dv2&w=3840&q=75)
동적쿼리와 해시태그를 이용한 게시글 조회
- 산 높이, 점수, 추천계절, 해시태그 등 다양한 조건으로 필터링 조회를 구현했습니다.
![notion image](https://inblog.ai/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fs3-us-west-2.amazonaws.com%252Fsecure.notion-static.com%252Fcc37f032-1a4b-4518-9c3a-fe8743093649%252F%2525E1%252584%252591%2525E1%252585%2525B5%2525E1%252586%2525AF%2525E1%252584%252590%2525E1%252585%2525A5%2525E1%252584%252585%2525E1%252585%2525B5%2525E1%252586%2525BC_%2525E1%252584%25258C%2525E1%252585%2525A9%2525E1%252584%252592%2525E1%252585%2525AC.png%3Ftable%3Dblock%26id%3Ddfb18c34-21c5-4ccf-add0-e8d833aa1f51%26cache%3Dv2&w=3840&q=75)
실시간 채팅을 통한 크루원 모집
- 채팅방을 통해 크루원을 모집할 수 있도록 구현했습니다.
- 최대인원과 현재인원을 추가하여 크루원 모집을 마감할 수 있도록 하였습니다.
![notion image](https://inblog.ai/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fs3-us-west-2.amazonaws.com%252Fsecure.notion-static.com%252F167f5a5f-0713-4ee8-953f-19a2524f0fd6%252F%2525E1%252584%25258F%2525E1%252585%2525B3%2525E1%252584%252585%2525E1%252585%2525AE%2525E1%252584%25258B%2525E1%252585%2525AF%2525E1%252586%2525AB_%2525E1%252584%25258E%2525E1%252585%2525A2%2525E1%252584%252590%2525E1%252585%2525B5%2525E1%252586%2525BC%2525E1%252584%252587%2525E1%252585%2525A1%2525E1%252586%2525BC.png%3Ftable%3Dblock%26id%3D1ddf3068-d8ef-4514-a531-77326edc086d%26cache%3Dv2&w=3840&q=75)
조건 충족시 자동 등업
- 커뮤니티 게시글을 5번 작성 시 ‘등산매니아’로 자동 등업됩니다.
- 크루원 모집글을 5번 작성 시 ‘산신령’으로 자동 등업됩니다.
![notion image](https://inblog.ai/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fs3-us-west-2.amazonaws.com%252Fsecure.notion-static.com%252Fdecffaa8-9498-4bdd-9fa3-90b139c00a3f%252F%2525E1%252584%25258C%2525E1%252585%2525A1%2525E1%252584%252583%2525E1%252585%2525A9%2525E1%252586%2525BC_%2525E1%252584%252583%2525E1%252585%2525B3%2525E1%252586%2525BC%2525E1%252584%25258B%2525E1%252585%2525A5%2525E1%252586%2525B8_%2525E1%252584%252589%2525E1%252585%2525B5%2525E1%252584%252589%2525E1%252585%2525B3%2525E1%252584%252590%2525E1%252585%2525A6%2525E1%252586%2525B7.png%3Ftable%3Dblock%26id%3Ddb9fa3bf-fb78-412e-a9bf-84557095f7c6%26cache%3Dv2&w=3840&q=75)
🛠 서비스 아키텍쳐
![notion image](https://inblog.ai/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fs3-us-west-2.amazonaws.com%252Fsecure.notion-static.com%252F2cb31a8d-6fe8-4fc5-bc49-24d547fe1b9c%252FUntitled.png%3Ftable%3Dblock%26id%3D58c1867f-46bb-4172-8350-bd01f4490529%26cache%3Dv2&w=3840&q=75)
💬 기술적 의사결정
사용 기술 | 기술 설명 |
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 to our newsletter