본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 06. 28. 23:09

당신의 에이전트 메쉬(Agent Mesh)에는 10개 노드의 한계가 있습니다. 그 이유는 디스커버리 스톰(Discovery Storms)

요약

멀티 에이전트 시스템(MAS)에서 에이전트 수가 증가함에 따라 디스커버리 요청이 기하급수적으로 늘어나 네트워크를 마비시키는 '디스커버리 스톰' 문제를 분석합니다. 이를 해결하기 위해 P2P 방식 대신 연합형 허브 앤 스포크(Hub-Spoke) 토폴로지 도입을 제안합니다.

핵심 포인트

  • 에이전트 수가 늘어날수록 디스커버리 트래픽은 이차 함수적으로 증가함
  • 10개 노드 이상의 환경에서는 네트워크 대역폭 포화 및 에이전트 치사율 발생 가능
  • MiCA 규제 준수를 위해 신뢰할 수 있는 에이전트 식별 및 디스커버리 필수
  • 확장성을 위해 관리형 라우팅 레이어를 활용한 허브 앤 스포크 모델 권장

MiCA 집행까지 3일 남았습니다. 당신은 5개의 에이전트를 배포했습니다. 디스커버리(Discovery)는 잘 작동했습니다. 당신은 5개를 더 추가했습니다. 디스커버리가 네트워크를 마비시켰습니다.

이것이 바로 10개 노드의 한계(10-node ceiling)입니다. 멀티 에이전트 시스템(multi-agent systems)을 구축하는 모든 팀이 이 한계에 부딪힙니다. A2A 프로토콜은 디스커버리 메커니즘(/.well-known/agent-card.json에 있는 에이전트 카드)을 제공하지만, 이는 에이전트들이 독립적으로 피어(peer)를 폴링(poll)한다고 가정합니다. 5개 노드일 때는 사이클당 20개의 디스커버리 요청이 발생합니다. 10개일 때는 90개입니다. 50개일 때는 2,450개입니다. 유용한 작업량은 선형적(linear)으로 유지되는 반면, 트래픽은 이차 함수적(quadratically)으로 증가합니다.

CockroachLabs는 2026년 6월에 이를 "에이전트 AI에서의 천둥 치는 들소 문제(thundering herd problem in agentic AI)"로 기록했습니다. Tianpan.co는 11개의 에이전트가 동시에 시작되어 공유 자원을 두고 경쟁할 때 에이전트 치사율이 27%에 달한다고 보고했습니다. 분산형 에이전트 디스커버리(decentralized agentic discovery)에 관한 arxiv 논문은 피어 투 피어(peer-to-peer) 디스커버리가 규모가 커짐에 따라 대역폭을 포화시키며, 밀집된 배포 환경에서는 네트워크 용량의 최대 80%를 소비한다는 점을 확인해 줍니다.

디스커버리 스톰 패턴 (The Discovery Storm Pattern)

에이전트들이 조정(coordination) 없이 피어 투 피어 디스커버리를 사용할 때, 디스커버리 스톰(discovery storm)을 일으킵니다:

# 20개의 에이전트가 단순한 A2A 피어 디스커버리를 사용할 때 발생하는 현상

import asyncio
...

MiCA에 있어 10개 노드의 한계가 중요한 이유

디스커버리가 실패하면 에이전트는 피어의 신원을 확인할 수 없습니다. MiCA 제67조에 따라, 모든 에이전트 간 거래(cross-agent transaction)는 검증된 상대방 식별을 요구합니다. 만약 에이전트 A가 에이전트 B의 현재 기능과 신원 증명(identity attestation)을 디스커버리할 수 없다면, 거래는 검증 없이 진행되거나(비준수), 중단됩니다(수익 손실).

10개 노드의 한계는 규제 절벽(regulatory cliff)을 만듭니다. 당신의 시스템은 스테이징(staging, 8개 에이전트)에서는 작동하지만, 프로덕션(production, 15개 에이전트)에서는 실패합니다. 실패 모드는 단순한 충돌(crash)이 아닙니다. 불완전한 감사 기록(audit records)을 생성하는 디스커버리 성능 저하입니다.

연합형 허브 앤 스포크(Hub-Spoke with Federation): 확장 가능한 토폴로지

해결책은 더 큰 파이프를 만드는 것이 아닙니다. 다른 토폴로지(topology)를 사용하는 것입니다. 모든 에이전트가 모든 피어를 디스커버리하는 대신, 에이전트들은 디스커버리를 중앙에서 처리하고 업데이트를 푸시(push)하는 관리형 라우팅 레이어(managed routing layer)에 등록합니다.

// MANAGED DISCOVERY: rosud-call을 통한 연방형 허브-스포크(Hub-spoke) 모델
import { RosudCall, RoutingRegistry } from 'rosud-call';

...

데드 레터 큐(Dead-Letter Queues): 메시지를 전달할 수 없을 때

디스커버리 스톰(Discovery storms)은 단순히 지연(latency)만을 유발하지 않습니다. 이는 메시지 손실을 초래합니다. 에이전트 A가 에이전트 B에게 작업을 보낼 때, B가 디스커버리 트래픽으로 인해 과부하 상태라면 메시지는 타임아웃(timeout)됩니다. 단순한 구현 방식에서는 해당 메시지는 사라져 버립니다. 작업은 소리 없이 실패합니다.

운영 환경의 메시징 인프라에는 전달할 수 없는 메시지를 위한 데드 레터 큐(dead-letter queues)가 필요합니다:

// rosud-call을 통한 데드 레터 큐를 포함한 메시지 전달
const channel = new RosudCall({
  agentId: 'orchestrator-prod',
...

토폴로지(Topology) 비교

지표Peer-to-Peer (A2A 기본값)Hub-Spoke 관리형 (rosud-call)
디스커버리 트래픽O(n^2)O(n)
...

결론

A2A 프로토콜은 디스커버리 명세(specification)입니다. 이는 디스커버리 인프라가 아닙니다. 명세는 "/.well-known/agent-card.json을 가져오라"고 말할 뿐입니다. 하지만 10개의 에이전트만 되어도 네트워크를 마비시키는 이차 함수적(quadratic) 트래픽 스톰을 만들지 않고, 어떻게 대규모(scale)로 이를 수행할지에 대해서는 말해주지 않습니다.

rosud-call은 피어 투 피어(peer-to-peer) 폴링(polling)을 관리형 푸시 기반 라우팅(push-based routing)으로 대체합니다. 디스커버리는 O(n^2)이 아닌 O(n)입니다. 전달할 수 없는 메시지는 허공으로 사라지는 대신 데드 레터 큐(dead-letter queue)로 이동합니다. 그리고 성공하든 실패하든 모든 상태 전이(state transition)는 MiCA를 준수하는 감사 기록(audit record)을 생성합니다.

MiCA 규제 시행까지 3일 남았습니다. 스테이징(staging) 환경에는 8개의 에이전트가 있고 디스커버리가 잘 작동합니다. 하지만 운영 환경의 목표는 30개입니다. 계산해 보십시오: 30 * 29 = 사이클당 870개의 디스커버리 요청이 발생합니다. 귀하의 네트워크는 이를 견뎌내지 못할 것입니다.

에이전트 메시징을 10개 노드 이상으로 확장하기: rosud.com/rosud-call

AI 자동 생성 콘텐츠

본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0