음악을 즐기고 사랑하는 모든 이들을 위한 커뮤니티 기반의 올인원 솔루션 프로젝트 입니다.
다양한 사람들과 함께 소통하며 팀을 구성하여 함께 공연하고, 프로필을 꾸며 각자의 개성과 이력을 뽐내보세요!
🌲커뮤니티🌲 게시판 이용 및 팀 생성/구인 실시간 인기 컨텐츠 조회 사용자 필터링에 따른 컨텐츠 조회 유저 간 실시간 채팅 소통 불건전 컨텐츠 및 악성유저 신고 가능 🌲프로필🌲 개인/팀 프로필 관리 활동 내역에 따른 프로필 티어(랭킹) 상승 랭킹 별 조회
🌲Moum🌲 팀 생성, 연습시설 찾기 등 공연 라이프사이클 관리 각 단계 별 프로세스 추적 및 관리 사용자 필터링에 따른 공연장, 연습장 조회 및 모음 등록 🌲관리자🌲 제휴업체의 공연장/연습장 시설 정보 등록 가능 유저들의 이용 내역 관리 가능 신고 내용에 대하여 관리자의 피드백 가능
채팅 모듈과 애플리케이션 모듈을 분리하여 각 기능의 독립성을 보장하였습니다.
각 모듈을 상호간의 간섭 및 충돌 없이 성능 최적화 및 유지 보수에 집중 가능하게 하였습니다.
Nginx의 Reverse Proxy Pass를 동적으로 구성하여 사용자와 관리자의 요청을 처리하는 API Gateway 역할을 수행합니다.
각 모듈은 컨테이너화 되어있으며, 각 컨테이너끼리 통신할 수 있도록
Docker Compose를 통해 두 모듈이 동일한 네트워크에 속하게 구성하였습니다.
Github Action을 활용한 무중단 배포 환경 구축입니다.
Green/Blue 방식의 무중단 배포 시스템에서 Reverse Proxy로 설정한 Nginx가 적절히 라우팅하여
트래픽이 새로운 서버로 전환되고 사용자에게 서비스를 중단 없이 지속적으로 제공할 수 있도록 구성하였습니다.
Nginx에 의해 :8081 포트로 트래픽이 변경됩니다.
🟢비동기 및 반응형 처리🟢
WebFlux의 Non-Blocking 특성을 이용해 SSE 방식으로
실시간 채팅 메시지 응답을 Streaming하여 빠르게 안정적인 데이터 전송 구현
🟢실시간 데이터 전송(SSE)🟢
SSE는 서버가 클라이언트로 실시간 데이터를 푸시하는 방식으로,
클라이언트와 서버는 지속적으로 연결된 상태를 유지하며,
새로운 메시지가 발생할 때만 전송하므로 데이터 전송 오버헤드와 서버 부하를 최소화
🟢고성능 및 확장성🟢
Spring WebFlux의 리액티브 모델을 기반으로 많은 사용자들이
동시에 채팅에 참여할 수 있도록 확장 가능성 확보 및 고성능 메시징 서비스 제공
🟢파일 데이터 관리🟢
파일 데이터는 ncp Object Storage PresignedURL 방식으로 저장하여
서버 및 스토리지에 부담이 되는 파일 데이터를 효과적으로 관리
🟢테이블 튜닝🟢
용량이 큰 컨텐츠는 Vertical Partitioning 하여 선택적 쿼리하는 전략 사용
Mysql Partition 구문 이용하여 text 길이 기준 Horizontal Partitioning 적용
🟢검색 쿼리 최적화🟢
MySQL Full-Text Search 와 ngram parser를 이용한 효율적인 검색어 쿼리 작성
🟢페이징 쿼리 최적화🟢
QueryDSL, PageableExecutionUtil클래스 조합으로
fetch 쿼리, count 쿼리 분리를 통한 페이지네이션 성능 최적화
🟢논클러스터드 인덱스 활용🟢
최신순 정렬 쿼리 최적화를 위해 created_at 컬럼에 역방향 인덱스를 적용하여
sorting 연산에 의한 쿼리 속도 저하 개선
| Team | Name | Position | Stack | |
|---|---|---|---|---|
| Leader | 소성하 | Frontend Developer | sososongha3@ajou.ac.kr | Android UI/UX, Chat Service, Main Service |
| Member | 이승우 | Backend Developer | swo98@ajou.ac.kr | Backend Module, DevOps |
| Member | 장재혁 | Backend Developer | cjaehyuk4zed@gmail.com | Chat Module, Admin Service |
| Member | 진선재 | Frontend Developer | jsj714246@gmail.com | Android UI/UX, Community Service |
