이 프로젝트는 인기 콘서트 티켓 판매와 같이 높은 동시 접속 트래픽을 처리하기 위해 설계된 고성능 MSA(Microservices Architecture) 기반 티켓팅 시스템입니다. Spring Boot, Kafka, Redis, React 등 최신 기술 스택을 활용했습니다.
시스템은 도메인별로 여러 마이크로서비스로 나뉘어 있습니다.
| 서비스 | 경로 | 설명 | 포트 (기본) |
|---|---|---|---|
| API Gateway | gateway | 진입점, 라우팅, 인증 처리 | 8080 |
| Auth | Auth | 사용자 인증(JWT) 및 관리 | 8081 |
| Ticketing | Ticketing | 핵심 도메인: 공연, 장소, 재고 관리 | 8082 |
| Swap | Swap | 티켓 교환/거래 기능 | 8083 |
| Payment | Payment | 결제 처리 및 검증 | 8084 |
| Queue | Queue | 고성능 대기열 처리 (Netty/WebFlux) | 8085 |
| Reservation | Reservation | 티켓 예매 및 예약 로직 | 8086 |
| RealTime | RealTime | 실시간 업데이트를 위한 WebSocket 처리 | 8087 |
| Frontend | Front | React 기반 사용자 인터페이스 | 5173 |
- Kubernetes (k8s): k8s - 배포 설정
- Load Testing: k6 - k6를 이용한 성능 테스트 스크립트
- 미들웨어:
- Redis: 캐싱, 세션 관리, 분산 락, 대기열 관리
- Kafka: 서비스 간 비동기 통신 및 이벤트 처리
- MySQL: 영구 데이터 저장
- 티켓 스왑 (Swap): 사용자 간 안전한 1:1 티켓 교환 및 양도 기능
- 대기열 시스템 (Queue): 대규모 트래픽 제어를 위한 고성능 순번 대기열
- 실시간 소켓 (RealTime): WebSocket을 활용한 실시간 좌석 정보 및 대기열 동기화
- 로그인 (Auth): Access Token(AT) 및 Refresh Token(RT) 기반의 인증 시스템
- 공연 예매: 공연 정보 조회, 좌석 선택, 결제까지 이어지는 표준 예매 프로세스
- 게이트웨이: API Gateway를 통한 서비스 라우팅 및 통합 관리
- Java 21 JDK
- Node.js (Frontend용)
- Docker & Docker Compose (선택 사항)
- Redis
- Kafka
- MySQL
- 인프라: Redis, Kafka, MySQL을 실행합니다.
- 백엔드: 각 서비스 폴더로 이동하여 다음 명령어를 실행합니다.
Gateway와 Auth 서비스를 먼저 시작하는 것을 권장합니다.
./gradlew bootRun
- 프론트엔드:
cd Front npm install npm run dev
- 브랜치 전략: Git Flow (feature/, develop, master)
- API 문서: 통합 API Gateway를 통한 Swagger UI를 제공합니다. (주로
/swagger-ui.html)