본 프로젝트는 콘서트 예약 플랫폼으로 사용자 인증, 콘서트 조회, 좌석 예약, 결제, 캐시 사용, 랭킹 집계 등 다양한 도메인 기능을 제공합니다.
현재는 대부분의 비즈니스 로직이 하나의 트랜잭션 안에서 동기적으로 실행되고 있습니다. 하지만 향후 서비스 확장성과 독립 배포 가능성을 고려해 MSA로의 전환을 검토 중입니다. 이 경우 도메인별 서비스가 독립 배포되며 트랜잭션 경계도 분리되므로 서비스 간 트랜잭션 일관성 확보 및 장애 격리를 위한 대책이 필요합니다.
본 보고서에서는 도메인 분리에 따른 트랜잭션 처리의 한계를 진단하고 이를 해결하기 위한 구조적 개선 방안으로 이벤트 기반 설계, 보상 트랜잭션(SAGA), 비동기 처리 전략, Outbox 패턴 등을 제시합니다.
도메인 | 주요 책임 | 독립 배포 여부 | 비고 |
---|---|---|---|
User | 사용자 인증 및 정보 관리 | ✔️ | 외부 OAuth 연동 가능성 고려 |
Concert | 콘서트 정보 및 좌석 구성 | ✔️ | 콘텐츠 CMS 역할 |
Reservation | 좌석 예약, 상태 전이 | ✔️ | 좌석과 사용자 연결 |
Payment | 결제 처리, 포인트 차감 | ✔️ | 외부 결제 연동 고려 |
Cash | 유저 캐시 관리, 충전/사용 기록 | ✔️ | 계좌 연동 가능성 고려 |
Ranking | 매진 시점 저장 및 랭킹 제공 | ✔️ | Redis 기반의 빠른 응답 제공 |
Token | 대기열 관리 | ✔️ | Redis 기반의 큐 우선순위 제어 |
sequenceDiagram
participant R as Reservation Service
participant P as Payment Service
R->>R: 예약 완료
R-->>P: 예약 완료 이벤트 or API 호출
P->>P: 포인트 차감 + 결제 정보 저장
문제점