Skip to content

EomYoosang/DDIB

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

872 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DDIB - 분산 티켓팅 시스템 (S14P11A406)

개요

이 프로젝트는 인기 콘서트 티켓 판매와 같이 높은 동시 접속 트래픽을 처리하기 위해 설계된 고성능 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

프로젝트 실행

  1. 인프라: Redis, Kafka, MySQL을 실행합니다.
  2. 백엔드: 각 서비스 폴더로 이동하여 다음 명령어를 실행합니다.
    ./gradlew bootRun
    Gateway와 Auth 서비스를 먼저 시작하는 것을 권장합니다.
  3. 프론트엔드:
    cd Front
    npm install
    npm run dev

개발

  • 브랜치 전략: Git Flow (feature/, develop, master)
  • API 문서: 통합 API Gateway를 통한 Swagger UI를 제공합니다. (주로 /swagger-ui.html)

About

SSAFY 14기 공통프로젝트

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors