사용자가 이벤트 티켓을 검색, 예약, 결제, 취소할 수 있는 시스템입니다.
Spring Boot와 도메인 주도 설계(DDD)를 기반으로 구현되었습니다.
- 사용자 친화적인 티켓 예약 및 관리 기능 제공
- 명확한 비즈니스 로직을 위한 도메인 중심 설계 적용
- 관리자가 이벤트와 티켓을 효율적으로 관리할 수 있는 기능 지원
- 이벤트 목록 검색 (이름, 날짜, 장소, 가격, 좌석 종류 등)
- 티켓 예약 및 결제
- 예약 확정된 티켓 취소 (이벤트 시작 24시간 전까지 가능)
- 이벤트 생성, 수정, 삭제
- 좌석 및 티켓 수 관리
- 백엔드: Spring Boot, Spring Data JPA
- 데이터베이스: MySQL 또는 PostgreSQL
- 캐시: Redis (좌석 상태 관리 및 동시성 처리)
- 인증/인가: Spring Security
- 이벤트 처리: RabbitMQ 또는 Kafka
- 도메인 중심 설계: 도메인 엔티티와 애그리거트를 중심으로 설계
- 계층 분리: 애플리케이션 서비스, 도메인, 인프라 계층 분리
- 동시성 처리: Redis를 활용하여 좌석 중복 예약 방지
- 트랜잭션 관리: JPA를 사용하여 데이터 일관성 보장
- 사용자가 이벤트를 선택합니다.
- 좌석을 선택하여 예약 요청을 보냅니다.
- 시스템이 좌석 상태를 확인하고 예약 상태를 "예약 대기"로 변경합니다.
- 사용자가 결제를 완료하면 예약 상태가 "확정"으로 변경됩니다.
- 사용자가 예약 목록에서 취소할 티켓을 선택합니다.
- 예약 취소 요청을 보냅니다.
- 시스템이 이벤트 시작 24시간 전인지 확인합니다.
- 조건을 만족하면 예약 상태가 "취소"로 변경됩니다.
src/
├── main/
│ ├── java/com/example/ticket
│ │ ├── domain/ # 도메인 엔티티 및 애그리거트
│ │ ├── service/ # 애플리케이션 서비스
│ │ ├── repository/ # 데이터 접근 레이어
│ │ └── config/ # 설정 파일
│ └── resources/
│ ├── application.yml # 환경 설정
│ └── static/ # 정적 파일
└── test/ # 테스트 코드