Skip to content
View look516's full-sized avatar

Block or report look516

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
look516/README.md

안녕하세요, 궁금한 게 많은 백엔드 개발자 조아영입니다.

아직 배워가는 단계이지만
열린 마음으로 서로의 코드를 나누며,
내일은 조금 더 성장한 서비스를 만들어 가보고 싶습니다.

🛠 Tech Stack

AI
Claude

Skills
Java Spring Boot Kafka

DATA
MySQL PostgreSQL Redis

Environment
GitHub Docker

Communication/Docs
Notion Slack Swagger Postman


📌 Project

  • 기간: 2026/05/14~2026/05/31 (약 2주, 6인팀)
  • 설명: 주문 생성부터 배송 완료까지의 흐름을 Kafka 기반의 오케스트레이션/코레오그라피 Saga 패턴으로 처리하는 Spring Boot MSA 물류 관리 플랫폼 프로젝트입니다.
  • 핵심 설계: MSA(배포 환경 대비), EDA(with Kafka), Saga Pattern, feign 통신
    분산 트랜잭션, 서킷 브레이커, 동시성 제어, Zipkin 분산 추적
  • 목표:
    동시성 제어를 통한 데이터 정합성 보장,
    그리고 재시도 로직에서의 멱등성 확보 사이에서
    균형있게 최적화하는 문제에 집중

Delivery-service(담당 도메인) 특징

  1. JUnit5 & Mockito를 활용한 테스트 코드 설계
    Claude-AI로 복잡한 비즈니스 로직의 테스트 케이스를 빠르게 설계하여 단위 테스트 진행

  1. 상태 전이 캡슐화
    배송 경로의 상태 변화(WAITING → IN_TRANSIT → ARRIVED)를 엔티티 내부의 도메인 메서드에서만 제어하도록 구현하여, 외부에서 비정상적인 상태 변경이 불가능하도록 차단

  1. 이중 동시성 제어 (배송 담당자 배정)
    PESSIMISTIC_WRITE (비관적 락)로 중복 배정 시나리오를 방지하고, JPA @Version 기반의 낙관적 락을 병행하여 시스템 처리량과 무결성 간의 균형 확보

  1. 복원력(Resilience) 설계
    배송 담당자 배정 실패 시 Scheduler를 통한 재시도 로직을 구현하여, 이벤트 기반 시스템에서의 데이터 누락 방지 및 서비스 안정성 강화

  • 기간: 2026/06/10~2026/07/10 (약 4주, 6인팀)
  • 설명: 팬덤 버티컬 SNS의 Spring Boot MSA 서비스로, 예매 시 10만 건 규모의 동시 진입 트래픽에서도 좌석 정합성을 보장하는 것이 목표.
  • 핵심 설계: 핵심 설계: EDA(with Kafka), 코레오그래피 Saga Pattern, Redis 원자연산(Lua Script), 대기열
    트래픽 성격별 자원 분리, 동시성 제어, 멱등성 확보
  • 목표:
    일시적으로 트래픽이 몰리는 티켓팅과 불특정하게 트래픽이 몰리는 SNS를 분리하여
    어느 한쪽이 몰려도 다른 흐름이 함께 무너지지 않도록 하는 문제에 집중

Ticketing-service(담당 도메인) 특징

  1. 트래픽 성격에 따른 Redis 인스턴스 분리
    일반 캐시/세션용 Redis와 티켓팅 대기열/분산락/카운터용 Redis를 물리적으로 분리하여, 예매 시작 시 대기열 폭주가 로그인·세션 같은 일반 트래픽의 성능을 갉아먹지 않도록 격리

  1. 예매 트래픽 분산 방법
    리소스가 제한적이므로 10만 건 동시 진입 상황에서는 유입량 자체를 줄이는 것을 우선으로 판단, 대기열 진입 제한과 SSE 기반 실시간 순번 push로 폴링 부하 없이 입장 트래픽을 평탄화

  1. Redis Lua 스크립트 기반 좌석 선점 원자성
    재고 확인·선점·카운트 증가를 하나의 Lua 스크립트로 원자 처리하고, 소유권 상태를 HELD→PENDING→CONFIRMED 3단계로 나눠 체크아웃 진행 중인 좌석은 해제 요청을 거부하도록 레이스 윈도우를 제거

  1. 코레오그래피 SAGA + 멱등성 다층 방어
    좌석 선점·주문 생성·결제·확정을 Kafka 이벤트로 느슨하게 연결하고, 결제 실패 시 이벤트 기반 보상(REFUND_REQUESTED)으로 복구. Redis SETNX + DB 부분 UNIQUE 인덱스 이중 체크로 네트워크 재시도가 중복 처리로 이어지지 않도록 방어


📫 Contact

Velog Gmail

Pinned Loading

  1. 6pm 6pm Public

    Forked from 6pm-sparta/6pm

    Java

  2. swissmissed2/sparta-logistics swissmissed2/sparta-logistics Public

    Java 2 2

  3. SpartaTeam-9/spart-delivery SpartaTeam-9/spart-delivery Public

    Java 5

  4. moon8603/Software-Enginnering-Project_SoftWizards moon8603/Software-Enginnering-Project_SoftWizards Public

    JavaScript

  5. ticket_230320 ticket_230320 Public

    Java