kjp0411 님의 블로그

내일배움캠프 단기심화 Java - 본 캠프 Day 47 본문

TIL

내일배움캠프 단기심화 Java - 본 캠프 Day 47

kjp0411 2026. 4. 20. 20:50

TIL - 2026.04.20

오늘 한 일

  • 티켓팅 시스템 프로젝트 구조 설계 진행
  • 좌석(Seat) 도메인 요구사항 구체화
  • 좌석 상태 전이 정책 정의 (AVAILABLE → HOLD → RESERVED 등)
  • 대기열(Queue) 도메인 분리 여부에 대해 고민
  • 전체 시스템에서 각 도메인의 책임 범위 재정의
  • 인프라 구성 역할 담당 (Gateway, Eureka, 배포 구조 등)

오늘 배운 점

1. 도메인은 "데이터"가 아니라 "책임"으로 나눈다

초기에는 좌석, 예매, 결제 등을 단순히 테이블 기준으로 나누려고 했지만
실제로는 각 도메인이 어떤 책임과 정책을 가지는지가 더 중요하다는 것을 다시 느꼈다.

  • 좌석: 상태 관리 (점유, 해제)
  • 예매: 비즈니스 흐름 관리
  • 결제: 트랜잭션 처리

같은 데이터라도 역할이 다르면 반드시 분리해야 한다.


2. 좌석 상태는 단순 CRUD가 아니라 "상태 머신"이다

좌석은 단순히 값이 바뀌는 것이 아니라
명확한 상태 전이 규칙을 가진다.

  • AVAILABLE → HOLD (선점)
  • HOLD → RESERVED (결제 완료)
  • HOLD → EXPIRED (시간 초과)
  • RESERVED → CANCELLED (환불 등)

이 흐름을 설계하면서
동시성 문제와 비즈니스 정책이 강하게 연결된다는 점을 이해했다.


3. 대기열은 별도 도메인으로 보는 것이 맞다

대기열은 단순 기능이 아니라

  • 트래픽 제어
  • 공정성 보장
  • 시스템 보호

를 담당하는 인프라 + 도메인의 중간 성격이다.

따라서 Ticketing 내부 로직이 아니라
독립적인 컴포넌트로 분리하는 방향이 더 적절하다고 판단했다.


4. 이번 프로젝트에서 맡은 역할은 "인프라 중심 백엔드"

단순 API 구현이 아니라

  • 서비스 간 구조 설계
  • 트래픽 대응 구조
  • 배포 및 운영 환경 구성

까지 담당하게 되면서
실제 백엔드 엔지니어 역할에 더 가까워지고 있다는 느낌을 받았다.


내일 할 일

  • Gateway + 인증 흐름 구조 정리