Permit Seoul은 공연/페스티벌/행사 등을 위한 티켓 예매 서비스의 백엔드 서버입니다.
| 구분 | 기술 |
|---|---|
| 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 |
| 구분 | 기술 |
|---|---|
| Cloud | AWS EC2, S3 |
| Container | Docker, Amazon Corretto 17 |
| CI/CD | GitHub Actions |
| Logging | Loki, Logstash, Discord Webhook |
| Resilience | Resilience4j (Circuit Breaker) |
| 구분 | 기술 |
|---|---|
| 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 연동 타임테이블
- 좌석 배치도: 이벤트별 좌석 이미지 관리
- 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/ # 유틸리티
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 파이프라인