Azure Container Apps Express: 당신이 기다려온 에이전트 우선 플랫폼
요약
Azure Container Apps Express는 복잡한 인프라 설정 없이 컨테이너 이미지로 즉시 에이전트를 배포할 수 있는 새로운 환경 계층입니다. 1초 미만의 콜드 스타트를 지원하며, 상태가 없는(stateless) HTTP 에이전트 백엔드 구축에 최적화되어 있습니다.
핵심 포인트
- 인프라 프로비저닝, 네트워킹, 스케일링 설정 자동화
- ACA Sandbox 기반의 1초 미만 초고속 콜드 스타트 제공
- HTTP 워크로드 전용이며 GPU 및 VNet 통합은 미지원
- 에이전트 배포를 위한 '에이전트 우선' 프레임워크 지향
저는 1년 넘게 Azure Container Apps에서 AI 워크로드(AI workloads)를 실행해 왔습니다. 새로운 에이전트 백엔드(agent backend)를 구축할 때마다 과정은 항상 동일했습니다. 환경을 생성하고, 네트워킹(networking)을 구성하고, 스케일링 규칙(scaling rules)을 설정하고, 상태 검사(health probes)를 연결한 다음, 실제 컨테이너를 배포하는 식입니다. 일주일 정도만 유지될 프로토타입 에이전트에게는 얻는 것에 비해 절차가 너무 복잡합니다.
2026년 5월에 퍼블릭 프리뷰(public preview)에 진입한 ACA Express는 이러한 절차의 대부분을 없애줍니다. 그리고 이와 별개이면서도 연관된 발표인 '에이전트를 위한 Docker Compose(Docker Compose for Agents)'는 표준 ACA 환경에 MCP 게이트웨이(MCP gateways)와 모델 서빙(model serving) 기능을 가져옵니다. 이들은 서로 다른 문제를 해결하고 서로 다른 인프라(infrastructure)에서 실행되지만, 함께 사용하면 Azure에서의 에이전트 배포 전 영역을 아우릅니다.
두 가지를 모두 자세히 살펴보겠습니다.
ACA Express: 실제 정체는 무엇인가
Express는 Azure Container Apps 내의 새로운 환경 계층(environment tier)입니다. 사용자는 컨테이너 이미지(container image)만 가져오면 됩니다. Express가 프로비저닝(provisioning), HTTPS, 스케일링(scaling, 1초 미만의 콜드 스타트(cold starts)를 포함한 zero-scale 포함), 그리고 리소스 할당(resource allocation)을 처리합니다. 포털을 통해 수동으로 프로비저닝할 환경도, 구성할 네트워킹도, 작성할 스케일링 규칙도 없습니다.
내부적으로 Express는 ACA Sandbox(ACA Sandboxes)를 기반으로 구축되었습니다. 이는 사전 예열된 풀(prewarmed pools)을 사용하여 1초 미만의 시작 속도를 제공하는 플랫폼 기본 요소(platform primitive)입니다. 이것은 단순히 겉모습만 바꾼 표준 ACA의 콜드 스타트(cold-start) 경험이 아닙니다. 완전히 다른 아키텍처(architecture)입니다.
트레이드오프(tradeoffs)는 분명히 존재합니다. Express는 HTTP 워크로드(HTTP workloads) 전용이며, 소비형 CPU(consumption CPU)만 사용합니다. GPU는 지원하지 않습니다. VNet 통합(VNet integration)도 안 됩니다. Dapr도 사용할 수 없습니다. 앱 간의 서비스 디스커버리(service discovery)도 불가능합니다. 런타임(runtime) 시의 관리형 ID(managed identity)도 지원하지 않습니다. 상태 검사(health probes)도 없습니다. 만약 이러한 기능 중 하나라도 필요하다면, 표준 ACA 환경이 여전히 대안이 될 수 있습니다. 하지만 상태가 없는(stateless) HTTP 에이전트 백엔드의 경우, Express는 배포 속도가 훨씬 빠르고 실행 비용도 저렴합니다.
컨테이너를 실행하는 데 필요한 과정은 다음과 같습니다:
# express 환경 생성
az containerapp env create \
--name my-express-env \
...
여러분의 앱은 분 단위가 아니라 초 단위로 실행됩니다. 정말로 초 단위입니다.
Express는 Azure portal과는 별개로 containerapps.azure.com에서 자체적인 포털 경험을 제공합니다. 만약 포털을 사용 중이라면, 환경(environment)을 직접 생성할 필요조차 없습니다. 시스템이 이를 자동으로 처리합니다.
왜 "에이전트 우선(Agent-First)"이 올바른 프레임워크인가
Microsoft는 Express를 두 가지 대상, 즉 빠르게 배포하고자 하는 개발자와 필요에 따라 엔드포인트(endpoint)를 배포하는 AI 에이전트(AI agents)를 위해 명시적으로 포지셔닝하고 있습니다. 두 번째 대상이 매우 흥미로운 지점입니다.
현대의 에이전트 아키텍처(agent architectures)가 어떻게 작동하는지 생각해 보십시오. 오케스트레이터(orchestrator)는 도구 사용 API(tool-use APIs)를 실행하고, 작업이 지속되는 동안 이를 구동한 뒤, 작업이 끝나면 제거합니다. 인프라는 빠르게 프로비저닝(provision)되어야 하며, 제로 상태에서 스케일링(scale from zero)이 가능해야 하고, 유휴 상태일 때는 비용이 발생하지 않아야 합니다. 이것이 바로 Express 모델이 지향하는 바입니다.
이 플랫폼은 MCP 서버, 도구 사용 엔드포인트(tool-use endpoints), 다단계 워크플로 API(multi-step workflow APIs), 그리고 에이전트가 동적으로 생성하는 Human-in-the-loop UI를 위해 설계되었습니다. 1초 미만의 콜드 스타트(cold starts)를 지원하는 제로 기반 스케일링(Scale-from-zero) 덕분에, 요청을 활발히 처리하고 있지 않은 에이전트 백엔드에 비용을 지불할 필요가 없습니다. 또한 요청이 들어오면 에이전트는 콜드 스타트를 기다리는 대신 거의 즉시 준비됩니다.
에이전트를 위한 Docker Compose: 별도(이자 보완적)인 기능
이 부분에서 초기 보도 내용 중 많은 혼선이 있었으며, 저 또한 이 포스트의 초안에서 실수했던 부분입니다. 에이전트를 위한 Docker Compose(Docker Compose for Agents)는 Express 기능이 아닙니다. 이는 Express가 아닌, 워크로드 프로필(workload profiles)이 있는 표준 ACA 환경에 배포됩니다.
왜 그럴까요? 에이전트를 위한 Compose는 GPU 모델 서빙(GPU model serving), MCP 게이트웨이 컨테이너(MCP gateway containers), 사이드카 프로세스(sidecar processes), 그리고 멀티 서비스 스택(multi-service stacks)을 지원하기 때문입니다. 이 모든 것들은 Express가 갖추지 못한 기능들(워크로드 프로필, 서비스 디스커버리(service discovery), 사이드카)을 필요로 합니다. 서로 다른 작업에는 서로 다른 도구가 필요한 법입니다.
에이전트를 위한 Compose가 하는 역할은 로컬 개발 시 사용하는 것과 동일한 compose.yml 파일을 가져와 ACA에 직접 배포할 수 있게 해주는 것입니다. CLI는 Compose 서비스들을 Container Apps 리소스로 자동 변환합니다.
에이전트 스택을 위한 Compose 파일의 모습은 다음과 같습니다:
services:
my-agent-app:
build: .
...
x-azure-deployment 지시어는 로컬과 클라우드를 잇는 가교 역할을 합니다. Docker는 로컬에서 이를 무시하지만, ACA는 배포 중에 이를 사용합니다. 하나의 파일로 두 환경 모두 대응할 수 있습니다.
CLI가 백그라운드에서 생성하는 작업은 다음과 같습니다:
인그레스 (Ingress)가 포함된 Container App 형태의 에이전트 앱. 관리형 ID (Managed Identity)를 사용하여 MCP 도구 컨테이너를 동적으로 관리하는 별도의 Container App으로 실행되는 MCP 게이트웨이 (Gateway). 서버리스 GPU 상에서 Docker의 모델 러너 (Model Runner)를 통한 모델 서빙 (Model Serving). MCP 게이트웨이는 stdio-to-SSE 변환을 처리하므로, 사용자의 MCP 서버는 수정 없이 표준 Container App으로 실행됩니다.
배포 방법은 다음과 같습니다:
# 프리뷰 CLI 확장 설치
az extension remove --name containerapp
az extension add --source "<preview-extension-url>" --yes
...
--environment 플래그에 주목하세요. 이 플래그는 Express가 아닌 표준 ACA 환경에 배포합니다. 이것이 차이점입니다.
Azure AI 스택에서의 각 역할
Azure AI 호스팅 환경이 매우 복잡해졌습니다. 대부분의 환경에 배포해 본 사람으로서, 저는 옵션들을 다음과 같이 분류합니다:
Azure AI Foundry는 내장된 안전 장치 (Safety), 콘텐츠 필터링 (Content Filtering), 그리고 엔터프라이즈 거버넌스 (Enterprise Governance)를 갖춘 관리형 모델 엔드포인트 (Managed Model Endpoints)가 필요할 때 사용합니다. 인프라를 호스팅하는 것이 아니라 모델을 소비하는 형태입니다.
ACA Standard는 GPU 워크로드 (자체 호스팅하는 Ollama, vLLM), Dapr를 사용하는 마이크로서비스 (Microservices), VNet 격리, 또는 Express가 아직 제공하지 않는 엔터프라이즈 기능이 필요할 때 사용합니다. 에이전트를 위한 Docker Compose 또한 이곳에 배포됩니다.
ACA Express는 빠르고 저렴하며 상태가 없는 (Stateless) 에이전트 백엔드를 위한 것입니다. 프로토타입, MCP 서버, 도구 사용 (Tool-use) API, 웹훅 핸들러 (Webhook Handlers), 그리고 GPU 연산이 필요 없는 에이전트 오케스트레이터 (Agent Orchestrators)가 이에 해당합니다.
ACA Dynamic Sessions는 AI가 생성한 코드를 위한 샌드박스형 코드 실행 (Sandboxed Code Execution)을 위한 것입니다. Hyper-V로 격리되어 있으며, 밀리초 단위의 프로비저닝 (Provisioning)과 MCP 통합을 지원합니다.
Express는 무언가를 대체하는 것이 아닙니다. 표준 ACA (Azure Container Apps)를 사용하기에는 너무 단순하고, 서버리스 함수 (Serverless Function)를 사용하기에는 너무 복잡한 경량 에이전트 인프라 (Agent Infrastructure) 사이의 공백을 메우기 위한 것입니다.
Express에서 현재 부족한 점
이 서비스는 퍼블릭 프리뷰 (Public Preview) 단계이며, 지원되는 기능 목록도 이를 반영하고 있습니다. "지원 안 함" 열이 꽤 깁니다.
비밀 관리 (Secrets Management) 미지원 (Key Vault 통합 불가). 앱 런타임 (Runtime) 시 관리 ID (Managed Identity) 미지원. 상태 검사 (Health Probes) 미지원. 커스텀 도메인 (Custom Domains) 또는 관리형 인증서 (Managed Certificates) 미지원. VNet 통합 미지원. CORS, 세션 어피니티 (Session Affinity), 또는 사이드카 컨테이너 (Sidecar Containers) 미지원. OpenTelemetry 미지원. 오토스케일링 (Autoscaling) 규칙 (KEDA) 미지원. 지역은 West Central US 및 East Asia로 제한됨.
프로덕션용 에이전트 백엔드 (Agent Backends)를 구축할 때 이러한 공백은 중요합니다. 관리 ID가 없다는 것은 환경 변수 (Environment Variables)를 통해 자격 증명 (Credentials)을 전달해야 함을 의미합니다. 상태 검사가 없다는 것은 플랫폼의 기본 설정에 의존해야 함을 의미합니다. 비밀 관리가 지원되지 않으면 API 키가 평문 설정 (Plain Text Config)에 노출됩니다.
하지만 프로토타입 (Prototypes), 내부 도구, 그리고 활발히 개발 중인 에이전트 백엔드의 경우에는 어떨까요? 이러한 제한 사항들은 프로비저닝 (Provisioning) 속도와 비용 모델을 고려했을 때 수용 가능한 트레이드오프 (Tradeoffs)입니다. 그리고 Microsoft는 프리뷰 기간 동안 그들이 설명하는 "빠른 속도 (Rapid Cadence)"로 기능을 출시하고 있습니다.
어떤 것을 언제 사용할 것인가
경량 에이전트 백엔드, MCP 서버, 또는 HTTP 요청을 처리하며 GPU가 필요하지 않은 도구 사용 (Tool-use) API를 구축하고 있다면 Express를 선택하세요. 인프라에 대한 결정 없이 몇 초 만에 실행 가능한 엔드포인트 (Endpoint)를 가질 수 있습니다.
모델 서빙 (Model Serving), 여러 도구 컨테이너를 조정하는 MCP 게이트웨이 (Gateway), 그리고 GPU 워크로드 (Workloads)를 포함하는 전체 에이전트 스택을 구축하고 있다면, 표준 ACA에서 에이전트를 위한 Docker Compose를 사용하세요. Compose 파일은 로컬과 클라우드 간의 일관성 (Parity)을 제공하며, 워크로드 프로필 (Workload Profiles)은 필요한 컴퓨팅 자원을 제공합니다.
두 가지가 모두 필요하다면, 둘 다 사용하세요. 경량 엔드포인트에는 Express를, 무거운 작업에는 표준 ACA를 사용하십시오. 이들은 동일한 플랫폼에서 실행되며 동일한 리소스 그룹 (Resource Group) 내에 공존할 수 있습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기