한 줄 정의
동일한 자원에 대한 대량의 중복 읽기 요청이 몰릴 때 최상단 애플리케이션 레이어에서 이를 하나의 요청으로 묶어 DB/캐시 조회를 단 1회만 수행하고 그 결과를 동시 대기 중인 모든 요청에 응답하는 기술.
핵심 요지
- Thundering Herd 방어: 바이럴 링크나 핫 키 조회 시 수백~수만 개의 동일 요청이 쏟아져도 데이터베이스 조회를 오직 1회로 한정시킴.
- Singleflight 패턴: Go 언어의 singleflight 패턴이나 Nginx proxy_cache_use_stale / lock처럼 요청 그룹핑 처리.
- 백엔드 자원 보호: DB Read IOPS 소모를 대폭 줄이고 불필요한 캐시 미스 오버헤드를 차단함.
상세
- 작동 매커니즘:
- Key A에 대한 첫 요청 도착 DB 조회 실행.
- 처리 중 동시 수신 실행 대기 큐에 바인딩.
- 결과 반환 대기 중인 모든 요청에 즉시 방송(Broadcast).
예시
- 트래픽 폭증 시 동일한 URL 단축 코드 조회 요청들을 병합 처리하여 DB 장애 방지.
충돌
- 첫 번째 요청 지연 위험: 첫 번째 요청 실행 시 장애나 무한 블로킹이 터지면 뒤이어 대기 중인 모든 병합 요청이 동시 타임아웃되는 위험이 있으므로 적절한 Timeout 설정 필수.