거버넌스 없이 멀티에이전트 시스템을 구축했습니다. 내가 가졌으면 좋았을 3계층 스택
Source: Dev.to
위에 제공된 소스 링크만으로는 번역할 텍스트가 포함되어 있지 않습니다. 번역을 원하는 본문을 제공해 주시면 한국어로 번역해 드리겠습니다.
문제
당신은 멀티‑에이전트 시스템을 구축했습니다. 시스템은 정상적으로 작동합니다: 오케스트레이터가 작업을 전문 에이전트에게 할당하고, 에이전트들은 외부 API를 호출하며, 당신은 이를 배포합니다.
세 주가 지난 후, 당신은 결제 에이전트가 다음과 같은 문제를 일으켰음을 발견합니다:
- 승인 없이 토요일 새벽 1시 47분에 $4,200 환불을 처리했습니다;
- 해당 범위에 접근 권한이 없어야 할 에이전트가 고객 데이터를 열람하도록 허용했습니다; 그리고
- 어떤 원인인지 파악할 수 있도록 로그가 전혀 남아 있지 않았습니다.
이는 가상의 시나리오가 아닙니다. 에이전트를 프로덕션에 배포할 때, 안전을 보장하는 세 가지 인프라 계층을 구축하지 않으면 기본적으로 이런 결과가 나타납니다.
레이어 1 – 운영: Conduit
Conduit는 임시 스크립트를 시각적 파이프라인 스튜디오로 대체합니다:
- MCP 서버를 한 번 연결하고, 캔버스에서 파이프라인을 구축합니다.
- 각 단계에 대한 실시간 실행 로그(지연 시간, 토큰 비용, 입력, 출력).
- API 키는 AES‑256 암호화 금고에 저장되며 메모리에서만 복호화됩니다.
- 파이프라인 구성은 중앙에 저장되어 머신에 흩어져 있지 않습니다.
실제 차이점 – 워크플로가 중단될 때, 서비스 전반에 걸쳐 로그를 수동으로 연관시키는 대신 Conduit의 추적 뷰를 엽니다. 모든 단계가 실행 순서대로 표시됩니다.
Layer 2 – Trust: Codios
Codios는 각 에이전트에게 Ed25519 신원 (did:key)을 부여하고, 호출자가 피호출자에게 수행할 수 있는 작업을 정확히 정의하는 서명된 계약을 발행합니다.
# Issue a contract (server‑side)
contract = codios.contracts.issue(
caller_did=order_agent.did,
callee_did=payment_agent.did,
scopes=["payment:charge:max_10000usd"], # refund deliberately excluded
ttl_seconds=3600,
)
# Verify a contract (agent‑side, no network call)
contract = verify_contract(
token=request.headers.get("X-Codios-Contract"),
required_scope="payment:charge",
platform_public_key=CODIOS_PUBLIC_KEY,
)
- 스코프 제한은 암호학적으로 결합되어 있습니다 – 결제 에이전트는 이 계약을 사용하여 요청 본문과 관계없이 환불을 처리할 수 없습니다.
- 강제 적용은 데이터베이스 조회가 아니라 검증 시점에 이루어집니다.
- 추가 보호가 자동으로 적용됩니다: 재생 공격, 잘못 구성된 에이전트, 그리고 무단 호출이 차단됩니다.
레이어 3 – 거버넌스: A2A
가시성(Conduit)과 신뢰(Codios)만으로는 충분하지 않습니다. 에이전트 행동을 모니터링하고 문제가 보일 때 개입할 수 있는 레이어가 필요합니다. A2A는 네 가지 모듈을 추가합니다:
- Distributed tracing – 에이전트 루프에 몇 줄(≈5줄)만 추가하면 됩니다. 모든 LLM 호출, 도구 실행, 핸드오프가 타이밍과 I/O 정보를 포함한 스팬이 됩니다.
- YAML rules – 행동이 실행되기 전에 평가됩니다(≤5 ms). 예시: $50 K 이상 결제 차단, PII를 읽는 에이전트 표시, 적절한 스코프 없이 외부 HTTP 호출 거부.
- Human approval workflow – 에이전트가 승인 요청을 생성하고, 대기한 뒤 검토자가 승인하거나 거부하면 비동기적으로 재개됩니다.
- Message scanning – LLM에 도달하는 모든 메시지를 로컬에서 스캔합니다.
Message scanning – every message reaching an LLM is scanned locally
( $500? → [A2A Approval] → Human review → ✓ )
├─ Fulfillment Agent reads shipping address
│ └─ [A2A Firewall] scans for injection → ✓ → LLM call
└─ A2A Observe captures full trace of everything above
세 레이어 비교
| 레이어 | 도구 | 방지하는 것 |
|---|---|---|
| Build / Operate | Conduit | 보이지 않는 파이프라인, 흩어진 설정, 실행 가시성 부재 |
| Trust | Codios | 무단 에이전트 호출, 재생 공격, 범위 확대 |
| Govern | A2A | 통제되지 않는 행동, 누락된 감사 로그, 프롬프트 인젝션 |
첫 날에 세 가지 모두가 필요하지는 않지만, 이 중 어느 것도 없이 프로덕션에서 에이전트를 실행하면 에이전트가 하지 말아야 할 일을 한 이유를 CTO에게 설명해야 하는 상황이 한 번의 사고만큼 가까워집니다—백업 로그 없이.
Free‑tier availability
All three are available on free tiers:
- Conduit –
- Codios –
- A2A –
Happy to answer questions about implementation in the comments.