Skip to content

PERMIT-SEOUL/permit-server

Repository files navigation

🎫 Permit Seoul - 티켓 예매 서버

Permit Seoul은 공연/페스티벌/행사 등을 위한 티켓 예매 서비스의 백엔드 서버입니다.

Instagram


📋 목차


🛠 기술 스택

Backend

구분 기술
Language Java 17
Framework Spring Boot 3.2.1
ORM Spring Data JPA
Security Spring Security, JWT, OAuth2 (Google, Kakao)
Database MySQL 8.x
Cache Redis
API Client Spring Cloud OpenFeign

Infrastructure

구분 기술
Cloud AWS EC2, S3
Container Docker, Amazon Corretto 17
CI/CD GitHub Actions
Logging Loki, Logstash, Discord Webhook
Resilience Resilience4j (Circuit Breaker)

External Services

구분 기술
Payment Toss Payments API
OAuth Google, Kakao 소셜 로그인
Notification Email (SMTP), Notion API
QR Code ZXing


✨ 주요 기능

🎟 티켓 예매 시스템

  • 실시간 재고 관리: Redis 기반 동시성 제어
  • 예약 세션 관리: 7분 TTL의 예약 세션으로 좌석 임시 확보
  • 좌석/티켓 유형 선택: 다양한 티켓 타입 및 회차 지원

💳 결제 시스템

  • Toss Payments 연동: 결제 승인 및 취소 API
  • 트랜잭션 분리 아키텍처: 외부 API 호출을 DB 트랜잭션에서 분리하여 커넥션 효율성 향상
  • Resilience4j Circuit Breaker: 외부 API 장애 시 서킷 브레이커 적용
  • 환불 정책: 행사 시작 3일 전까지 취소 가능

👤 사용자 관리

  • OAuth2 소셜 로그인: Google, Kakao
  • JWT 인증: Access Token 기반 인증

🎪 이벤트/행사 관리

  • 행사 CRUD: 관리자 전용 행사 생성/수정/삭제
  • 타임테이블 관리: Notion API 연동 타임테이블
  • 좌석 배치도: 이벤트별 좌석 이미지 관리

👥 게스트 관리 (Admin)

  • QR 체크인: ZXing 기반 QR 코드 생성 및 스캔
  • 게스트 초대: 이메일 초대장 발송
  • 입장 관리: 실시간 체크인/체크아웃

🎁 쿠폰 시스템

  • 할인 쿠폰: 이벤트별 쿠폰 발급 및 적용
  • 쿠폰 코드 생성: 고유 쿠폰 코드 자동 생성

📁 프로젝트 구조

src/main/java/com/permitseoul/permitserver/
├── PermitServerApplication.java
├── domain/                          # 도메인별 모듈
│   ├── admin/                       # 관리자 기능
│   │   ├── coupon/                  # 쿠폰 관리
│   │   ├── event/                   # 행사 관리
│   │   ├── guest/                   # 게스트 관리
│   │   ├── ticket/                  # 티켓 관리
│   │   └── timetable/               # 타임테이블 관리
│   ├── auth/                        # 인증/인가
│   ├── coupon/                      # 쿠폰
│   ├── event/                       # 행사
│   ├── payment/                     # 결제
│   ├── reservation/                 # 예약
│   ├── reservationsession/          # 예약 세션
│   ├── ticket/                      # 티켓
│   └── user/                        # 사용자
└── global/                          # 공통 모듈
    ├── aop/                         # AOP 설정
    ├── config/                      # 설정 클래스
    ├── exception/                   # 예외 처리
    ├── external/                    # 외부 API 연동
    ├── filter/                      # 필터
    ├── redis/                       # Redis 설정
    ├── response/                    # 응답 객체
    └── util/                        # 유틸리티

CI/CD

GitHub Actions를 통한 자동 배포 파이프라인:

main 브랜치 Push
       ↓
  GitHub Actions
       ↓
  ┌────────────────────────┐
  │ 1. Checkout            │
  │ 2. Set up JDK 17       │
  │ 3. Build (Gradle)      │
  │ 4. Docker Build & Push │
  └────────────────────────┘
       ↓
  Docker Hub
       ↓
  EC2 SSH Deploy

워크플로우 파일

  • CI-PROD.yml / CI_DEV.yml: CI 파이프라인
  • DOCKER-PROD-CD.yml / DOCKER-DEV-CD.yml: CD 파이프라인

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages