kjp0411 님의 블로그
내일배움캠프 단기심화 Java - 본 캠프 Day 46 본문
TIL - 2026.04.17
오늘 한 일
- 티켓팅 시스템 프로젝트의 SA 문서 작성
- 프로젝트 주제와 목표를 구체적으로 정의
- 서비스 기능을 도메인 단위로 정리 (유저, 경기, 좌석, 예매, 결제)
- 기능을 단순 나열이 아니라 역할과 흐름 기준으로 그룹화
- 예매 시스템에서 핵심이 되는 대기열, 좌석 상태, 결제 흐름을 중심으로 기능 구조 설계
- 기능들을 중요도 기준으로 4단계 우선순위로 분류
- 향후 확장 기능(알림, AI 추천, 상품, 오토스케일링 등)도 별도로 정리
오늘 배운 점
1. 티켓팅 시스템은 CRUD보다 “동시성 문제”가 핵심이다
처음에는 회원, 좌석, 예매 같은 기능을 단순 CRUD로 생각했지만,
실제로 중요한 것은 여러 사용자가 동시에 접근하는 상황에서의 처리 방식이었다.
특히 좌석은 한 번에 한 명만 점유할 수 있기 때문에,
- 선점 처리
- 중복 예매 방지
- 상태 관리
와 같은 요소들이 핵심이라는 점을 느꼈다.
2. 대기열 시스템은 선택이 아니라 필수에 가깝다
대량 트래픽 환경에서는 모든 요청을 동시에 처리하는 것이 아니라,
순서를 제어하는 구조 자체가 필요하다는 걸 이해했다.
단순히 빠른 서버를 만드는 것이 아니라,
- 요청을 제한하고
- 순서를 보장하고
- 안정적으로 처리하는 흐름
을 만드는 것이 중요하다는 점을 배웠다.
3. 기능 정의는 “도메인 기준”으로 나눠야 한다
오늘 기능을 정리하면서 느낀 점은,
단순히 기능을 나열하는 것보다 어떤 도메인에 속하는지 기준으로 묶는 것이 훨씬 중요하다는 것이다.
예를 들어,
- 좌석 → 좌석 도메인
- 예매 → 예매 도메인
- 결제 → 결제 도메인
처럼 나누어야 이후에
- 서비스 분리 (MSA)
- 책임 분리
- 유지보수
가 쉬워진다는 걸 느꼈다.
4. 우선순위 설정이 시스템 방향을 결정한다
기능을 1~4순위로 나누면서 느낀 점은,
이 작업이 단순 정리가 아니라 시스템의 구현 방향을 정하는 작업이라는 것이었다.
특히,
- 대기열
- 좌석 상태 관리
- 결제 처리
를 상위 우선순위에 둔 것은
이 시스템이 “안정성 중심”으로 설계되고 있다는 의미라고 생각했다.
오늘 느낀 점
이번 작업은 단순히 기능을 적는 것이 아니라
“이 시스템이 어떤 문제를 해결하려는지”를 명확히 하는 과정이었다.
특히 티켓팅 시스템은 겉보기에는 단순해 보이지만,
실제로는 트래픽, 동시성, 데이터 정합성 같은 문제가 핵심이라서
이 부분을 어떻게 설계하느냐에 따라 시스템의 수준이 크게 달라질 것 같다는 생각이 들었다.
또한 기능을 정리하면서
이전보다 단순 구현이 아니라
흐름과 구조 중심으로 사고하려는 습관이 조금씩 생기고 있다는 느낌이 들어 의미 있었다.
오늘 생각해본 점
- 예매 시스템에서는 “좌석 선점 → 결제” 흐름을 어떻게 안전하게 보장할지가 핵심이다.
- 대기열을 어떤 방식으로 구현할지 (Redis, DB, 메시지 큐 등)는 이후 성능에 큰 영향을 줄 것이다.
- MSA로 확장할 경우, 현재 나눈 도메인 구조를 그대로 서비스 단위로 가져갈 수 있을지 고민이 필요하다.
- 처음부터 모든 기능을 완벽하게 만들기보다, 핵심 흐름을 먼저 안정적으로 구현하는 것이 중요하다.
내일 할 것
- 인프라 설계도
- 시스템 구조도
- 서비스 내부 요청 흐름(프로세스 동작 흐름), 이벤트 흐름
- 바운디드 컨텍스트, 컨택스트 맵 등
- API 명세서
- 테이블 명세서
- ERD 명세서
'TIL' 카테고리의 다른 글
| 내일배움캠프 단기심화 Java - 본 캠프 Day 48 (0) | 2026.04.21 |
|---|---|
| 내일배움캠프 단기심화 Java - 본 캠프 Day 47 (0) | 2026.04.20 |
| 내일배움캠프 단기심화 Java - 본 캠프 Day 45 (0) | 2026.04.16 |
| 내일배움캠프 단기심화 Java - 본 캠프 Day 44 (1) | 2026.04.15 |
| 내일배움캠프 단기심화 Java - 본 캠프 Day 43 (0) | 2026.04.14 |
