2026-02-11
1일 1아티클
ITWORLD
대규모 트래픽 대응 분산 시스템 설계 원칙
문제 상황
- 대형 이벤트의 인프라 운영 시,
Thundering Herd문제 발생- 원인 : 대규모 트래픽
- 사례 : 올림픽 때의 미디어 업계, 블프 때의 이커머스, 금융 시스템, etc.
- 엔지니어링 팀은 대부분
Auto-scaling을 해결책으로 기대 - 매우 큰 규모에서는
Auto-scaling한계 존재- 반응 속도가 느림
- 지연 시간 급증 → DB 커넥션 풀 고갈 → 500 오류 발생
NBCUniversal이 사용하는 아키텍처 패턴
- 공격적인
Load shedding- 로드 밸런서로 들어오는 모든 요청 처리 시도 → 동시 접속이 폭증하는 이벤트 상황에 치명적
- 비즈니스 우선순위에 따른
Load shedding적용 Load shedding: 수용 가능한 범위의 사용자에 완벽한 서비스 제공, 나머지 사용자에게는 ‘잠시 기다려달라’는 안내 제공- 게이트웨이 계층에서 트래픽을 명확한 티어로 분류 : 티어1(반드시 성공해야 하는 요청), 티어2(오래된 캐시 데이터로 제공 가능한 요청), 티어3(실패해도 사용자에게 크게 드러나지 않는 요청)
Bulkhead, 블라스트 반경 격리Bulkheadpattern : 서로 다른 의존성을 각각 분리된 스레드 풀 / 커넥션 풀로 격리 → 특정 구성 요소 장애의 시스템 전체 확산 방지- 엄격한 타임아웃,
Circuit Breakerpattern : 비필수 의존성 50% 이상 실패 시, 즉시 해당 호출 중단 및 기본값 반환 - 고처리량 서비스는, 스레드 풀 격리보다 세마포어 격리 : 스레드 풀은 컨텍스트 스위칭 오버헤드 존재, 세마포어는 허용되는 동시 호출 수 제한 (초과 트래픽을 큐에 안 쌓고 즉시 거부)
- 요청 병합
- 동시에 수많은 동일 요청 → 캐싱만으로는 한계 (
Cache Stampede문제 : 인기있는 Cache key 만료 시, 수많은 요청이 동시에 Cache miss 감지 → 해당 데이터 재생성을 위해 결국 DB에 몰려듦) Singleflight요청 병합 기법 : Cache miss 발생 시, 먼저 들어온 단 1개의 요청만 DB 접근 (나머지 요청은 대기 상태로 유지)X-Fetch알고리즘(확률적 조기 만료) : 캐시 항목 완전 만료 시점 전에(유효할 때), 백그라운드로 데이터를 다시 가져오는 방식 → 사용자는 항상 warm cache에 접근,Cache Stampede문제 사전 차단
- 동시에 수많은 동일 요청 → 캐싱만으로는 한계 (
- 게임데이 리허설
- 게임데이 : 실 운영 환경에서 대규모 트래픽 상황 시뮬레이션, 인위적 장애 주입
- 앞서 적용된 기법이 정상 작동하는지 검증
오늘 배운 것
- 회고
- 서비스 홍보 및 사용자 데이터 수집
- 구글 애널리틱스 활용
- 피드백 도구 활용 (
smore)
내일 할 일
- 포트폴리오 작성