A2A 동작 흐름
| 단계 | Client Agent | Server Agent |
|---|---|---|
| 1. 발견 | Agent Card 조회 (/.well-known/agent.json) | Agent Card 제공 |
| 2. 요청 | Task 생성 (tasks/send) | Task 수신 |
| 3. 처리 | 대기 또는 스트리밍 수신 | 자율적으로 작업 수행 |
| 4. 협의 | 추가 정보 제공 (input-required 응답 시) | 추가 정보 요청 가능 |
| 5. 완료 | Artifact 수신 | 결과 + Artifact 반환 |
참고 A2A는 JSON-RPC 2.0 기반으로, HTTP POST를 통해 통신합니다. 기존 웹 인프라와 자연스럽게 통합됩니다.
구체적 시나리오: 여행 예약 시스템
사용자 요청: “3월 15일~18일 제주도 여행을 예약해주세요. 항공편과 호텔, 결제까지 해주세요.”| 단계 | Agent | 작업 | A2A 상태 |
|---|---|---|---|
| 1 | 여행 플래너 Agent(Coordinator) | 요청 분석, 하위 작업 분배 | — |
| 2 | 여행 → 항공 Agent | ”3/15 서울→제주, 3/18 제주→서울” 검색 요청 | submitted → working |
| 3 | 항공 Agent | 3개 항공편 옵션 반환 | completed (Artifact: 항공편 목록) |
| 4 | 여행 → 호텔 Agent | ”3/15~18 제주 호텔” 검색 요청 | submitted → working |
| 5 | 호텔 Agent | 추가 정보 필요: “1인실? 2인실?“ | input-required |
| 6 | 여행 → 호텔 Agent | ”2인실, 조식 포함” 추가 정보 제공 | working |
| 7 | 호텔 Agent | 3개 호텔 옵션 반환 | completed (Artifact: 호텔 목록) |
| 8 | 여행 플래너 | 항공+호텔 옵션 종합하여 사용자에게 제시 | — |
| 9 | 여행 → 결제 Agent | 선택된 옵션 결제 요청 | submitted → working → completed |
| 10 | 여행 플래너 | 최종 예약 확인서 생성 | 전체 완료 |
성공 핵심 포인트: 각 Agent는 서로 다른 회사/프레임워크로 만들어졌을 수 있습니다. 항공 Agent는 Python + LangGraph, 호텔 Agent는 Java + Spring AI, 결제 Agent는 Node.js — 모두 A2A라는 공통 프로토콜로 통신합니다.
A2A + MCP 결합 아키텍처
실제 엔터프라이즈 환경에서는 A2A와 MCP가 함께 사용됩니다.| 통신 | 발신 Agent | 수신 Agent / 도구 | 프로토콜 |
|---|---|---|---|
| 사용자 → 조율자 | 사용자 | 여행 플래너 Agent | UI/API |
| 조율자 → 항공 | 여행 플래너 | 항공 Agent | A2A |
| 항공 → 도구 | 항공 Agent | 항공사 API, 가격 DB | MCP |
| 조율자 → 호텔 | 여행 플래너 | 호텔 Agent | A2A |
| 호텔 → 도구 | 호텔 Agent | 호텔 예약 시스템 | MCP |
| 조율자 → 결제 | 여행 플래너 | 결제 Agent | A2A |
| 결제 → 도구 | 결제 Agent | PG사 API | MCP |
| 레이어 | 프로토콜 | 역할 | 예시 |
|---|---|---|---|
| Agent ↔ Agent | A2A | 전문 Agent 간 작업 위임 | 여행 Agent → 항공 Agent |
| Agent ↔ Tool | MCP | Agent가 외부 도구/데이터 접근 | 항공 Agent → 항공사 API |
| Agent ↔ Human | UI/API | 사용자 인터페이스 | 챗봇 UI |
참고 설계 원칙: “Agent 간 대화”에는 A2A, “Agent가 도구를 사용”하는 데에는 MCP. 이 구분이 명확하면 아키텍처가 깔끔해집니다.
A2A 구현 예시 (Python)
참고 A2A는 아직 초기 단계이며, 공식 SDK가 활발히 발전 중입니다. 아래는 핵심 흐름을 이해하기 위한 간소화된 예시입니다.
A2A Server (Agent 제공자)
A2A Client (Agent 소비자)
참고 위 코드는 A2A의 핵심 흐름을 보여주는 간소화된 예시입니다. 프로덕션 구현 시에는 인증, 에러 핸들링, 스트리밍 등을 추가해야 합니다. 최신 구현 예시는 A2A GitHub을 참고하세요.