Throttling 이란?

이eun·2025년 1월 7일

Throttling(스로틀링)은 컴퓨팅 및 네트워크 시스템에서 자원의 사용률을 제한하거나 속도를 조절하는 메커니즘입니다. 주로 시스템 성능을 보호하거나 공정한 자원 배분을 위해 사용됩니다.

1. Throttling의 목적

시스템 보호:

과도한 요청이 서버, 데이터베이스, 또는 네트워크에 과부하를 유발하지 않도록 제한.
예: API 서버가 초당 1,000건 이상의 요청을 처리하지 못하도록 제한.
자원 배분:

여러 사용자가 공유 자원을 사용하는 경우, 특정 사용자 또는 프로세스가 자원을 독점하지 못하도록 보장.
예: 클라우드 플랫폼에서 사용자가 할당된 CPU 또는 메모리를 초과 사용하지 못하게 제한.
비용 관리:

사용량이 급증하여 예산 초과를 방지.
예: 클라우드 서비스 요금이 요청 횟수에 따라 과금되는 경우.

2. Throttling의 작동 원리

Throttling은 일반적으로 속도 제한(Rate Limiting)과 제어 정책을 기반으로 작동합니다.

(1) 속도 제한(Rate Limiting)
특정 시간 단위 내에 허용되는 요청 수를 설정.
예시:
1초에 최대 100개의 API 요청만 허용.
매월 최대 10,000개의 이메일 전송 가능.

(2) 제어 정책
소프트 제한: 일정 범위를 초과하면 경고 메시지를 보내거나 속도를 줄임.
하드 제한: 요청을 차단하거나 에러를 반환.
정책에 따라 특정 작업을 지연(Delay)시키거나 요청을 거부(Reject)함.

3. Throttling이 사용되는 사례

API 호출:

클라우드 제공 업체나 SaaS 서비스에서 사용자가 초당 또는 분당 호출 가능한 API 요청 수를 제한.
AWS, Google Cloud 등에서 무료 계정과 유료 계정의 호출 한도를 설정.
네트워크 트래픽:

대역폭 제한을 설정하여 네트워크 혼잡을 방지.
예: QoS(Quality of Service) 정책으로 대역폭을 조절.
서버 성능 보호:

웹 서버나 데이터베이스에서 동시 연결 또는 트랜잭션 수를 제한.
예: SQL 데이터베이스에서 동시 쿼리 수를 제한하여 성능 저하 방지.
클라우드 리소스 관리:

CPU, 메모리, IOPS 등의 사용량을 제한.
예: EC2 인스턴스의 네트워크 대역폭 제한.

4. Throttling의 구현 방법

토큰 버킷 알고리즘(Token Bucket Algorithm):

요청을 처리하기 위해 토큰이 필요하며, 일정 간격으로 토큰이 추가됨.
토큰이 없으면 요청이 거부되거나 대기.
고정 윈도우 알고리즘(Fixed Window Algorithm):

일정 시간 단위로 요청 수를 제한.
예: 매 1초 동안 최대 10개의 요청 허용.
슬라이딩 윈도우 알고리즘(Sliding Window Algorithm):

고정 윈도우를 보완하여 더 세밀한 제한을 구현.
최근 일정 시간 동안의 요청을 기준으로 허용 여부 결정.

5. Throttling의 장점과 단점

장점:
시스템의 안정성과 가용성 유지.
공정한 자원 배분 보장.
악의적인 사용(DoS 공격 등) 방지.

단점:
적절히 설계되지 않으면 사용자 경험 저하.
지나치게 엄격하면 성능 저하를 초래.
요청 제한으로 인해 일부 서비스 중단 가능성.

6. 예시

API Throttling 예시
AWS API Gateway:

기본 한도: 1초당 10,000개 요청.
초과 시: 429 Too Many Requests 오류 반환.

GitHub API:

인증된 사용자: 1시간당 5,000개 요청 허용.
초과 시: 추가 요청이 차단됨.
CLI 기반 네트워크 대역폭 Throttling

tc qdisc add dev eth0 root tbf rate 1mbit burst 32kbit latency 400ms

네트워크 인터페이스 eth0에 1Mbps 대역폭 제한 적용.

7. 요약

Throttling은 시스템 성능과 안정성을 보호하고 자원 사용을 제어하기 위한 중요한 기법입니다. 이를 통해 과도한 트래픽, 리소스 독점, 비용 초과 등을 방지하며, 공정한 자원 사용을 가능하게 합니다.

0개의 댓글