
Microsoft Foundry 호스팅 에이전트에 대한 나의 접근 방식
요약
Microsoft Foundry의 호스팅 에이전트 모드를 활용하여 커피숍 에이전트 앱을 구축하는 아키텍처를 제안합니다. MAF, MCP, ToolSearch 게이트웨이 패턴을 결합하여 확장성과 관찰 가능성을 갖춘 에이전트 시스템 설계 방식을 다룹니다.
핵심 포인트
- Microsoft Foundry의 호스팅 에이전트 모드를 통한 운영 효율화
- MCP(Model Context Protocol)를 활용한 도구 연결 및 토큰 관리
- ToolSearch 게이트웨이 패턴을 통한 가드레일 및 거버넌스 구축
- 다중 채널(Slack, WebChat) 지원 에이전트 아키텍처 설계
서론
우리가 다음과 같은 기술 스택을 사용하여 커피숍 에이전트 앱(agentic app)을 구축한다고 가정해 봅시다.
- 다중 채널: Slack 및 WebChat
- Claw 에이전트: 특정 채널의 메시지를 에이전트 런타임(이 경우 Microsoft Agent Framework, 일명 MAF 사용)으로 라우팅하는 단순한 에이전트이며, 이 에이전트는 실행 및 운영에 대해 크게 고민할 필요가 없도록 Microsoft Foundry에서 호스팅 에이전트 모드 (hosted agent mode)로 호스팅되어야 합니다.
- ToolSearch 게이트웨이: 이 에이전트에 비즈니스 서비스를 제공하기 위해 많은 MCP 도구를 연결할 것이므로, 모든 도구의 토큰 사용량에 대한 가드레일(guardrail), 거버넌스(governance) 및 관찰 가능성(observability)을 제어해야 합니다. 이 구성 요소는 또한 MCP를 통한 토큰 사용량을 절약하기 위해 tool-search-tool 패턴 (tool-search-tool pattern)으로 구현되었습니다. 그리고 내부적으로는 최신 뉴스를 근거로 삼기 위해 Brave Search API에 연결하고, Microsoft Foundry Toolbox에 연결할 수 있어야 하며, 이 지점부터 Microsoft Azure 생태계 내부의 지식 베이스 (knowledge base) 및 기타 구성 요소(코드 해석기 (code interpreter))를 연결할 수 있습니다.
- CoffeeShop MCP: 이것은 메뉴 보여주기, 고객 정보 검색, 주문 흐름과 같이 커피숍 앱의 모든 핵심 비즈니스 로직입니다.
ChatGPT, Opus 4.7을 활용한 Claude Code와의 심층적인 연구 섹션을 거치고, GPT 5.5를 통해 여러 차례 연구 내용을 검증한 끝에, 다음과 같은 상위 수준의 아키텍처를 도출했습니다:
그리고 이 claw 에이전트의 소스 코드는 https://github.com/thangchung/agent-engineering-experiment/tree/main/foundry-agentfx에서 확인할 수 있습니다.
이 블로그는 이 앱을 어떻게 개발하는지는 보여주지 않습니다. 만약 제가 어떻게 개발했는지 알고 싶은 분이 있다면, 다음의 영상 기록을 참조해 주세요:
이 블로그는 coffeeshop 에이전트 앱(agentic app)을 어떻게 배포하고, Microsoft Foundry - Hosted Agents에서 어떻게 실행하는지에 초점을 맞출 것입니다.
시작해 봅시다...
나의 claw를 Microsoft Foundry 및 기타 Azure 서비스에 배포하기
우리는 모든 관련 구성 요소를 모델링하고 프로비저닝(provisioning)하기 위해 Bicep을 사용할 것이며, 원한다면 Terraform을 사용할 수도 있습니다. 배포 스크립트는 https://github.com/thangchung/agent-engineering-experiment/tree/main/foundry-agentfx/infra에서 찾을 수 있습니다.
먼저, 모든 구성 요소가 유효한지, 오류가 없는지, 그리고 제약 사항을 위반하지 않는지 확인하기 위해, 먼저 azd provision --preview를 실행하여 드라이 런(dry-run)을 수행하십시오:
둘째, azd provision을 실행합니다:
azd deploy 명령어로 배포를 마친 후에는:
마지막으로, https://ai.azure.com에 접속하여 그곳에서 claw agent를 사용해 보세요:
그런 다음 위에 빨간색 상자에 있는 claw-agent를 클릭하여 이 에이전트로 이동합니다. 플레이그라운드에 진입하면 menu를 입력해 보세요:
모든 것이 정상적으로 작동하면, 위와 같은 응답을 볼 수 있습니다.
1. Foundry IQ를 사용하여 검색 기능 테스트 - 지식 기반 (Knowledge Base)
Microsoft Foundry 대시보드에서는 커피숍 회사에 대한 모든 정보를 볼 수 있어야 합니다:
그리고 Azure Portal에서는:
stuff 데이터를 삽입하는 코드는 https://github.com/thangchung/agent-engineering-experiment/blob/main/foundry-agentfx/infra/create-search-indexes.py에서 찾을 수 있습니다.
그리고 Slack에서 회사에 정보를 요청하면 다음과 같은 정보를 볼 수 있어야 합니다:
2. 샌드박스 기능에서 코드 인터프리터 테스트하기
Slack에 'Calculate the total cost if I order 3 lattes at $4.75 each, 2 cappuccinos at $4.25 each, and apply a 10% loyalty discount. Show the breakdown'를 입력하면 다음과 같은 결과를 받게 됩니다:
3. Brave Search 기능으로 툴 호출 테스트하기
Slack을 열고 @MyDotNetClawApp trends in the coffee shop brands and drinks?를 입력하면 다음과 같은 것을 볼 수 있습니다:
4. 커피 주문 플로우 테스트하기
Slack에 show me your menu?를 입력합니다.
관측 가능성 (Observability)
요즘 모든 종류의 에이전트 애플리케이션에서 토큰 사용량을 추적해야 하기 때문에 그렇습니다. 개발 코드에서는 코드를 작성하고 컴포넌트를 OpenTelemetry GenAI Semantic Conventions로 계측(instrument)해야 합니다. 그리고 앱을 Microsoft Foundry에 Azure Monitor (AppInsight 구성이 올바르게 된 경우)를 사용하여 배포하면, 위의 여러 작업을 수행한 후 Azure Portal - AppInsights로 이동하여 application map을 볼 수 있습니다:
그리고 토큰 사용량(입력(in), 출력(out) 및 캐시된(cached) 토큰)에 대한 더 많은 정보를 추적하려면, Azure Monitor 내부에 내장된 Grafana 대시보드를 사용하여 이를 추적할 수 있습니다:
그리고 claw 에이전트(claw agent) 동작을 추적하는 데 있어 훨씬 더 상세한 정보를 확인할 수 있습니다:
정말 멋지지 않나요? 😍
오늘은 여기까지입니다. 다음에 만나요!
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기












