한 줄 정의

동일한 자원에 대한 대량의 중복 읽기 요청이 몰릴 때 최상단 애플리케이션 레이어에서 이를 하나의 요청으로 묶어 DB/캐시 조회를 단 1회만 수행하고 그 결과를 동시 대기 중인 모든 요청에 응답하는 기술.

핵심 요지

  • Thundering Herd 방어: 바이럴 링크나 핫 키 조회 시 수백~수만 개의 동일 요청이 쏟아져도 데이터베이스 조회를 오직 1회로 한정시킴.
  • Singleflight 패턴: Go 언어의 singleflight 패턴이나 Nginx proxy_cache_use_stale / lock처럼 요청 그룹핑 처리.
  • 백엔드 자원 보호: DB Read IOPS 소모를 대폭 줄이고 불필요한 캐시 미스 오버헤드를 차단함.

상세

  • 작동 매커니즘:
    1. Key A에 대한 첫 요청 도착 DB 조회 실행.
    2. 처리 중 동시 수신 실행 대기 큐에 바인딩.
    3. 결과 반환 대기 중인 모든 요청에 즉시 방송(Broadcast).

예시

충돌

  • 첫 번째 요청 지연 위험: 첫 번째 요청 실행 시 장애나 무한 블로킹이 터지면 뒤이어 대기 중인 모든 병합 요청이 동시 타임아웃되는 위험이 있으므로 적절한 Timeout 설정 필수.

관련 노트