You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Zony는 지역 축제 참여자들이 현장(Zone)에서만 활성화되는 위치 기반 채팅방을 통해 익명으로 소통하고 실시간 정보를 교류할 수 있는 Full-Stack 웹앱 서비스의 백엔드 서버입니다. 본 레포지토리는 확장성과 가용성을 고려하여 MSA 기반의 멀티모듈 모노레포 구조로 설계되었으며, Spring Boot 3.5, WebSocket, PostGIS 등 최신 기술을 활용하여 안정적인 실시간 소통 환경을 제공합니다.
Zony 백엔드는 확장성(Scalability)과 유지보수성(Maintainability)을 확보하기 위해 MSA(마이크로서비스 아키텍처) 기반의 멀티모듈 모노레포 구조를 채택했습니다. 시스템은 책임과 특성이 분리된 3개의 독립적인 서버로 구성됩니다.
주요 컴포넌트 구성 (Multi-Module)
컴포넌트
역할
주요 특징
API Server
사용자 인증(Kakao), 회원/축제/채팅방 정보 조회/관리 등 대부분의 동기식 RESTful API 담당.
Spring Security/JWT 기반 인증/인가 처리, 시스템의 관문 역할 수행.
Chat Server
WebSocket 기반 실시간 채팅 기능을 전담.
STOMP 프로토콜 사용, Redis Pub/Sub을 통한 메시지 브로드캐스팅 및 수평 확장.
Batch Server
대용량 데이터 처리, 주기적인 동기화 작업 담당.
Spring Batch와 Spring Scheduler 하이브리드 구성, 공공데이터 API 동기화 및 캐시 정리와 집계.
주요 API 명세
Resource
Method
URI (엔드포인트)
설명
인증/위치
Auth
POST
/api/auth/refresh
리프레시 토큰 재발급
X
Festivals
GET
/api/v1/festivals
축제 목록 조회
X
ChatRooms
POST
/api/v1/festivals/{fId}/chat-rooms
채팅방 생성
O
Locations
POST
/api/v1/locations/verification/...
축제 Zone 위치 인증 및 토큰 발급
O
Messages
POST
/api/v1/messages/{msgId}/like
메시지 '좋아요' 토글
O
WebSocket
SUBSCRIBE
/sub/chat-rooms/{roomId}
채팅 메시지 구독
O (Token Header)
WebSocket
SEND
/app/chat-rooms/{roomId}/send
채팅 메시지 전송
O (Zone 인증 필수)
프로젝트 구조
src
├─ main/java/com/zony
│ ├─ api-server/ # Auth, Festival, User 등 RESTful API
│ ├─ chat-server/ # WebSocket 기반 실시간 채팅 전담
│ ├─ batch-server/ # 공공데이터 동기화, 캐시 정리 등 비동기 작업
│ └─ common-lib/ # 공통 엔티티, DTO, 유틸리티
│
├─ main/resources
│ └─ application.yml # 환경 설정 파일
│
└─ test/java/com/zony
├─ api-server/ # API 서버 단위/통합 테스트
└─ chat-server/ # 채팅 서버 테스트
...
팀원 소개 (Backend Roles)
이름
담당 역할
박다희
REST API 서버, RDBMS (Postgres) 설계 및 구현, QA 및 전체 모듈 디버깅
은지우
Chat(WebSocket) 서버, Batch 서버, 인프라(AWS/CI/CD) 구축 및 운영, QA 및 전체 모듈 디버깅, 성능 분석
About
GRM Backend Service: Real-time Location-based Festival Chat (ZONY)