ログイン 出店する
← 가이드 목록
시작하기

Load Shedding이란? 서버가 감당하지 못할 때 일부 요청을 버리는 이유 쉽게 이해하기

Load Shedding은 서버가 감당할 수 있는 양보다 요청이 많을 때 일부를 의도적으로 거절해 시스템을 보호하는 과부하 전략입니다. Bounded Queue·503·Bulkhead·Backoff까지 초보 기준으로 정리합니다.

Load Shedding이란? 서버가 감당하지 못할 때 일부 요청을 버리는 이유 쉽게 이해하기
Load Shedding 없이 Queue가 폭증하는 경우와 일부 요청을 거절해 핵심 기능을 살리는 비교도
처리할 수 없는 요청을 무한정 쌓기보다, 일부를 빠르게 거절해 나머지를 살립니다.

정원 넘는 요청을 의도적으로 줄이기

서버가 초당 1,000개까지 안정적으로 처리하는데 갑자기 10,000개가 들어오면, 전부 받을 때 Queue·메모리·Timeout이 불어 원래 살릴 수 있던 요청까지 실패합니다. Load Shedding(로드 셰딩)은 엘리베이터 정원처럼 — 감당량보다 많은 부하 중 일부를 떨어내 나머지라도 정상 처리하게 하는 과부하 보호입니다. 「무책임한 거절」이 아니라, 100명 전부 실패시키는 것보다 일부를 즉시 거절하고 나머지를 살리는 선택에 가깝습니다.

전부 수락 → Queue 폭증 → 전체 장애
일부 거절 → 나머지 정상 처리

Queue · Fail Fast · 언제 시작하나

순간 급증은 Bounded Queue로 흡수할 수 있지만, 유입이 처리량보다 오래 크면 매초 Queue만 늘어납니다. 검색 요청이 2분 뒤 처리돼도 사용자는 이미 떠난 뒤일 수 있어, 실시간 API는 「가능하면 처리 / 불가능하면 빠르게 실패」가 낫습니다(Fail Fast). 서버가 죽은 뒤가 아니라 CPU·Queue·Connection·응답 시간이 위험 구간에 들어가기 전에 시작합니다 — 병목은 CPU만이 아니라 DB Connection·외부 API 대기일 수도 있습니다.

동시 100 · 대기 Queue 200 → 301번째부터 거절
Unbounded Queue → 메모리·지연만 증가

Backpressure · 429·503 · 안정성 패턴

Backpressure는 보내는 쪽 속도를 줄이고, Load Shedding은 이미 넘치는 일부를 버립니다. 인터넷 사용자는 속도를 맞춰 주지 않을 수 있어 서버 측 거절이 필요합니다. 과부하·제한 응답은 계약에 맞게 HTTP 상태를 고릅니다 — 특정 클라이언트가 과도하면 429, 서버 전체가 어렵다면 503에 가깝습니다. Retry-After와 함께 Backoff+Jitter가 없으면 즉시 Retry가 다시 부하를 키웁니다. Bulkhead로 추천 Pool만 꽉 차게 두고 결제 Pool은 남긴 뒤, 그 이상은 Shedding합니다. Circuit Breaker·Timeout과도 한 세트입니다.

429 = 당신이 너무 많이 요청
503 = 현재 서버가 처리 어려움
Bulkhead = 피해 범위 · Shedding = 용량 초과분 제거

우선순위 · 캐시 · 계층 · 운영

과부하 때는 통계·추천부터 제한하고 결제·주문은 최대한 유지합니다(Priority-based · Graceful Degradation). 캐시는 Backend 부하를 줄이지만 Cache Stampede는 별도 대비가 필요합니다. CDN·Gateway·로드밸런서·앱·DB Connection 앞 어디서든 Admission할 수 있고, 가능하면 작업 시작 전에 판단합니다. 오토스케일은 용량을 늘리지만 부팅 전·공용 DB/외부 Rate Limit 한계는 Shedding으로 버팁니다. DDoS 방어와는 다르며 악성 트래픽은 CDN/WAF가 먼저입니다. Shed 비율·기능별 거절을 모니터링하세요 — 응답 20ms인데 절반이 503이면 「건강한 서버」가 아닙니다. Threshold를 단계적으로 올리고(Adaptive), 오래 높은 Shed면 용량·병목을 고칩니다.

최적화 → 확장 → Queue → 그래도 과부하 → Load Shedding
핵심 우선 · 비핵심 먼저 제한 · Shed 비율 추적

자주 묻는 질문

Load Shedding이란?

처리 용량을 넘는 요청이 들어올 때 일부를 의도적으로 거절해 전체 붕괴를 막는 과부하 보호 전략입니다.

버리면 왜 도움이 되나?

무한 Queue는 메모리·대기만 키워 원래 처리할 수 있던 요청까지 실패시키기 쉽습니다.

Rate Limit과 차이는?

Rate Limit은 단위 시간당 요청 한도, Load Shedding은 현재 시스템 과부하를 줄이기 위해 부하를 떨어내는 데 초점이 있습니다.

Bulkhead와 차이는?

Bulkhead는 기능별 자원을 미리 나누고, Shedding은 용량을 넘긴 요청을 제거합니다. Bulkhead 가이드를 참고하세요.

어떤 HTTP 코드를?

원인에 따라 429 또는 503 등을 씁니다. 의미는 API 계약에 맞게 정합니다.

근본 해결인가?

아닙니다. 용량·병목의 최종 보호 장치이며, Shed가 계속되면 원인을 고쳐야 합니다.

정리

Load Shedding = 감당량을 넘는 요청 일부를 빠르게 거절해 시스템을 살리는 전략입니다. 전부 받으면 Overload Collapse로 갈 수 있고, 비핵심부터 제한하면 결제는 지킬 수 있습니다. Bulkhead·Breaker·Backoff·오토스케일과 역할이 다릅니다. 그런데 Shedding은 「이미 과부하일 때」 버리는 쪽에 가깝습니다. 그보다 앞에서 「지금 새 요청을 받아도 되는가?」를 입구에서 판단해 수용 가능할 때만 들이는 방식이 Admission Control(어드미션 컨트롤)입니다.