속도 제한 및 할당량 관리
사용자별, 조직별, 엔드포인트별 할당량을 설정해 한 테넌트가 OpenAI 예산을 모두 소진하지 못하게 해보세요.
속도 제한 및 할당량 관리은(는) CoddyKit의 무료 AI Agents 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 AI Agents 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. AI Agents 강의에는 총 4개의 강의가 포함되어 있습니다.
이 강의의 일부는 아직 번역되지 않았으며 영어로 표시됩니다.
왜 제한이 필요한가요?
제한이 없으면 악의적인 클라이언트 하나가 다음과 같은 일을 할 수 있습니다.
- OpenAI 예산을 모두 소진합니다
- 다른 사용자가 이용할 자리를 빼앗습니다
- 서비스를 DDoS 공격에 노출합니다
속도 제한과 할당량은 비용, 지연 시간, 공정성을 보호합니다.
속도 제한과 할당량 비교
- 속도 제한 — 초당/분당 요청 수(단기)
- 할당량 — 일/월별 총예산(장기)
둘 다 필요합니다.
토큰 버킷 알고리즘
고전적인 알고리즘은 다음과 같습니다. 각 사용자에게 고정된 속도로 다시 채워지는 "버킷"이 있습니다. 각 요청은 토큰 하나를 사용합니다. 토큰이 없으면 서비스를 제공하지 않습니다.
Redis Token Bucket Example
def allow(user_id, rate=10, capacity=30):
key = f'rate:{user_id}'
now = time.time()
pipe = redis.pipeline()
pipe.hgetall(key)
state, _ = pipe.execute()
tokens = float(state.get('tokens', capacity))
last = float(state.get('last', now))
tokens = min(capacity, tokens + (now - last) * rate)
if tokens < 1:
return False
tokens -= 1
redis.hset(key, mapping={'tokens': tokens, 'last': now})
redis.expire(key, 60)
return TrueFastAPI Integration with slowapi
# pip install slowapi
from slowapi import Limiter
from slowapi.util import get_remote_address
limiter = Limiter(key_func=get_remote_address)
app.state.limiter = limiter
@app.post('/agents/qa')
@limiter.limit('10/minute')
def qa(req: AgentRequest):
...Different Limits Per Tier
class User:
def __init__(self, is_pro):
self.is_pro = is_pro
class State:
def __init__(self, is_pro):
self.user = User(is_pro)
class Req:
def __init__(self, is_pro):
self.state = State(is_pro)
def limit_for(req):
return '100/minute' if req.state.user.is_pro else '10/minute'
def qa(req):
limit = limit_for(req)
print(f'user is_pro={req.state.user.is_pro} -> rate limit {limit}')
return limit
qa(Req(is_pro=True))
qa(Req(is_pro=False))
비용 기반 할당량
요청 수만이 아니라 비용도 제한하십시오.
def check_budget(user_id, predicted_cost):
key = f'cost:{user_id}:{date.today()}'
spent = float(redis.get(key) or 0)
if spent + predicted_cost > daily_budget(user_id):
raise HTTPException(429, 'Daily budget exceeded')
# After the call:
redis.incrbyfloat(key, actual_cost)
redis.expireat(key, midnight_tomorrow_ts)동시성 상한
사용자별로 처리 중인 요청 수도 제한하십시오.
key = f'inflight:{user_id}'
redis.sadd(key, request_id)
if redis.scard(key) > 3:
raise HTTPException(429, 'Too many concurrent requests')
# Remove from set when the request finishes.전역 속도 제한
자체 서비스가 하위 LLM API를 과도하게 호출하지 않도록 보호하십시오.
global_key = 'rate:global:llm'
if redis.incr(global_key) > 60: # 60 calls per second
raise HTTPException(503, 'Service overloaded')
redis.expire(global_key, 1)Return Useful Errors
headers = {
'X-RateLimit-Limit': '60',
'X-RateLimit-Remaining': '0',
'X-RateLimit-Reset': str(reset_time),
'Retry-After': '30'
}
return JSONResponse({'error': 'rate-limited'}, status_code=429, headers=headers)분산 속도 제한
여러 API 서버를 실행한다면 속도 제한을 공유해야 합니다. Redis가 표준 백엔드이며, Cloudflare와 Kong에는 관리형 대안이 있습니다.
버스트 허용량
실제 사용량은 순간적으로 집중됩니다. 작은 버스트를 허용하십시오(예: 속도가 초당 10회라면 한 번에 30개의 요청 허용). 토큰 버킷 구현은 더 높은 capacity를 사용하여 이를 자연스럽게 처리합니다.
알림
다음과 같은 경우에 알림을 보내십시오.
- 전역 속도 제한 도달이 분당 X회를 초과할 때
- 어떤 사용자가 지속적으로 제한에 도달할 때(업그레이드가 필요하거나 버그가 있을 가능성이 높습니다)
- 일일 예산이 80%에 가까워질 때
이중 계층 보호
왜 속도 제한 BOTH AND 할당량을 사용합니까?
요약
속도 제한에는 토큰 버킷을, 할당량에는 비용 카운터를 사용하고, 사용자별 동시성 상한과 전역 장애 차단기를 적용하며, Retry-After가 포함된 유용한 429 응답을 반환합니다.
AI 튜터와 함께 AI Agents을(를) 배우세요 — 무료
브라우저에서 실제 코드를 작성하고 실행하며, 24/7 AI 튜터로부터 즉각적인 도움을 받고, 웹이나 앱에서 중단한 부분부터 계속 학습하세요.
- 코스
- 60
- 레슨
- 239
자주 묻는 질문
“속도 제한 및 할당량 관리” 강의는 무료인가요?
네 — “속도 제한 및 할당량 관리” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 AI Agents 강의 전체를 잠금 해제할 수 있습니다. AI Agents 강의에는 총 4개의 강의가 포함되어 있습니다.
“속도 제한 및 할당량 관리”에서 뭘 배우나요?
사용자별, 조직별, 엔드포인트별 할당량을 설정해 한 테넌트가 OpenAI 예산을 모두 소진하지 못하게 해보세요. 브라우저에서 직접 실행하는 실습 코드로 AI Agents을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
AI Agents을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 AI Agents은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“속도 제한 및 할당량 관리” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 AI Agents 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 AI Agents 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.