kjp0411 님의 블로그
내일배움캠프 단기심화 Java - 본 캠프 Day 45 본문
2026.04.16
오늘 한 일
- 최종 프로젝트 주제 선정: 티켓팅 시스템 (Ticketing System)
- 프로젝트 방향성 논의
- 좌석 기반 예약 시스템 중심 설계
- 실제 티켓팅 서비스(콘서트, 공연 등)를 고려한 구조 고민
- 좌석 관련 요구사항 명세서 초안 작성
- 좌석 생성 방식 정의
- 좌석 상태 관리 정책 설계
- 좌석 조회 기능 요구사항 정리
오늘 배운 점
1. 단순 기능 구현이 아니라 도메인 설계가 핵심이다
좌석은 단순 데이터가 아니라 상태(State)를 가지는 핵심 도메인
- AVAILABLE (예약 가능)
- HELD (임시 점유)
- RESERVED (결제 완료)
- 특히 동시성 문제를 고려해야 하는 대표적인 영역
티켓팅 시스템의 핵심은 "좌석을 누가 먼저 차지하느냐"를 정확하게 제어하는 것
2. 요구사항 명세서의 중요성
- 바로 개발에 들어가는 것이 아니라 명확한 요구사항 정의 → 이후 설계/구현의 기준이 됨
- 특히 좌석 시스템은
- 상태 변화
- 시간 제한 (예: 10분 점유)
- 결제 실패 시 처리
같은 정책이 명확해야 함
애매한 상태로 개발하면 버그 및 동시성 문제 발생 가능성이 높음
3. 좌석 시스템에서 고려해야 할 핵심 요소
좌석 상태 관리
- 예약 요청 시 → HELD
- 일정 시간 내 결제 성공 → RESERVED
- 결제 실패 또는 시간 초과 → AVAILABLE
점유 시간 정책
- 좌석 선택 후 10분간 점유 유지
- 이후 자동 해제 필요 (Scheduler 또는 TTL 활용 고려)
동시성 제어 필요성
- 여러 사용자가 동시에 같은 좌석을 선택할 수 있음
- 해결 방법 고민 필요
- DB Lock
- Redis 기반 분산 락
- Queue 기반 처리
느낀 점
- 기존에는 CRUD 중심 개발을 했지만 이번 프로젝트는 실제 서비스 구조를 설계하는 경험에 가까움
- 좌석 시스템은 단순 조회/등록이 아니라 상태, 시간, 동시성이 결합된 문제라는 점이 중요
내일 할 것
- SA 문서 작성
'TIL' 카테고리의 다른 글
| 내일배움캠프 단기심화 Java - 본 캠프 Day 47 (0) | 2026.04.20 |
|---|---|
| 내일배움캠프 단기심화 Java - 본 캠프 Day 46 (0) | 2026.04.17 |
| 내일배움캠프 단기심화 Java - 본 캠프 Day 44 (1) | 2026.04.15 |
| 내일배움캠프 단기심화 Java - 본 캠프 Day 43 (0) | 2026.04.14 |
| 내일배움캠프 단기심화 Java - 본 캠프 Day 42 (0) | 2026.04.13 |
