인프런이 성능 낮은 레거시 강의·결제 흐름을 그대로 두면서 SpringCamp 티켓 트래픽만 격리하기 위해, 단 4일 만에 Go·Fiber·Redis 기반 선착순 번호표 API를 만든 사례다. 가상 대기열 대신 왜 서킷 브레이커형 차단을 택했는지, 어떻게 40초 완판 동안 본 서비스 장애 없이 버텼는지를 부하 테스트 수치와 함께 풀어낸다.
핵심 포인트- 실운영 복제 + K6 부하 테스트로 병목을 특정: 강의 상세·장바구니 서버 한 대가 초당 30·10건뿐이라 공유 DB 병목 탓에 50대 이상 늘려도 처리량이 오르지 않아, 코드 전면 개선이 아닌 격리 전략을 선택
- 가상 대기열 대신 가벼운 번호표 API로 남은 티켓을 확인하고 매진 뒤 상세·장바구니 요청을 앞단에서 차단 — 매진 전 40초만 확장하면 무거운 쓰기 트랜잭션이 급감한다는 판단
- Pulumi로 전용 인프라를 10분 만에 복제하고, Redis 원자 증가 연산 + Sorted Set 예약자 명단으로 매진·중복·순번을 교차 검증. c6i.large 3대로 초당 5만 요청을 처리하고 Aurora DNS 캐시 쏠림은 RDS Proxy로 해소
왜 읽나짧은 기한과 레거시 제약 아래 대규모 선착순 트래픽을 격리해야 하는 팀에게, 번호표 API + Redis 원자연산 + 관리형 프록시를 엮는 실전 청사진.