본문으로 건너뛰기

AI Gateway 멀티테넌시 전략

2026-08-11 작성19분 읽기

엔터프라이즈 LLM 플랫폼에서 멀티테넌시(multi-tenancy)는 조직·팀·사용자별 격리와 예산 통제를 구현하는 핵심 아키텍처입니다. 단일 LLM 인프라를 공유하면서도 비용 책임 분리, 데이터 격리, 정책 차별화를 보장해야 합니다. 이 문서는 LLM Gateway 레벨에서 멀티테넌시를 구현하는 두 가지 주요 접근(LiteLLM / Kong)과 격리 3단 모델을 다룹니다.

문서 위치

1. 배경: 왜 Gateway 레벨 멀티테넌시가 필요한가

공유 인프라의 도전과제

대규모 조직에서 LLM 플랫폼은 여러 조직·팀·프로젝트가 단일 추론 인프라를 공유합니다. 이때 다음 문제를 해결해야 합니다.

도전과제게이트웨이 멀티테넌시 솔루션
비용 폭탄: 한 팀의 과다 사용이 전체 예산 소진팀별 예산 hard limit, 초과 시 차단
데이터 유출: 테넌트 A의 프롬프트가 테넌트 B에 노출캐시·로그 namespace 분리, 벡터 DB 격리
Noisy Neighbor: 특정 사용자의 대량 요청이 다른 사용자 지연 유발Rate Limiting (QPM/TPM), 우선순위 큐
정책 차별화: 금융팀은 엄격한 Guardrails, 연구팀은 완화테넌트별 정책 프로파일

Gateway 레벨 격리의 이점

애플리케이션 레벨에서 멀티테넌시를 구현하면 각 앱이 독립적으로 예산·정책을 구현해야 합니다. Gateway 레벨로 끌어올리면 다음 이점이 있습니다.

  • 중앙 집중 제어: 예산·rate limit·guardrails를 단일 지점에서 강제
  • 감사 추적 통일: 모든 테넌트의 LLM 호출을 단일 audit log에 기록
  • 비용 투명성: 실시간 토큰 사용량·비용을 테넌트별로 대시보드 제공
  • 정책 일관성: 동일 조직 내 모든 앱이 동일한 보안·규정 정책 준수

2. LiteLLM 테넌시 모델

LiteLLM Proxy는 계층별 예산 및 Rate Limit 설정을 지원하여 조직·팀·사용자·키 단위로 비용 통제를 구현합니다.

계층 구조와 예산 정책

LiteLLM은 다음 계층에서 예산과 속도 제한을 설정할 수 있습니다.

계층설정 대상예산·제한 적용 범위예시
전역(Global Proxy)프록시 전체모든 요청월 $50,000 상한
팀(Team)팀 단위팀 소속 모든 키Engineering 팀 $10,000
사용자(Internal User)사용자 단위사용자가 소유한 모든 키alice@example.com $1,000
가상 키(Virtual Key)개별 API 키해당 키만sk-proj-abc123 $100
계층별 예산 우선순위

LiteLLM 공식 문서는 키가 팀에 속할 경우 팀 예산이 적용되고 사용자의 개인 예산은 적용되지 않는다고 명시합니다. 계층 간 예산 강제(상위가 하위를 cap)는 문서에서 "inward enforcement" 같은 명시적 용어로 설명되지 않지만, 키 생성 시 max_budget 상한 설정(upperbound_key_generate_params)과 팀·사용자별 지출 추적으로 계층별 제어가 가능합니다.

비용 추적 메커니즘

LiteLLM은 비용을 다음과 같이 추적합니다.

  • 키별 지출: LiteLLM_VerificationToken 테이블에 토큰 사용량·비용 자동 기록
  • 사용자별 집계: 키 생성 시 사용자 연결 → 해당 사용자 지출에 합산
  • 팀별 집계: 팀 소속 키의 지출을 팀 총액으로 집계
  • 리셋 주기: budget_duration으로 일·주·월 단위 리셋 설정 가능

비동기 로깅으로 요청 경로 밖에서 처리되므로 latency 영향을 최소화합니다.

Rate Limiting 전략

LiteLLM은 다음 Rate Limit을 지원합니다.

  • QPM (Queries Per Minute): 분당 요청 수 제한
  • TPM (Tokens Per Minute): 분당 토큰 수 제한 (입력+출력 합계)
  • RPM (Requests Per Minute): 분당 API 호출 수 제한

예산 검증은 Redis의 크로스 Pod 카운터에서 현재 지출을 읽어 수행합니다. fail_closed_budget_enforcement: true 옵션을 활성화하면 Redis·DB에서 지출을 검증할 수 없을 때 요청을 503으로 거부하는 fail-closed 동작을 강제할 수 있습니다 (기본값은 아니며 명시적 설정 필요).


3. Kong AI Gateway 테넌시 모델

Kong AI Gateway는 Consumer/Consumer Group 기반 정책으로 멀티테넌시를 구현하며, 토큰 인지(token-aware) Rate Limiting으로 비용 제어를 강화합니다.

Consumer 기반 정책

Kong의 멀티테넌시는 다음 엔티티로 구성됩니다.

엔티티역할정책 적용 범위
ConsumerAPI 키·JWT로 식별되는 개별 클라이언트Consumer 단위 rate limit, ACL
Consumer GroupConsumer를 묶는 논리적 그룹그룹 단위 정책 (예: Premium vs Free tier)

Kong의 AI Rate Limiting Advanced 플러그인은 다음 차원으로 정책을 정의할 수 있습니다.

  • Consumer / Consumer Group
  • IP 주소
  • HTTP 헤더
  • 경로(path)
  • 모델(예: gpt-4o, claude-opus-5)
  • 프로바이더(예: OpenAI, Anthropic)

매치 조건은 AND 로직으로 결합 가능하여 "특정 Consumer + gpt-4o 모델" 같은 다차원 제어가 가능합니다.

토큰 인지 Rate Limiting

Kong의 가장 강력한 기능은 토큰 단위 Rate Limiting입니다. 전통적인 요청 수(QPM) 제한은 각 요청의 비용이 다른 LLM 환경에서 부정확합니다. Kong은 4가지 토큰 카운팅 전략을 지원합니다.

전략계산 기준사용 사례
total_tokens프롬프트 + 완성 토큰 총합일반 throughput 제어
prompt_tokens입력 토큰만입력 크기 기반 제한
completion_tokens생성 토큰만출력 비용 제어
cost(입력 토큰 × 입력 단가 + 출력 토큰 × 출력 단가) / 1M실제 달러 비용 기반 제한
토큰 비용은 다음 요청에서 반영

LLM이 응답을 생성해야 토큰 수를 알 수 있으므로, 토큰 비용은 다음 요청에서 반영됩니다. 즉, 이미 예산을 초과한 요청은 완료되고 그 다음 요청이 차단됩니다. 이는 모든 토큰 인지 Rate Limiting의 근본적 제약입니다.

Kong과 LiteLLM의 본질적 차이

항목LiteLLMKong AI Gateway
아키텍처LLM 프록시 (100+ 프로바이더 통합)API Gateway + AI 플러그인
테넌시 단위Organization·Team·User·Key 계층Consumer·Consumer Group
비용 추적무료 OSS 코어에 포함기본 rate limit 무료, 고급 AI 기능은 Enterprise/Konnect 전용
토큰 인지 제한TPM(tokens per minute)토큰 수·비용 기반 4전략
배포 형태Python 기반, self-host 또는 CloudLua/C 기반, self-host 또는 Konnect SaaS
기존 인프라LLM 중심 신규 구축기존 Kong 운영 조직, LLM·MCP·A2A 트래픽 게이트웨이 공식 지원

4. 선택 기준: LiteLLM vs Kong (택일)

Kong + LiteLLM 조합 아키텍처 금지

이 두 솔루션은 either/or 선택지입니다. "Kong을 앞단에 두고 LiteLLM을 후단에" 같은 조합 아키텍처는 검증된 레퍼런스가 없으므로 절대 서술 금지입니다. 하나를 선택하여 단일 Gateway로 구성하세요.

선택 결정 트리

선택 기준표

조건권장이유
기존 Kong 운영 조직Kong AI Gateway기존 인프라·운영 지식 재사용, LLM·MCP·A2A 트래픽 게이트웨이 지원
OSS-first, FinOps 무료LiteLLM예산·비용 추적이 무료 코어에 포함, 100+ 프로바이더 통합
Enterprise, 고급 AI 플러그인Kong Enterprise/Konnect토큰 기반 rate limiting, AI Proxy Advanced 필요 시
Python 생태계LiteLLMLangChain·LlamaIndex 직접 통합, 빠른 프로토타이핑
고성능, 저메모리KongLua/C 기반, 대규모 트래픽 처리

전환 비용 고려

두 솔루션 모두 self-host 가능하므로, 초기 선택 후 다른 솔루션으로 전환하는 비용은 구성 작업 수준입니다. 벤더 락인 리스크는 낮습니다. 다만 다음 항목은 재작업이 필요합니다.

  • API 키 체계 (LiteLLM virtual key ↔ Kong Consumer 매핑)
  • 정책 설정 마이그레이션 (YAML ↔ Kong declarative config)
  • 대시보드·모니터링 스택 재구성

5. 격리 3단 모델

멀티테넌시는 게이트웨이 격리만으로 불충분합니다. 데이터와 관측성도 함께 격리해야 완전한 테넌트 분리가 보장됩니다.

격리 계층

① 게이트웨이 격리

격리 대상LiteLLM 구현Kong 구현
인증Virtual Key 발급·검증Consumer API Key·JWT
예산 차단max_budget 초과 시 요청 거부 (budget_exceeded 오류)cost rate limit 초과 시 429
모델 접근 제어키별 허용 모델 목록Consumer ACL + 모델 정책
Rate LimitingQPM·TPM 제한토큰 수·비용 기반 4전략

② 데이터 격리

벡터 DB 네임스페이스 분리: RAG 또는 Semantic Cache에서 사용하는 벡터 DB(Milvus, Qdrant, Redis)는 테넌트별 namespace로 분리해야 합니다.

# pseudo-code: Milvus 테넌트별 컬렉션
collection_name = f"embeddings_{tenant_id}"
milvus_client.create_collection(collection_name)

캐시 키 네임스페이스: Semantic Cache의 캐시 키는 tenant_id를 prefix로 포함해야 합니다. 상세 설계는 Semantic Caching 전략 — 캐시 키 설계와 멀티테넌시를 참조하세요.

# pseudo-code: Redis 캐시 키 네임스페이스
cache_key = f"cache:{tenant_id}:{language}:{embedding_hash}"

Row-level 격리: 관계형 DB(PostgreSQL 등)에서 프롬프트·응답 로그를 저장할 때는 Row-level Security (RLS) 로 테넌트 간 격리를 강제합니다.

③ 관측 격리

팀별 트레이스 라우팅: Langfuse 또는 LangSmith에서 테넌트별로 트레이스를 분리하여 한 팀이 다른 팀의 프롬프트·응답을 볼 수 없도록 합니다.

# pseudo-code: Langfuse 테넌트별 프로젝트
langfuse_context.update_current_observation(
metadata={"tenant_id": tenant_id, "team": team_name}
)

대시보드 권한: Grafana·CloudWatch 대시보드는 팀별로 필터링된 뷰를 제공합니다. tenant_id 레이블로 메트릭을 분리하고, 대시보드 권한은 IAM 또는 Grafana 조직 단위로 제어합니다.


6. 예산 정책 매트릭스

테넌트가 예산을 초과했을 때 어떻게 대응할지는 정책 선택입니다. 하드 차단·소프트 알림·모델 다운그레이드 등 다양한 전략을 조합할 수 있습니다.

정책 패턴

정책동작사용 사례구현
하드 차단예산 초과 시 즉시 403/429 반환엄격한 비용 통제, 내부 부서별 예산max_budget 도달 시 Gateway 차단
소프트 알림예산 80% 도달 시 경고 메일, 초과 시 계속 허용연구팀·프로토타이핑, 사후 청구CloudWatch Alarm + SNS
폴백 (다운그레이드)예산 초과 시 저가 모델로 자동 전환SLA가 낮은 내부 도구, FAQ 챗봇Gateway Cascade Routing 정책
쓰로틀링예산 초과 후 QPM을 절반으로 감축점진적 제한, 완전 차단 회피Dynamic Rate Limit 조정
폴백 전략과 Cascade Routing

"예산 초과 시 저가 모델로 다운그레이드"는 Request Cascading — 지능형 모델 라우팅의 Budget-based Routing 패턴으로 구현합니다. 예: Premium 모델(gpt-4o) 예산 소진 시 자동으로 gpt-4o-mini 또는 자체 호스팅 vLLM으로 폴백.

상세 메터링·Chargeback

예산 정책의 후단(예산 집행 후 청구·배분)은 별도 문서에서 다룹니다. 팀별 비용 배분, 부서 간 청구(chargeback), AWS Cost Allocation Tags 연동 등은 LLM FinOps Chargeback를 참조하세요.


7. 실전 체크리스트

Gateway 설정

  • 테넌트별 virtual key 또는 Consumer 발급
  • 팀·사용자·키 계층별 예산·rate limit 설정
  • 예산 초과 정책 결정 (하드 차단 / 소프트 알림 / 폴백)
  • 토큰 인지 rate limiting 활성화 (Kong의 경우)

데이터 격리

  • 벡터 DB namespace를 tenant_id로 분리
  • Semantic Cache 키에 tenant_id prefix 포함
  • Row-level Security (RLS) 활성화 (PostgreSQL 등)
  • 크로스 테넌트 데이터 접근 단위 테스트 작성

관측성·감사

  • Langfuse 트레이스에 tenant_id 태그
  • 팀별 대시보드 필터 구성 (Grafana tenant_id 레이블)
  • 예산 80% 도달 시 SNS·이메일 알림
  • 감사 로그 최소 90일 보존 (테넌트별 비용·사용량)

보안

  • Virtual key 또는 Consumer 인증 강제 (익명 접근 금지)
  • PII 포함 프롬프트는 Guardrails로 redact 후 로깅
  • 테넌트 간 키 공유 금지 (정책 문서화)

참고 자료

공식 문서

관련 문서 (내부)