1. 시스템 개요 및 목표

본 프로젝트는 콘서트 예약 플랫폼으로 사용자 인증, 콘서트 조회, 좌석 예약, 결제, 캐시 사용, 랭킹 집계 등 다양한 도메인 기능을 제공합니다.

현재는 대부분의 비즈니스 로직이 하나의 트랜잭션 안에서 동기적으로 실행되고 있습니다. 하지만 향후 서비스 확장성과 독립 배포 가능성을 고려해 MSA로의 전환을 검토 중입니다. 이 경우 도메인별 서비스가 독립 배포되며 트랜잭션 경계도 분리되므로 서비스 간 트랜잭션 일관성 확보 및 장애 격리를 위한 대책이 필요합니다.

본 보고서에서는 도메인 분리에 따른 트랜잭션 처리의 한계를 진단하고 이를 해결하기 위한 구조적 개선 방안으로 이벤트 기반 설계, 보상 트랜잭션(SAGA), 비동기 처리 전략, Outbox 패턴 등을 제시합니다.


2. 도메인 분리 및 배포 단위 설계

2.1 도메인 및 서비스 분리 기준

도메인 주요 책임 독립 배포 여부 비고
User 사용자 인증 및 정보 관리 ✔️ 외부 OAuth 연동 가능성 고려
Concert 콘서트 정보 및 좌석 구성 ✔️ 콘텐츠 CMS 역할
Reservation 좌석 예약, 상태 전이 ✔️ 좌석과 사용자 연결
Payment 결제 처리, 포인트 차감 ✔️ 외부 결제 연동 고려
Cash 유저 캐시 관리, 충전/사용 기록 ✔️ 계좌 연동 가능성 고려
Ranking 매진 시점 저장 및 랭킹 제공 ✔️ Redis 기반의 빠른 응답 제공
Token 대기열 관리 ✔️ Redis 기반의 큐 우선순위 제어

3. 트랜잭션 분리에 따른 문제 진단

3.1 예약 → 결제 흐름

sequenceDiagram
    participant R as Reservation Service
    participant P as Payment Service

    R->>R: 예약 완료
    R-->>P: 예약 완료 이벤트 or API 호출
    P->>P: 포인트 차감 + 결제 정보 저장

문제점