Solo Backend Project · High Traffic

Flash Ticket

수만 명이 동시에 몰리는 선착순 티켓 예매 플랫폼. 중복 예매 원천 차단, 재고 정합성 보장, Stateless 수평 확장을 목표로 Hexagonal Architecture 기반으로 설계·구현. Java 25 + Spring Boot 4 최신 스택.

Java 25Spring Boot 4.0PostgreSQLRedisKafkaHexagonalTestcontainers

핵심 기술 구현

버스트 트래픽 제어, 중복 방지, 재고 정합성까지 — 선착순 예매의 핵심 과제 해결

버스트 트래픽 대기열

오픈 순간 집중되는 동시 요청을 Redis 기반 대기열로 제어. 시스템 허용 범위 내에서만 예매 플로우에 진입.

멱등성 키 중복 방지

동일 사용자의 중복 예매·주문 생성을 Redis 멱등성 키로 원천 차단. 재시도·더블클릭에도 안전한 요청 처리.

재고 원자적 차감

Redis 원자 연산 + DB 레벨 락으로 좌석·티켓 재고의 정확한 차감과 일관성 유지. 동시성 테스트로 경합 시나리오 검증.

TTL 임시 홀드

결제 전 좌석을 TTL 기반으로 임시 홀드. 이탈 시 자동 해제되어 재고가 잠기지 않고, 확정 시 주문으로 전환.

Kafka 비동기 후처리

결제 알림·로깅 등 비핵심 작업은 Kafka로 비동기 처리. 핵심 예매 경로의 지연을 최소화하고 서버는 Stateless 유지.

Testcontainers 검증

단위 테스트 + Testcontainers 통합 테스트 + 동시성 테스트(재고 차감, 중복 예매 경합). 버그 수정 시 재현 테스트 필수 원칙.

아키텍처 하이라이트

01

Hexagonal Architecture

도메인은 순수 자바로 프레임워크 어노테이션 금지. Inbound/Outbound Port 인터페이스로 REST·JPA·Redis·Kafka 어댑터를 격리. 모든 의존성이 바깥에서 도메인 안쪽으로 향함.

domain / application(ports) / adapter(in·out)
02

6개 핵심 도메인 체인

Event → Queue → Inventory → Reservation → Order → Payment. 이벤트 정보부터 대기열, 원자적 재고 차감, TTL 홀드, 확정 주문, 결제까지 선착순 예매의 전체 흐름을 도메인으로 분리.

event → queue → inventory → reservation → order → payment
03

분산 환경 전제 동시성 제어

단일 노드를 가정하지 않는 설계. Redis 원자 연산(대기열·재고·멱등성 키·임시 홀드) + DB 레벨 락으로 크리티컬 섹션 보호. 애플리케이션 서버는 Stateless로 수평 확장 자유.

atomic ops + DB lock + idempotency key
04

성능 원칙

N+1 쿼리 방지, 이벤트 상세 등 핫 데이터 캐싱, 페이지네이션 필수, 비핵심 작업 Kafka 비동기 처리를 프로젝트 원칙으로 강제.

no N+1 · hot cache · pagination · async
6
Core Domains
78
Commits
Java 25
Latest LTS
4.0
Spring Boot

기술적 의사결정

DECISION 01

왜 Hexagonal인가

고트래픽 시스템은 인프라 교체·확장이 잦음. 도메인을 Redis·Kafka·JPA로부터 격리하면 포트를 Mock으로 교체해 도메인만 빠르게 테스트하고, 어댑터 교체만으로 인프라 전환 가능.

DECISION 02

왜 멱등성 키인가

선착순 환경에선 사용자 재시도·더블클릭·네트워크 재전송이 필연. 요청 단위 멱등성 키로 중복 주문 생성을 저장소 레벨에서 차단해 애플리케이션 로직 실수와 무관하게 안전.

DECISION 03

왜 TTL 임시 홀드인가

결제까지 좌석을 무기한 점유하면 이탈 사용자가 재고를 잠금. TTL 홀드로 일정 시간 내 미결제 시 자동 반환 — 별도 배치 없이 Redis 만료로 해결.

DECISION 04

왜 Kafka 비동기 분리인가

알림·로깅이 예매 크리티컬 패스에 있으면 외부 장애가 예매 실패로 전파. Kafka로 분리해 핵심 경로 지연 최소화 + 장애 격리.