Skip to content

기획서

이승민 edited this page Apr 28, 2025 · 3 revisions

프로젝트 소개

본 프로젝트는 콘서트 및 공연 티켓을 실시간으로 예매할 수 있는 웹 기반 서비스로, 티켓 오픈 시 발생하는 대규모 동시 접속 문제를 해결하고 공정한 예매 환경을 제공하는 것을 핵심 목표로 합니다.

서비스 안정성을 위해 대기열 시스템을 도입하고, 티켓 동시 예매와 같은 상황을 동시성 제어를 통해 안전하게 처리합니다. 또한, 서버 확장 시 로드 밸런싱을 도입하여 서버 트래픽을 분산시킬 수 있는 아키텍처를 고려했습니다.

사용자는 실시간 좌석 상태를 확인하며 예매할 수 있고, 대기열 시스템과 알림 기능으로 실제 예매 환경에 가까운 경험을 제공합니다. 관리자는 사용자 예매 이력을 모니터링하고 관련 통계를 확인할 수 있습니다.

프로젝트 개요

  • 주제 : 콘서트 티켓 예매 서비스 픽고(PickGO)
  • 설명 : 콘서트, 공연 등의 티켓을 온라인으로 예매할 수 있는 실시간 기반의 예매 시스템
  • 목표 : 트래픽 폭주에도 안정적으로 작동하고, 공정한 예매 및 실시간 대기열 기능 제공

기획 의도

  • 인기 콘서트의 티켓 오픈 시 동시 접속자 폭주 문제 해결
  • 기존 예매 시스템의 좌석 선택 불편함 개선
  • 대기열, 실시간 좌석 상태, 알림 등 실제 예매 환경과 유사한 서비스 구현

기능 구현

주요 기능(MVP)

  • 유저
    • 회원관리
      • 회원가입
      • 이메일/소셜 로그인
      • 마이페이지
        • 티켓 예매 내역 조회, 취소
        • 회원 정보 수정, 탈퇴
    • 티켓 예매
      • 티켓 결제
        • 좌석 선택
        • 예매 완료 후 즉시 결제
      • 티켓 취소
    • 공연 조회
      • 목록 조회 (페이징, 검색)
        • 카테고리별(가수이름, 지역, 장르) 검색 기능
      • 상세 조회
        • 공연 상세 정보 확인(일시, 장소, 출연자, 좌석 위치)
      • 공연 즐겨찾기 → 티켓팅 오픈 알림, 취소표 알림
  • 관리자
    • 게시글 작성
    • 로그 및 모니터링(사용자 예매 이력)
      • 티켓 판매 현황 모니터링
      • 예매자/결제 데이터 조회 및 통계

추가 기능

  • 마이페이지
    • 알림 신청한 공연 목록 조회
    • 찜한 자리 목록 조회
    • 작성한 리뷰 목록 조회
  • 알림 기능
    • 티켓팅 오픈
    • 빈자리 알림
  • 리뷰
    • 공연 리뷰 댓글
    • 리뷰 신고 기능
  • 공연 상세 조회
    • 공연 게시글 추천 및 공유

기술 스택

Frontend

  • React, tailwind, zustand, react query

Backend

  • Java 21, Spring Boot, JPA, Spring Security

DataBase

  • MySQL, Redis

Messaging Queue

  • Kafka

Notification

  • FCM

CI/CD

  • Github Actions

Deploy

  • AWS(EC2, CloudFront, S3), Docker, Nginx, Vercel

Monitoring

  • Prometheus, Grafana

Test

  • Postman, JMeter, k6

API

  • Kakao API, Kopis API, Google API

Doc

  • Swagger

와이어 프레임

와이어프레임 피그마 링크

사용자

  • 회원가입/로그인 페이지
  • 마이페이지
  • 공연 목록 페이지(홈)
  • 공연 상세 정보 페이지
  • 좌석 선택 및 예매 페이지

관리자

  • 모니터링 페이지
  • 통계 페이지

유저 스토리

사용자

유저 스토리 ID 역할 유저 스토리
USR-001 회원 나는 이메일과 비밀번호를 입력해서 회원가입하고, 로그인하고 싶다.
USR-002 예매자 나는 관심 있는 공연을 조회하고, 상세 정보를 보고, 예매 가능한 좌석을 확인하고 싶다.
USR-003 예매자 나는 좌석을 선택하고, 결제까지 완료하여 티켓을 예매하고 싶다.
USR-004 예매자 나는 내가 예매한 공연 내역을 마이페이지에서 확인하고, 필요시 취소하고 싶다.
USR-005 사용자 나는 내 개인정보(닉네임, 비밀번호 등)를 수정하거나 탈퇴하고 싶다.
USR-006 대기자 나는 예매 대기열에 들어가 순서가 되면 알림을 받고 예매를 진행하고 싶다.
USR-007 실패자 나는 예매에 실패했을 때, 해당 좌석이 다시 생기면 알림을 받고 다시 예매하고 싶다.

관리자

유저 스토리 ID 역할 유저 스토리
ADM-001 관리자 나는 새로운 공연을 등록하고, 좌석 및 예매 일정을 설정하고 싶다.
ADM-002 관리자 나는 사용자의 예매 내역과 결제 상태를 조회하고, 통계를 확인하고 싶다.
ADM-003 관리자 나는 특정 공연의 좌석 예매 기록을 실시간으로 모니터링하고 싶다.

협업 방식

  • 버전 관리 : GitHub
  • 이슈 관리 : GitHub Issues
  • 커뮤니케이션 : Slack, Zoom
  • 문서 관리 : Notion, Github Wiki
  • 코드 리뷰: Pull Request, code-withme
  • API 명세 및 Mock 서버 : Postman(API Mock), Swagger

일정 관리(WBS)

WBS


시스템 구성도

시스템구성도.png


ERD

server_sos.png


Clone this wiki locally