
Google ADK: 아키텍처 및 핵심 구성 요소
요약
Google Agent Development Kit(ADK)의 아키텍처와 핵심 구성 요소를 소개합니다. 단순 에이전트부터 복잡한 멀티 에이전트 시스템까지 구축할 수 있는 모듈형 프레임워크의 계층 구조를 설명합니다.
핵심 포인트
- Google ADK는 AI 에이전트 설계, 개발, 테스트, 배포를 위한 프레임워크를 제공함
- 모듈형 아키텍처를 통해 단순 에이전트부터 멀티 에이전트 시스템까지 구현 가능
- UI, 런타임, 에이전트 시스템, 모델 및 지식 등 다층적 계층 구조로 구성됨
- 에이전트 로직과 사용자 인터페이스를 분리하여 다양한 채널(CLI, Web, API 등) 지원
참고: ✋ 이 포스트는 원래 제 블로그 wiki-cloud.co에 게시되었습니다.
서론
인공지능 (AI) 솔루션 개발은 전통적인 대화형 어시스턴트에서 추론하고, 도구를 사용하며, 정보를 조회하고, 프로세스를 실행하며, 다른 에이전트와 협업할 수 있는 시스템으로 진화하고 있습니다.
이러한 맥락에서 **Google Agent Development Kit (ADK)**는 인공지능 에이전트 기반 애플리케이션을 설계, 개발, 테스트 및 배포하기 위한 프레임워크를 제공합니다. ADK의 모듈형 아키텍처를 통해 단순한 에이전트부터 복잡한 기업 워크플로우를 조정할 수 있는 멀티 에이전트 (multi-agent) 시스템까지 구축할 수 있습니다.
제품의 공식 가이드, 일부 연구 및 많은 개발자의 경험에 따라, 다양한 구성 요소로 이루어진 Google ADK의 상위 수준 아키텍처를 소개하며, 이는 다음과 같은 계층(layer)으로 설명될 수 있습니다:
- 사용자 인터페이스 (User Interfaces).
- ADK 런타임 (Runtime) 및 러너 (Runner).
- 에이전트 시스템 (Agent system).
- 핵심 구성 요소 (Fundamental components).
- 모델 및 지식 (Models and knowledge).
- 관측 가능성 및 거버넌스 (Observability and governance).
- 배포 옵션 (Deployment options).
각 계층은 특정 기능을 수행하며, 사용자의 요청을 조직적이고 안전하며 확장 가능한 방식으로 처리하기 위해 서로 통합됩니다.
상위 수준 아키텍처
다음은 계층과 구성 요소로 나뉜 상위 수준 아키텍처를 제시하며, 각각에 대해 설명하겠습니다:
사용자 인터페이스 (User Interfaces)
이 상위 수준 아키텍처의 최상위 계층은 사용자가 에이전트와 상호작용할 수 있는 다양한 채널을 나타냅니다.
Google ADK는 특정 인터페이스를 사용할 것을 강요하지 않습니다. 사용자 및 개발자는 다음과 같은 다양한 옵션을 통해 에이전트와 상호작용할 수 있습니다:
- CLI: 명령줄(Command Line Interface)에서 에이전트를 실행하고 테스트하기 위한 용도.
- Web UI: 웹 인터페이스를 통해 에이전트와 상호작용하기 위한 용도.
- API Endpoints: 에이전트를 다른 애플리케이션이나 서비스와 통합하기 위한 용도.
- 맞춤형 프론트엔드 (Custom Frontends): 기업용 포털, 모바일 애플리케이션, 대화형 어시스턴트 또는 메시징 채널 등.
이러한 분리를 통해 에이전트의 로직을 사용자 경험(User Experience)으로부터 독립시킬 수 있습니다. 동일한 에이전트 시스템을 내부 동작을 수정할 필요 없이 다양한 채널에서 사용할 수 있습니다.
예를 들어, 지원(Support) 에이전트는 웹 애플리케이션, 내부 챗봇, 그리고 다른 기업용 애플리케이션에서 사용하는 API를 통해 문의 사항을 처리할 수 있습니다.
ADK Runtime & Runner
ADK Runtime 및 Runner는 에이전트의 실행과 작동을 조정하는 환경을 구성합니다.
이 계층은 아키텍처의 운영 엔진 역할을 하며, 사용자 인터페이스를 에이전트 시스템 및 에이전트가 필요로 하는 서비스와 연결하는 역할을 담당합니다.
주요 기능은 다음과 같습니다:
이벤트 루프 (Event Loop)
이벤트 루프는 Runner와 사용자 정의 코드(에이전트, 도구, 콜백(Callbacks) 등이며, 설계 문서에서는 통칭하여 "실행 로직(Execution Logic)" 또는 "논리 구성 요소(Logical Components)"라고 함) 사이의 상호작용을 정의하는 핵심 운영 패턴입니다. 이벤트 루프는 상호작용 중에 발생하는 작업의 순서를 관리합니다.
오케스트레이션 (Orquestación)
오케스트레이션 (Orquestación)은 에이전트가 어떻게 참여하고 작업이 어떤 순서로 실행되는지를 제어합니다.
예를 들어 다음과 같은 사항을 결정할 수 있습니다:
- 어떤 에이전트가 요청을 처리해야 하는지.
- 여러 에이전트가 순차적으로 실행되어야 하는지.
- 특정 작업들이 병렬로 처리될 수 있는지.
- 동작을 언제 반복해야 하는지.
- 제어권을 언제 다른 에이전트에게 넘겨야 하는지.
- 실행 흐름을 언제 종료해야 하는지.
이러한 능력은 멀티 에이전트 (multi-agent) 아키텍처에서 특히 중요합니다.
서비스 관리 (Gestión de Servicios)
서비스 관리 (Gestión de Servicios)는 러너 (Runner)를 애플리케이션에서 사용되는 인프라 구성 요소와 연결합니다.
여기에는 다음과 같은 서비스가 포함됩니다:
- 세션 (Sesiones).
- 메모리 (Memoria).
- 상태 (Estado).
- 아티팩트 (Artefactos).
- 도구 (Herramientas).
- 평가 서비스 (Servicios de evaluación).
- 관측성 시스템 (Sistemas de observabilidad).
이러한 분리 덕분에 에이전트 로직을 정보를 저장하거나 솔루션을 배포하는 데 사용되는 메커니즘으로부터 분리된 상태로 유지할 수 있습니다.
에이전트 시스템 (Sistema de Agentes)
아키텍처의 기능적 핵심은 에이전트 시스템 (Sistema de Agentes)입니다. ADK는 솔루션에 요구되는 자율성, 제어 및 전문화 수준에 따라 다양한 유형의 에이전트를 결합할 수 있도록 합니다.
LLM 에이전트 (Agentes LLM)
LLM 에이전트 (LLM Agents)는 언어 모델을 사용하여 요청을 해석하고, 문맥을 추론하며, 어떤 행동을 취할지 결정합니다. Google ADK는 추론 및 의사 결정을 위해 Vertex AI 또는 Google AI Studio를 통해 Gemini 제품군 모델을 사용합니다.
이러한 유형의 에이전트는 다음과 같은 작업을 수행할 수 있습니다:
- 자연어 이해.
- 정보 분석.
- 응답 생성.
- 도구 선택.
- 어떤 에이전트가 개입해야 하는지 결정.
- 완전히 결정론적 (deterministic)인 흐름을 따르지 않는 작업 해결.
예를 들어, 고객 서비스 에이전트는 요청을 분석하고, 주문 상태를 조회하며, 직접 응답해야 할지 아니면 전문 에이전트에게 케이스를 전달해야 할지를 결정할 수 있습니다.
에이전트 워크플로 (Agent workflows)
워크플로 (workflows)는 더 구조화된 패턴을 통해 다른 에이전트의 실행을 제어합니다. 프로세스에 예측 가능한 동작과 정의된 실행 순서가 필요할 때 유용합니다.
주요 패턴은 다음과 같습니다:
- 순차적 실행 (Sequential execution)
- 병렬 실행 (Parallel execution)
- 루프를 통한 실행 (Loop-based execution)
커스텀 에이전트 (Custom agents)
커스텀 에이전트는 언어 모델 (Language models)에만 기반한 에이전트나 사전 정의된 워크플로만으로는 충분하지 않을 때 전문화된 동작을 구현할 수 있게 해줍니다.
커스텀 에이전트에는 다음과 같은 것들이 포함될 수 있습니다:
- 특정 비즈니스 로직 (Business logic).
- 고유 알고리즘 (Proprietary algorithms).
- 결정론적 검증 (Deterministic validations).
- 복잡한 통합 (Complex integrations).
- 보안 규칙 (Security rules).
- 전문화된 데이터 처리 (Specialized data processing).
- 실행 사이클의 고급 제어 (Advanced control of the execution cycle).
예를 들어, 한 조직은 다른 에이전트가 프로세스를 계속 진행하도록 허용하기 전에 내부 규칙을 적용하여 금융 거래를 검증하는 커스텀 에이전트를 생성할 수 있습니다.
핵심 구성 요소 (Fundamental components)
ADK 아키텍처는 컨텍스트 (context)를 유지하고, 동작을 조정하며, 외부 시스템과 상호 작용할 수 있게 하는 일련의 구성 요소들을 기반으로 합니다. 이러한 구성 요소들은 에이전트가 연속성을 유지하고 단순한 대화를 넘어 작업을 수행할 수 있도록 하는 데 필수적입니다. 기본적이거나 핵심적인 구성 요소는 다음과 같습니다:
세션 (Session)
세션은 사용자와 에이전트 애플리케이션 간의 지속적인 상호 작용을 나타냅니다. 세션은 다음 사항들을 보존할 수 있게 합니다:
- 사용자 메시지.
- 에이전트 응답.
- 도구 호출 (Tool calls).
- 중간 결과물.
- 에이전트 간 전환 (Transfers between agents).
- 실행 중에 발생한 이벤트.
세션 (Session)은 여러 차례의 대화가 오가는 동안 일관된 대화를 유지하는 데 필요한 컨텍스트 (Context)를 제공합니다.
예를 들어, 사용자가 대화 시작 시 주문 번호를 제공하면, 에이전트 (Agent)는 동일한 세션 내의 후속 요청에서 해당 번호를 재사용할 수 있습니다.
상태 (State)
상태 (State)는 실행 중에 변경될 수 있는 구조화된 정보를 저장합니다. 대화 기록 (Conversational history)과 달리, 상태는 에이전트가 조회하거나 업데이트할 수 있는 구체적인 값을 포함합니다. 몇 가지 예시는 다음과 같습니다:
- 사용자 이름.
- 선택된 언어.
- 인시던트 (Incidence) 번호.
- 선택된 제품.
- 승인 상태.
- 유효성 검사 (Validation) 결과.
- 프로세스의 현재 단계.
상태는 여러 단계의 대화 흐름 (Conversational flows) 구축을 용이하게 하며, 대화 기록의 텍스트에만 의존하는 것을 방지합니다.
메모리 (Memory)
메모리 (Memory)는 단일 세션을 넘어 정보를 보존하고 검색할 수 있게 합니다. 다음과 같은 사항을 기억하는 데 사용될 수 있습니다:
- 사용자 선호도.
- 이전 상호작용.
- 관련 프로젝트.
- 이전의 결정 사항.
- 과거 대화의 관련 정보.
메모리는 더욱 개인화된 경험을 제공하고 서로 다른 세션 간의 연속성을 유지하는 데 도움을 줍니다.
다음 세 가지 개념을 구분하는 것이 중요합니다:
- 세션 (Session): 특정 대화를 나타냅니다.
- 상태 (State): 실행 중에 구조화된 값을 저장합니다.
- 메모리 (Memory): 장기적으로 재사용 가능한 정보를 보존합니다.
이벤트 (Events)
이벤트 (Events)는 에이전트 개발 키트 (ADK) 내 정보 흐름의 근본적인 단위입니다. 이벤트는 사용자의 초기 입력부터 최종 응답에 이르기까지, 모든 중간 단계를 포함하여 에이전트 상호작용의 생명 주기 동안 발생하는 각각의 유의미한 사건을 나타냅니다. 이벤트는 구성 요소 간의 주요 통신 경로, 상태 관리 (State Management), 그리고 제어 흐름 (Control Flow)의 방향을 결정하기 때문에 이를 이해하는 것이 매우 중요합니다. 하나의 이벤트는 다음과 같은 것들에 해당할 수 있습니다:
- 메시지 (Message)
- 응답 (Response)
- 도구 호출 (Tool Call)
- 도구 결과 (Tool Result)
- 상태 변경 (State Change)
- 에이전트 간 전송 (Transfer between agents)
- 오류 (Error)
이벤트를 사용하면 시스템이 거친 경로를 재구성하고 응답이 어떻게 생성되었는지 이해할 수 있습니다. 또한 이는 추적성 (Traceability), 디버깅 (Debugging), 그리고 평가 (Evaluation)를 위한 중요한 기반이 됩니다.
도구 (Tools)
도구는 에이전트가 외부 서비스와 상호작용하고 실제 동작을 수행할 수 있도록 합니다. 도구는 다음과 같을 수 있습니다:
- Python 함수
- 기업용 API
- 데이터베이스 쿼리 (Database Query)
- Google Cloud 서비스
- 티켓팅 시스템 (Ticket System)
- 검색 도구 (Search Tool)
- SaaS 애플리케이션
- 다른 에이전트
- MCP 호환 서버
에이전트가 정보가 필요하거나 동작을 실행해야 할 때, 도구를 선택하고 매개변수 (Parameters)를 생성하며 얻은 결과를 처리할 수 있습니다. 예를 들어, 지원 에이전트는 지식 베이스 (Knowledge Base)를 조회하고, 서비스 상태를 확인하며, 외부 플랫폼에 인시던트 (Incidence)를 생성할 수 있습니다.
아티팩트 (Artifacts)
아티팩트 (Artifacts)는 특정 사용자 상호작용 세션과 연관되거나, 여러 세션에 걸쳐 사용자에게 지속적으로 연관되는, 이름과 버전이 지정된 바이너리 데이터 (Binary data)를 관리하기 위한 핵심 메커니즘을 나타냅니다. 이를 통해 에이전트 (Agents)와 도구 (Tools)는 단순한 텍스트 문자열을 넘어 파일, 이미지, 오디오 및 기타 바이너리 형식을 포함하는 더욱 완전한 상호작용을 가능하게 하며 데이터를 관리할 수 있습니다.
모델 및 지식 (Models and Knowledge)
모델 및 지식 계층은 에이전트가 사용하는 지능, 컨텍스트 (Context), 그리고 정보 소스를 제공합니다. 이 계층은 네 가지 주요 요소를 포함합니다.
Gemini 및 기타 모델
Google ADK는 Gemini와 자연스럽게 통합되도록 설계되었지만, 솔루션의 요구 사항에 따라 다른 제3자 모델 (Third-party models)을 사용할 수도 있습니다.
모델은 다음과 같은 작업을 담당할 수 있습니다:
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기

