1. 개요
기존
langGragh의 계층적 멀티 에이전트 아키텍처(피라미드 구조)
state, key 관리 어려움 + 용량 부족
복잡한 환경을 langGragh를 사용하여 하나의 에이전트로 모두 커버하기에 어려움
개선
에이전트간 종속성 분리 및 자율성 강화
에이전트별 필요한 state만 독립적으로 관리(개별 에이전트 저장 공간 부담 완화)
에이전트간 수직/수평 state 종속 제거
분산 환경에서의 state 데이터 파편화 문제

2. 주요 구성 요소(Core Actors
1. End-User
2. A2A Client(=Client Agent)
3. A2A Server(=Remote Agent)
- 작업 처리 및 결과 반환

3. 기본 통신 요소(Agent간 메시지 포맷 공통화)
- Agent Card
- Task
- Message
- Part
- Artifact
1. Agent Card
정의
- 에이전트의 기능, 역할 처리가능 작업 종류, 통신 인터페이스를 정의한 프로필
구성
- 이에전트의 이름 및 설명, 서비스 엔드포인트 URLs
- 지원하는 A2A 기능(스트리밍, 푸시 알림 등)
- 제공하는 특정 기술(skills) 또는 서비스 목록
- 기본 입/출력 양식, 인증 요구 사항 등
상세 내용

2. Task
정의
- 에이전트에 할당되어 수행해야 할 구체적인 작업 및 목표
- 클라이언트의 요청을 이행하기 위해 성성되는 상태를 가지는(stateful) 공식적인 업무 단위
특징
- 에이전트가 정의하는 고유 ID(taskId) 보유
- 여러번의메시지 교환을 포함할 수 있음
- 수명 주기(Lifecycle)
: submitted / working / input-required / completed / failed 등
상세 내용

3. Message
정의
- 에이전트 간 의사소통 하기 위해 주고받는 구조화된 데이터 패킷
- 클라이언트와 에이전트 간 단일 대화 턴(turn) 또는 통신 단위
구성
- role: user(클라이언트 발송) | agent(서버 발송)
- messageId: 메시지 발신자가 설정하는 고유 식별자
- 하나 이상의 Part 객체를 포함하여 실제 콘텐츠(지시, 맥락, 질문, 답변 등) 전달
상세 내용

4. Part
정의
구성
- 각 파트는 특정 타입을 가지면 다른 종류의 데이터를 운반
- TextPart: 일반 텍스트 콘텐츠
- FilePart: 파일(인라인 base64 인코딩 또는 URI 참조 방식) 파일명, 미디어 타입 등 메타데이터 포함
- DataPart: 구조화된 JSON 데이터(파라미터, 폼 등 기계가 읽을 수 있는 정보)
상세 내용

5. Artifact
정의
- Task 처리 중 remote agent가 수행한 결과로 생성되는 산출물(tangible)
구성
- 하나 이상의 Part 객체로 구성
- 증분 방식(incrementally), 즉 부분적으로 나누어 스트리밍 가능
ex: 생성된 문서, 이미지, 스프레드 시트, 구조화된 데이터 결과물(JSON, CSV 등)
4. 기본 통신 방식
- Request/Response(Polling)
- Streaming(SSE)
- Push Notifications
1. Request/Response
용도
- 한번 요청하고 바로 응답 받는 방식
- 클라이언트가 주도적으로 상태를 확인하는데 사용
동작 방식
- 클라이언트가 message/sent 등으로 요청 전송
- 장기 작업인 경우 서버는 우선 working 상태로 응답
- 클라이언트가 작업이 끝날때 까지 주기적으로 task/get을 호출하여 상태 확인(polling: 폴링)
2. Streaming(Server-Sent Events, SSE)
전제 조건
- 서버의 에이전트 카드에 streaming 기능이 명시되어 있어야 함
용도
- 지속적인 결과 생성 또는 실시간 진행 상황 업데이트가 필요한 경우
동작 방식
- 클라이언트가 message/stream 으로 상호작용 시작
- 서버는 연결을 유지하며 서버 전송 이벤트(SSE) 스트림을 지속적으로 전송
- 보낼 수 있는 이벤트 종류
: Task, Message, TaskStatusUpdateEvent(상태 변경), TaskArtifactUpdateEvent(아티팩트 조각) 등
3. Push Notifications(Webhook)
전제 조건
- 서버의 에이전트 카드에 pushNotifications 기능이 명시되어 있어야함
용도
- 매우 긴 작업 또는 지속적인 연결 유지가 필요하지 않은 시나리오
동작 방식
- 클라이언트가 작업 시작 시 Webhook URL 제공(tasks/pushNotificationConfig/set)
서버의 작업 종료 여부를 전달한 유일한 방법
- 작업 상태에 중요한 변경이 생기면 (완료, 실패, 입력 요구 등) 서버가 해당 Webhook으로 비동기 알림(HTTP POST) 전송
5. 그 외 주요 기능 요약
1. Context(컨텍스트)
- 여러 관련 Task를 논리적으로 그룹화하는 서버 생성 식별자
- 전체 과정의 맥락을 유지하기 위한 장치
- 통신은 HTTP(S) 상에서, 페이로드는 JSON-RPC 2.0형식 사용
3. Authentication & Authorization(인증 및 권한)
- 표준 웹 보안 방식(OAuth 등) 사용
- 요구 사항은 에이전트 카드에 명시
4. Agent Discovery(에이전트 탐색)
- 클라이언트가 에이전트 카드를 찾아 작업을 수행할 수 있는 가장 적합한 에이전트를 식별하는 과정
6. A2A 실행 흐름
- 에이전트 탐색(A2A Client)
- 작업 명세 전달(A2A Client)
- 작업 실행(A2A Server)
- 작업 완료 전달(A2A Server)

MCP vs A2A
