아직 배워가는 단계이지만
열린 마음으로 서로의 코드를 나누며,
내일은 조금 더 성장한 서비스를 만들어 가보고 싶습니다.
- 기간: 2026/05/14~2026/05/31 (약 2주, 6인팀)
- 설명: 주문 생성부터 배송 완료까지의 흐름을 Kafka 기반의 오케스트레이션/코레오그라피 Saga 패턴으로 처리하는 Spring Boot MSA 물류 관리 플랫폼 프로젝트입니다.
- 핵심 설계: MSA(배포 환경 대비), EDA(with Kafka), Saga Pattern, feign 통신
분산 트랜잭션, 서킷 브레이커, 동시성 제어, Zipkin 분산 추적 - 목표:
동시성 제어를 통한 데이터 정합성 보장,
그리고 재시도 로직에서의 멱등성 확보 사이에서
균형있게 최적화하는 문제에 집중
- JUnit5 & Mockito를 활용한 테스트 코드 설계
Claude-AI로 복잡한 비즈니스 로직의 테스트 케이스를 빠르게 설계하여 단위 테스트 진행
- 상태 전이 캡슐화
배송 경로의 상태 변화(WAITING → IN_TRANSIT → ARRIVED)를 엔티티 내부의 도메인 메서드에서만 제어하도록 구현하여, 외부에서 비정상적인 상태 변경이 불가능하도록 차단
- 이중 동시성 제어 (배송 담당자 배정)
PESSIMISTIC_WRITE (비관적 락)로 중복 배정 시나리오를 방지하고, JPA @Version 기반의 낙관적 락을 병행하여 시스템 처리량과 무결성 간의 균형 확보
- 복원력(Resilience) 설계
배송 담당자 배정 실패 시 Scheduler를 통한 재시도 로직을 구현하여, 이벤트 기반 시스템에서의 데이터 누락 방지 및 서비스 안정성 강화
- 기간: 2026/06/10~2026/07/10 (약 4주, 6인팀)
- 설명: 팬덤 버티컬 SNS의 Spring Boot MSA 서비스로, 예매 시 10만 건 규모의 동시 진입 트래픽에서도 좌석 정합성을 보장하는 것이 목표.
- 핵심 설계: 핵심 설계: EDA(with Kafka), 코레오그래피 Saga Pattern, Redis 원자연산(Lua Script), 대기열
트래픽 성격별 자원 분리, 동시성 제어, 멱등성 확보 - 목표:
일시적으로 트래픽이 몰리는 티켓팅과 불특정하게 트래픽이 몰리는 SNS를 분리하여
어느 한쪽이 몰려도 다른 흐름이 함께 무너지지 않도록 하는 문제에 집중
- 트래픽 성격에 따른 Redis 인스턴스 분리
일반 캐시/세션용 Redis와 티켓팅 대기열/분산락/카운터용 Redis를 물리적으로 분리하여, 예매 시작 시 대기열 폭주가 로그인·세션 같은 일반 트래픽의 성능을 갉아먹지 않도록 격리
- 예매 트래픽 분산 방법
리소스가 제한적이므로 10만 건 동시 진입 상황에서는 유입량 자체를 줄이는 것을 우선으로 판단, 대기열 진입 제한과 SSE 기반 실시간 순번 push로 폴링 부하 없이 입장 트래픽을 평탄화
- Redis Lua 스크립트 기반 좌석 선점 원자성
재고 확인·선점·카운트 증가를 하나의 Lua 스크립트로 원자 처리하고, 소유권 상태를 HELD→PENDING→CONFIRMED 3단계로 나눠 체크아웃 진행 중인 좌석은 해제 요청을 거부하도록 레이스 윈도우를 제거
- 코레오그래피 SAGA + 멱등성 다층 방어
좌석 선점·주문 생성·결제·확정을 Kafka 이벤트로 느슨하게 연결하고, 결제 실패 시 이벤트 기반 보상(REFUND_REQUESTED)으로 복구. Redis SETNX + DB 부분 UNIQUE 인덱스 이중 체크로 네트워크 재시도가 중복 처리로 이어지지 않도록 방어


