다예약은 MSA 기반의 통합 예약 서비스입니다. 공연, 전시, 음식점 예약을 하나의 플랫폼에서 관리할 수 있는 문화 슈퍼앱을 지향합니다.
- 프로젝트 기간: 2025.09.01 - 2025.10.02
- 배포 주소: http://3.37.156.94:10000
- 팀 노션: 팀 노션 바로가기
현재 사용자들은 문화 생활을 계획할 때 다음과 같은 불편함을 겪고 있습니다.
- 공연, 전시, 음식점 정보를 각각 다른 플랫폼에서 조회해야 함
- 예약 시 동일한 정보를 반복 입력해야 하는 번거로움
- 공연·전시·음식점 일정을 하나의 흐름으로 연계하여 계획하기 어려움
- 분산된 예약 관리로 인한 효율성 저하
- 커플/친구/가족: 데이트나 모임 일정을 하나의 애플리케이션으로 관리하고 싶은 사용자
- 단체 관광객: 여행 일정 중 문화 공연과 식사를 효율적으로 계획하고 싶은 그룹
- "공연이나 전시 관람 후 식사까지 이어지는 일정을 하나의 앱으로 계획하고 싶다"
- "여러 앱을 오가며 예약하지 않고, 한 곳에서 정보를 비교하고 관리할 수 있으면 좋겠다"
- 통합 예매 시스템을 통한 '문화 슈퍼앱' 구현
- 공연·전시·음식점 예약 테마를 하나의 플랫폼에서 제공
- 각 테마 정보를 한 곳에서 비교할 수 있는 통합 조회 기능 제공
![]() 이경민 👑 팀장 예약·결제 서비스 |
![]() 이승현 👑 부팀장 알림·대기열 서비스 |
![]() 이다예 🖊️ 기록관 웨이팅·검색 서비스 |
![]() 정다겸 🚀 팀원 음식점·백오피스 서비스 |
![]() 최우탁 🚀 팀원 게이트웨이·인증·전시회 |
![]() 황선영 🚀 팀원 공연 서비스 |
ERD 상세 보기: ERDCloud
표준화된 예약 처리
- 서비스별 예약 요청을 하나의 표준화된 형식으로 처리
- 공연, 전시, 음식점 예약을 통합 관리
좌석 선점 시스템
- Redis Lua 스크립트를 활용한 원자성 보장
- 동시성 제어를 통한 안정적인 예약 처리
대규모 트래픽 대응
- 국내 공연 좌석 최대 예약 규모(약 10만 명)를 기준으로 설계
- Redis Sorted Set 기반 FIFO 순차 입장 관리
보안 및 권한 제어
- 토큰 이중 구조로 위변조 방지
- 스케줄러를 통한 활성 토큰 발급으로 순차 입장 제어
음식점 웨이팅 관리
- 점주/손님 간 상호작용을 통한 웨이팅 상태 관리
- 호출 및 응답 시 실시간 알림 제공
- 무응답 2회 시 자동 노쇼 처리
웨이팅 순서 관리
- Redis 캐시 기반 빠른 상태 조회
- 완료되지 않은 웨이팅만 캐시에 저장하여 효율적인 메모리 관리
계층적 데이터 구조
- 공연 → 회차 → 구역 → 좌석 4단계 구조
- 각 계층별 무결성 검증으로 데이터 일관성 보장
회차별 좌석 관리
- 예매 완료/취소 시 실시간 좌석 상태 변경
- 구역별 잔여 좌석 수 즉시 업데이트
데이터 무결성
- 티켓 오픈 후 공연/회차 정보 변경 불가
- 예매 안정성 확보
운영 정보 관리
- 음식점 → 운영일 → 잔여 좌석 계층 구조
- 검색, 페이지네이션, 정렬 기능 제공
- S3 연동 이미지 업로드 지원
좌석 관리 자동화
- Redisson과 Lua 스크립트 활용
- 스케줄러로 90분 간격 잔여 좌석 테이블 자동 생성
- 오픈 시간부터 마감 시간까지 정책 기반 알고리즘 적용
- 전시회 및 아티스트 정보 관리
- 전시회 목록 조회 및 페이지네이션 지원
소셜 로그인
- 구글, 카카오 소셜 로그인 지원
- 기존 계정 자동 연동
- 전략 패턴으로 소셜 서비스 확장성 확보
백오피스 기능
- 유저 목록 조회 및 페이지네이션
신청서 기반 서비스 등록
- 관리자 승인 시 FeignClient로 서비스 등록 요청
- Kafka Producer를 통한 알림 이벤트 발행
권한 기반 접근 제어
- 관리자/판매자별 역할에 따른 기능 차등 제공
- 공연, 전시, 음식점 통합 검색
- 생성일자 기준 정렬 기능
- 페이지네이션 지원
이벤트 기반 실시간 알림
- Kafka Message 기반 이벤트 수신
- SSE 방식으로 실시간 알림 전달
- 예약 완료, 웨이팅 호출 등 다양한 이벤트 처리
각 서비스 레포지토리에서 상세 기능, API 명세, 기술적 의사결정, 트러블슈팅 등을 확인할 수 있습니다.











