Agentgateway 리뷰: 다양한 기능을 갖춘 새로운 AI 게이트웨이
Source: Dev.to
소개
agentgateway 은 Solo가 AI 시나리오를 위해 특별히 개발한 데이터 플레인입니다. Rust 로 작성되었으며 xDS( gRPC 기반 프로토콜)와 YAML 로 설정할 수 있습니다. 최근에는 오픈소스 버전의 agentgateway 로 kgateway 의 AI 데이터 플레인(이전에는 Envoy 기반)을 대체했으며, 엔터프라이즈 버전인 Gloo 도 이를 따를 것으로 예상됩니다.
게이트웨이는 네 가지 AI 시나리오를 지원합니다:
- MCP
- A2A
- LLM 제공자에게 추론 요청 프록시
- 추론 서비스 로드 밸런싱
아래는 각 시나리오에 대한 개요입니다. 논의는 오픈소스 agentgateway 를 중심으로 진행되며, 일부 기능은 엔터프라이즈 에디션에만 존재할 수 있습니다.
MCP
Agentgateway 는 기존 Envoy 데이터 플레인으로 관리하기 어려웠던 상태 저장 Model Context Protocol (MCP) 요청을 처리하기 위해 처음 만들어졌습니다. 따라서 MCP 지원이 가장 완전합니다.
세션 처리
- 기본적으로 MCP 는 상태 저장 프로토콜로 취급됩니다.
SessionManager구조체가 세션 생성 및 유지 관리를 담당합니다(코드 링크).SessionManager는 프로세스 내부 저장소이므로 여러 agentgateway 인스턴스가 세션 상태를 공유하지 않습니다.- 업스트림에 대한 스티키 세션을 위해서는
MCP-Session-ID헤더를 기준으로 consistent‑hash 하는 것이 더 간단하며, 이렇게 하면 서로 다른 인스턴스에서도 동일한 세션 ID 가 동일한 백엔드로 라우팅됩니다. SessionManager를 원격 저장소로 확장하는 것도 가능하지만 오버헤드가 추가됩니다.
기본적인 상태 저장 처리 방식이 일부에서는 실수라고 보고 있으며, 기본값을 무상태(MCP stateless) 로 바꾸려는 계획이 있습니다(토론).
멀티플렉싱
여러 백엔드가 구성된 경우, agentgateway 는 MCP 멀티플렉싱을 지원합니다:
- 툴 목록을 요청하면
tools/list를 모든 백엔드에 보내고, 툴 이름을${backend_name}_${tool_name}형태로 재작성합니다. - 이후 툴 호출은 적절한 백엔드로 라우팅됩니다.
- 멀티플렉싱이 불가능한 메서드는 “invalid method” 오류를 반환합니다.
REST‑to‑MCP 변환
Agentgateway 는 OpenAPI 사양을 이용해 RESTful API 를 MCP 툴로 변환할 수 있습니다:
- 전체 OpenAPI 스펙을 하나의 백엔드로 취급할 수 있습니다.
- 게이트웨이는 요청을 전달만 할 뿐, 실제 RESTful API 를 관리하지 않습니다.
- 현재 제한 사항:
application/json본문만 지원합니다.- HTTPS 업스트림은 아직 지원되지 않습니다.
- 구조화된 출력은 지원되지 않습니다.
additionalProperties와 같은 특정 스키마 세부 사항은 추가 처리가 필요합니다.
인증 및 인가
- OAuth 기반 MCP 인증: 보호된 리소스 메타데이터가
/.well-known/oauth-protected-resource/${resource}와 같은 경로에 노출됩니다.- CORS 헤더가 메타데이터 응답에 자동으로 추가되어 브라우저 기반 MCP 클라이언트를 쉽게 사용할 수 있습니다.
- JWKS 처리:
- 공개 키는 JWKS URL 또는 파일 경로에서 가져옵니다.
- JWKS URL 은 발급자 URL 및 타입에서 유도될 수 있습니다.
- 키는 설정 파싱 시에만 로드되며 주기적으로 갱신되지 않습니다(코드 참고).
- 인가는 JWT 필드와 MCP 속성을 기준으로 필터링하는 CEL 표현식 리스트를 사용합니다. 예시:
mcpAuthorization:
rules:
# 'echo' 를 누구나 호출 가능
- 'mcp.tool.name == "echo"'
# test-user 만 'add' 를 호출 가능
- 'jwt.sub == "test-user" && mcp.tool.name == "add"'
# claim nested.key == "value" 인 인증 사용자는 'printEnv' 접근 가능
- 'mcp.tool.name == "printEnv" && jwt.nested.key == "value"'
멀티플렉싱 상황에서는
mcpAuthorization이 툴 이름이 병합되기 전에 실행되므로, 규칙에서는 원본 툴 이름(백엔드 접두사 없이)을 확인합니다.
메트릭
Agentgateway 는 현재 mcp_requests 카운터만 제공하며, 툴별 혹은 지연 시간과 같은 상세 메트릭은 부족합니다.
A2A
Agent‑to‑Agent (A2A) 프로토콜 시나리오에서는 agentgateway 가 두 가지 주요 기능을 구현합니다:
- URL 재작성 – 에이전트 카드 URL 을 프록시된 백엔드가 아닌 게이트웨이를 가리키도록 변경합니다.
- 요청 파싱 – A2A JSON 요청을 파싱하고, 관측성을 위해 요청 메서드를 기록합니다.
LLM 제공자에게 추론 요청 프록시
Agentgateway 는 대형 언어 모델(LLM) 제공자에게 추론 요청을 프록시하면서 단순 전달 이상의 가치를 제공합니다:
- 관측성 – 토큰 사용량 및 첫 토큰 도착 시간(TTFT) 메트릭을 Server‑Sent Events(SSE) 스트림에 대해 수집합니다.
- 스트리밍 지원 – AWS Bedrock 의 이벤트 스트림과 같은 비‑SSE 스트리밍 포맷을 처리하는 전용 파서가 포함됩니다.
- 속도 제한 및 프롬프트 보호 – (세부 내용은 추후 기사에서 다룹니다.)
제공자에 구애받지 않는 API 표면
Agentgateway 는 일부 LLM 클라이언트 기능을 게이트웨이 수준으로 끌어올려 통합 노력을 줄이고, OpenAI 호환 외부 API 를 제공합니다. 현재 두 가지 라우트 타입을 지원합니다:
| Provider | Route |
|---|---|
| OpenAI | /v1/chat/completions |
| Anthropic | /v1/messages |
두 라우트 모두 채팅 스타일 엔드포인트이며, OpenAI 의 /v1/chat/completions 는 기능적으로 Anthropic 의 /v1/messages 와 동등합니다. 각각을 별도로 구현하면 하나의 제공자만을 목표로 하는 에이전트의 온보딩이 간편해집니다.
제한 사항:
- 구조화된 출력(예: OpenAI 의 structured outputs) 은 아직 지원되지 않습니다.
- 임베딩, 배치 및 기타 고급 기능도 아직 없습니다.
추론 확장 지원
Gateway API Inference Extension (https://gateway-api-inference-extension.sigs.k8s.io/) 은 스케줄러(EPP) 가 Envoy 의 gRPC ext_proc 프로토콜을 통해 게이트웨이와 통신하면서 분산 추론을 가능하게 합니다.
- 스케줄러는 목표 업스트림 주소를 나타내는
x-gateway-destination-endpoint헤더를 반환합니다. - 게이트웨이는 해당 엔드포인트로 추론 요청을 전달하여 사실상 얇은 프록시 역할을 수행합니다.
Red Hat 이 LLMD 프로젝트를 통해 AI 툴링(e.g., vLLM)에 투자하고 있는 점을 고려하면, 추론 확장은 AI 워크로드를 위한 표준 컴포넌트로 자리 잡을 가능성이 높아 보입니다.