45분 배치에서 준실시간으로! 다수 도메인 데이터를 Kafka로 통합한 전환기
10년 누적 프로시저 기반 배치로 혜택 정보가 최대 45분 지연돼 고객 경험이 저하됐다.
10년 누적 프로시저 기반 배치로 혜택 정보가 최대 45분 지연돼 고객 경험이 저하됐다.
MSA 환경에서 프로모션·픽업 주문 등 흩어진 도메인 데이터를 통합하면서 API 호출 부하를 최소화해야 했다.
물류 센터를 확장해도 단일 센터 중심의 경직된 주문 처리와 수작업 분배 때문에 새 센터가 활용되지 못했다.
벌크액션 서버의 단일 Queue 에서 HOL Blocking 이 발생하고 인스턴스 단위 스케일링이 비효율적이다.
벌크액션 스파이크 트래픽에 Worker 수가 부족해 지연이 누적된다.
스타트업 개발자는 Node.js와 Spring, 모놀리식과 MSA, 클라우드와 온프레미스 같은 기술 의사결정을 짧은 시간에 반복해야 하는데, 설계 단계에서 놓치는 함정이 많다.
선착순 쿠폰 발급 시 Redis GET/INCR 원자성 부재로 경합 상태가 발생해 발급 성공 응답에도 실제 미발급이 남았다(미발급률 0.014%).
새벽 배치 작업이 DynamoDB 자원을 독점해 대고객 실시간 API에 쓰로틀링 에러가 발생했다.
올영세일 등 대규모 트래픽 구간에서 SDUI 응답 시간이 733ms까지 치솟아 실시간 UI 업데이트라는 SDUI의 핵심 가치 훼손
API 배포에 1~2일이 걸리고 700줄 JSON 명세 작성이 필요했다. 분산된 게이트웨이를 중앙에서 일관되게 관리하는 체계가 없었다.
@CircuitBreaker + @Cacheable 이중 어노테이션의 복잡성과 Cache Stampede(캐시 만료 시 DB 동시 요청 폭주) 문제로 API 응답이 급격히 지연됐다.
구독 설정 데이터가 하루 6000만 건 이상 조회되면서 RDB 쿼리가 1500 TPS를 넘나들었고, Caffeine 로컬 캐시(데이터 불일치)와 Redis 글로벌 캐시(CPU 70% 과부하) 모두 실패했다.
Redis 실무에서 TTL 미설정으로 인한 OOM, Big Key로 인한 성능 저하, Hot Key 만료 시 DB 폭주 등 운영 장애가 반복적으로 발생한다.
토니모리 공식몰은 프로모션 때마다 트래픽이 몰리면서 DB에 부하가 쏠려 응답이 지연됐고, 카테고리·배너·인기 상품처럼 거의 바뀌지 않는 데이터까지 매번 DB에서 조회되는 비효율이 있었다.
Node.js 기반 Apollo Gateway가 트래픽 급증 시 싱글스레드 이벤트 루프 블로킹으로 CPU·메모리 100% 도달 → 전 서비스 다운.
5분 배치 방식 에러 알림으로 장애 감지가 늦고, 스케줄러/배치/DB 중 하나만 장애가 나도 모든 알림이 끊겼다.
신년 룰렛 이벤트에서 여러 사용자가 동일 시점에 참여하면 트랜잭션이 중복 처리돼 같은 경품에 중복 당첨자가 나올 위험이 있었다.
분산 환경에서 자주 접근하는 메타데이터를 효율적으로 조회하면서 데이터 일관성 유지.
멤버십 정기 결제 API와 수단 변경 이벤트가 동시에 MongoDB 컬렉션에 접근해 Write Conflict로 인한 이중 결제가 발생했다.
대규모 증정 행사 때 수십만 명이 동시 접속하면서 ElastiCache 송신 네트워크 대역폭이 포화되어 장애 위험이 있었다.