Skip to content

JihwanByun/event

Repository files navigation

🎟️ 티켓 예매 시스템

사용자가 이벤트 티켓을 검색, 예약, 결제, 취소할 수 있는 시스템입니다.
Spring Boot와 도메인 주도 설계(DDD)를 기반으로 구현되었습니다.

📌 프로젝트 개요

  • 사용자 친화적인 티켓 예약 및 관리 기능 제공
  • 명확한 비즈니스 로직을 위한 도메인 중심 설계 적용
  • 관리자가 이벤트와 티켓을 효율적으로 관리할 수 있는 기능 지원

✨ 주요 기능

사용자 기능

  • 이벤트 목록 검색 (이름, 날짜, 장소, 가격, 좌석 종류 등)
  • 티켓 예약 및 결제
  • 예약 확정된 티켓 취소 (이벤트 시작 24시간 전까지 가능)

관리자 기능

  • 이벤트 생성, 수정, 삭제
  • 좌석 및 티켓 수 관리

🛠️ 기술 스택

  • 백엔드: Spring Boot, Spring Data JPA
  • 데이터베이스: MySQL 또는 PostgreSQL
  • 캐시: Redis (좌석 상태 관리 및 동시성 처리)
  • 인증/인가: Spring Security
  • 이벤트 처리: RabbitMQ 또는 Kafka

⚙️ 설계 원칙

  • 도메인 중심 설계: 도메인 엔티티와 애그리거트를 중심으로 설계
  • 계층 분리: 애플리케이션 서비스, 도메인, 인프라 계층 분리
  • 동시성 처리: Redis를 활용하여 좌석 중복 예약 방지
  • 트랜잭션 관리: JPA를 사용하여 데이터 일관성 보장

🚀 유스케이스

티켓 예약 흐름

  1. 사용자가 이벤트를 선택합니다.
  2. 좌석을 선택하여 예약 요청을 보냅니다.
  3. 시스템이 좌석 상태를 확인하고 예약 상태를 "예약 대기"로 변경합니다.
  4. 사용자가 결제를 완료하면 예약 상태가 "확정"으로 변경됩니다.

티켓 취소 흐름

  1. 사용자가 예약 목록에서 취소할 티켓을 선택합니다.
  2. 예약 취소 요청을 보냅니다.
  3. 시스템이 이벤트 시작 24시간 전인지 확인합니다.
  4. 조건을 만족하면 예약 상태가 "취소"로 변경됩니다.

📂 폴더 구조

src/
├── main/
│   ├── java/com/example/ticket
│   │   ├── domain/      # 도메인 엔티티 및 애그리거트
│   │   ├── service/     # 애플리케이션 서비스
│   │   ├── repository/  # 데이터 접근 레이어
│   │   └── config/      # 설정 파일
│   └── resources/
│       ├── application.yml # 환경 설정
│       └── static/         # 정적 파일
└── test/                  # 테스트 코드

About

DDD, 객체지향 설계 연습

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages