카테고리 없음

A2A 프로토콜 : 기업형 다중 에이전트 워크플로를 위한 Task·Artifact 패턴으로 자동화 허브 세우기

korea-dobby 2025. 12. 26. 19:14

안녕하세요 논문 쉽게 풀어드리는 도비입니다.

오늘은 A2A에 대해 알아봅시다.


사내 서비스가 늘수록 커지는 ‘위임’ 필요성

RAG 리서치 봇, 요약 보고서 생성기, 데이터 정제 파이프라인처럼 LLM 기반 툴이 팀마다 빠르게 늘고 있습니다.

처음에는 각 팀 챗봇이 독립적으로 잘 돌아가지만, 어느 순간 “보고서 봇이 리서치 봇 결과를 받아 한 문장으로 요약해 줘” 같은 다중 에이전트 협업 요구가 폭발합니다.

이때 팀마다 엔드포인트·인증 방식·파라미터 명이 달라 작업 위임이 불가능해지거나, 컬럼 직접 호출로 급하게 얽어 놓았다가 추후 수정 비용이 눈덩이처럼 불어나는 문제가 생깁니다.

A2A(Agent-to-Agent) 프로토콜은 이러한 복잡성을 “카드 한 장으로 요약하고, 표준 메시지로 주고받는다”는 철학으로 풀어냅니다.

Pain Point
기존 방식의 한계
A2A 해결 전략
능력 탐색
팀 위키·스프레드시트에 적힌 API 링크를 사람이 손으로 복사
Agent Card를 .well-known/agent.json에 게시, 자동 색인
작업 위임
REST 호출·Webhook·큐 등 형식 불일치, 파라미터 재매핑 난립
Task·Artifact JSON 표준으로 단일 교환 모델 제공
진행 추적
이메일·슬랙 DM에 임시 로그 첨부, 중간 실패 복구 어려움
SSE·Push Notification으로 실시간 상태 스트림

즉 A2A는 “어떤 에이전트가 무엇을 할 수 있는지”와 “작업 요청·결과 교환·상태 추적”을 모두 규격화해 인간 개입 없는 완전 자동 위임이 가능하도록 설계되었습니다.


A2A 핵심 구성 요소 해부

Agent Card - 능력을 설명하는 명함

{ "id": "finance-reporter", "name": "Finance Reporter Agent", "description": "주가·거래대금 RAG 후 PDF 보고서 생성", "version": "1.3.2", "interface": "https://agent.company.com/a2a", "capabilities": ["make_report", "convert_currency"], "auth": { "type": "JWT", "jwks_uri": "https://agent.company.com/jwks" } }

정적 JSON 한 장만 배포하면 크롤러가 능력을 인덱싱하고, 호출자는 capabilities 필드를 키워 ‘보고서 생성’ 기능을 자동 검색합니다.

Card에는 호환 버전, 최대 입력 크기, 요금 정책 같은 메타데이터를 추가해 계약 파악 시간을 대폭 줄일 수 있습니다.

Task·Artifact 패턴 - 일을 보내고 결과를 받는 표준 통로

객체
필수 필드
설명
Task
id, action, input, callback_url
실행할 행위와 입력 데이터를 담습니다. 예: action: "make_report", input: { "ticker": "AAPL" }
Artifact
task_id, status, output, log_uri
작업 결과, 상태, 산출물 URL을 기록합니다. status는 "running", "succeeded", "failed" 중 하나입니다.

에이전트는 Task를 받아 처리한 뒤, 동일 스키마 Artifact로 응답하기 때문에 호출자는 파싱 로직을 재작성하지 않습니다. 중간 단계 상태도 Artifact로 스트리밍되어 모니터링 툴이 바로 소비할 수 있습니다.

실시간 상태 피드 - SSE & Push Notification

장시간 작업이 일반적인 데이터 파이프라인에서는 “지금 어디까지 왔나?”를 실시간 확인해야 합니다.

  • GET /a2a/task/{id}/stream → SSE 채널이 열리며 {"progress":42,"stage":"fetch_data"} 같은 JSON이 연속 도착
  • 모바일 클라이언트는 push_token을 Task에 포함해 푸시 알림으로 완료 여부 수신

덕분에 사용자 인터페이스는 중단 없는 상태 바를 렌더링하고, 실패 시 마지막 성공 단계를 토대로 자동 재시도를 구현할 수 있습니다

보안 계층 - JWS 서명·짧은 TTL 토큰·감사 로그

  1. Agent Card 서명 - Card JSON에 JWS 서명을 추가해 변조 여부를 검증합니다.
  2. JWT Bearer Token - aud = Agent ID, exp ≤ 5 분으로 짧게 발급해 재생 공격을 제한합니다.
  3. Webhook HMAC - callback_url 호출 시 본문 해시를 헤더에 포함해, 수신 측이 무결성을 확인합니다.
  4. Artifact 해시 - output.sha256 필드를 둬 PDF·CSV 등 대용량 파일의 위변조를 방지합니다.

실제 레퍼런스 구현은 Node.js Express 미들웨어와 AWS KMS 키 서버를 결합해 서명·검증 로직을 싱글 라인 코드로 추상화했습니다


도입 가이드 - 단계별 적용 시나리오

단계
목표
구체적 작업
리스크 완화
0단계
시범 연결
한 쌍의 에이전트에 Card·Task·Artifact 적용
카나리 환경에서만 JWT 만료 1 분 설정
1단계
Registry 구축
S3+CloudFront에 Card JSON 호스팅, 크롤러 주기 10분
IAM 정책으로 업로드 권한 최소화
2단계
SSE 통합
백엔드에 stream_task() 핸들러, 프론트에 EventSource
프락시 타임아웃 설정 > 60 분
3단계
조직 전체 확장
공통 SDK, Card 린터, 파이프라인 템플릿 제공
중앙 감사를 위해 CloudWatch Logs 통합
4단계
외부 벤더 공개
jwks_uri 외부 공개, 요금 정책 명세
토큰 스코프·상한선, 레이트 리미터 배포

최소 시작 비용으로 ‘PDF 리포트 봇 → 번역 봇 → 메일러 봇’ 삼단 구성 정도는 며칠 만에 가동할 수 있으며, 이후 부서가 늘어도 템플릿 재사용으로 속도를 보장받습니다.


A2A가 가져올 조직적 이점

  • API 정글 제거 - Agent Card 덕분에 노션·위키를 뒤질 필요가 없습니다.
  • 테스트 비용 절감 - 단일 Task·Artifact 스키마로 자동 유닛 테스트, 모킹이 쉬워집니다.
  • 보안·컴플라이언스 대비 - JWS·JWT·HMAC에 Audit Log까지 포함돼 규정 감사 대응이 용이합니다.
  • 스케일업 탄력성 - 새 기능은 Action만 추가하면 되고, 레거시 API도 LegacyWrapper로 쉽게 편입됩니다.

이를 통해 LLM 에이전트 프로젝트가 “팀별 챗봇 실험” 수준을 넘어 “전사 자동화 허브”로 성장할 기반을 마련할 수 있습니다.

다음 글에서는 ANP(Agent Network Protocol)를 살펴보며, 중앙 레지스트리 없이 DID와 JSON-LD로 전 세계 에이전트를 자동 발견·협상하는 방법과, 이에 수반되는 새로운 보안 과제를 다룰 예정입니다.

 

도비에게 질문 남기기

네이버 폼 설문에 바로 참여해 보세요.

form.naver.com