본문으로 건너뛰기
개인

콘서트 예약 서비스

2024-10-05 — 2024-11-30

항해플러스 백엔드 과정에서 동시성 제어와 대규모 트래픽 처리를 심층 학습한 콘서트 좌석 예약 서비스

콘서트 예약 서비스 project cover image

프로젝트 설명

대규모 트래픽 환경에서의 동시성 문제를 다양한 락 전략(비관적 락, 낙관적 락, Redis 분산 락)으로 해결하고, 시나리오별 최적의 동시성 제어 방식을 선정한 프로젝트이다. 좌석 선점에는 낙관적 락, 포인트 충전과 결제에는 Redisson 기반 분산 락을 적용하는 하이브리드 전략을 설계했으며, Redis 캐싱과 DB 인덱싱으로 조회 성능을 최적화하고 Kafka를 활용한 이벤트 기반 아키텍처로 시스템 간 결합도를 낮췄다. K6 부하 테스트를 통해 성능 병목을 식별하고 개선하는 전 과정을 경험했다.

주요 내용

  • 낙관적 락으로 좌석 예약 응답 시간 50% 개선 (1,678ms → 835ms)
  • 시나리오별 하이브리드 락 전략 설계 (낙관적 락 + Redisson 분산 락)
  • Redis 캐싱으로 TPS 15배 향상 (100 → 1,500), DB 쿼리 94% 감소
  • Kafka 이벤트 드리븐 아키텍처로 도메인 간 결합도 제거
  • K6 부하 테스트 기반 성능 병목 식별 및 개선

깨달은 점

  • 💡 비관적/낙관적/분산 락의 트레이드오프를 비교하며 동시성 제어의 본질적 차이를 이해
  • 💡 시나리오별 하이브리드 락 전략 설계로 단일 솔루션이 아닌 맥락 기반 선택의 중요성 학습
  • 💡 Redis 캐싱과 DB 인덱스 최적화를 병행하여 읽기 성능을 극대화하는 계층적 캐싱 전략 경험
  • 💡 Kafka 기반 이벤트 드리븐 아키텍처로 도메인 간 결합도를 제거하는 비동기 통신 설계 학습

기술 스택

Java Spring Boot JPA Redis MySQL Kafka Docker K6

관련 글

  • JPA 비관적 락과 낙관적 락 및 재시도
  • Spring Boot 콘서트 예약 시나리오 동시성 문제 분석
  • Spring Boot Redis를 활용한 분산 락 구현
  • 캐시(Cache)와 캐싱 전략(Caching Strategy)

관련 링크

  • erd
  • api Spec
  • sequence Diagram
  • requirements
  • project Structure
  • concurrency Analysis
  • caching Strategy
  • index Optimization