"수만 명의 동시 접속에도 멈추지 않는 안정성"
NextFrame은 공연 일정 조회부터 좌석 선택, 결제, 그리고 QR 티켓 발급까지
끊김 없는 사용자 경험을 제공하는 예매 플랫폼입니다.
- Links
- Project Overview
- Key Features
- Tech Stack
- System Architecture & ERD
- Team Members
- Collaboration Rules
- Service URL: https://nextframe.wisoft.dev/
- API Documentation: Swagger UI Docs
|
유명 아이돌 콘서트 티켓팅 시 |
동시 접속자로 인한 이중 예매(Race Condition) |
NextFrame은 단순한 예매 기능을 넘어, 극한의 트래픽 상황에서도 신뢰할 수 있는 시스템을 구축했습니다.
|
분산 락(Distributed Lock)을 통해 |
Redis 캐싱과 대기열 시스템으로 |
직관적인 UI와 반응형 디자인으로 |
| 기능 | 상세 설명 |
|---|---|
| 🔐 인증/인가 | • OAuth 2.0 (카카오 등) 소셜 로그인 • JWT 기반의 보안성 높은 세션 관리 |
| 🎫 공연 예매 | • 공연 검색 및 상세 정보 조회 (캐싱 적용) • 실시간 좌석 상태 확인 및 선점 (Concurrency Control) |
| 💳 결제 시스템 | • 결제 검증 및 보안 처리 • 결제 실패 시 트랜잭션 롤백 및 좌석 점유 해제 |
| 📱 티켓 관리 | • 예매 내역 확인 및 QR 코드 티켓 발급 • 사용자 리뷰 및 평점(좋아요) 시스템 |
- Language: TypeScript 5.8.3
- Framework: React 18.3.1
- Styling: TailwindCSS
- State Management: Recoil
- Server State Management: TanStack Query
- Test: Jest, React Testing Library
- Language: Java 21
- Framework: Spring Boot 3.5.4
- Test: JUnit5, Mockito
- ORM: JPA, QueryDSL
- RDBMS: PostgreSQL
- NoSQL: Redis
- Server: On-Premise
- Virtualization: Docker
- CI/CD: GitHub Actions
- Web Server(Reverse Proxy): Nginx
현재 아키텍처와 DB 설계도는 지속적으로 고도화 중입니다.
-
서비스 독립 분리 및 API 라우팅
- Payment, Schedule-Reservation-Ticketing, Payment-Gateway 애플리케이션 독립 운영
- Nginx Reverse Proxy: React 정적 리소스 및 백엔드 API 단일 진입점(Single Entry Point) 구성
- 통신 프로토콜: 서비스 간 REST API 표준 인터페이스 적용
-
CI/CD
- 조건부 빌드: changed-files 액션을 통한 변경 모듈 감지 및 선별적 빌드/배포
- Bastion 터널링: 내부망 환경 보안을 위한 SSH 터널링 기반 아티팩트(.jar) 전송
-
Database
- 분산 락(Redisson): Redis 기반 락 구현으로 좌석 예매 시 발생하는 Race Condition 방지
- 데이터 캐싱: 조회 빈도가 높은 공연 정보 Redis 캐싱을 통한 DB 부하 감소 및 응답 속도 개선
- 데이터 통합 관리: PostgreSQL 통합 DB 구성을 통한 분산 환경 내 데이터 정합성 유지
-
보안 및 모니터링
- 네트워크 격리: Bastion Server를 경유한 SSH 접근 제어 (내부망 격리)
- 인증/인가: OAuth 2.0 기반 소셜 로그인 및 JWT 토큰 검증
- 가시성 확보: Prometheus/Grafana/Loki 스택을 활용한 메트릭(CPU, Memory) 및 API 처리 현황 실시간 모니터링
NextFrame 팀은 명확한 규칙을 통해 코드 품질을 유지하고 협업 효율을 높입니다.
- Git Flow 전략을 따릅니다. (
main,develop,feature,release,hotfix) - Merge Strategy:
Rebase and Merge를 사용하여 커밋 히스토리를 깔끔하게 관리합니다.
- Naver Java Coding Convention을 준수합니다.
이슈 트래킹을 위해 아래 템플릿을 엄격히 준수합니다.
#<이슈번호> <타입>(<범위>): <제목> (제목은 40자 이내)
<본문> (선택 사항, 한 줄 띄우고 작성. 72자 이내로 줄 바꿈)
Resolves: #<이슈번호>
See also: None (관련 항목이 있으면 #<이슈번호> 기입)





