Azure Container Apps 샌드박스 개요

Azure Container Apps 샌드박스는 기본 제공 일시 중단 및 다시 시작 기능을 사용하여 빠르고 안전한 임시 컴퓨팅 환경을 제공합니다. 샌드박스는 앱, 작업 및 동적 세션과 함께 Container Apps의 일류 리소스 종류(Microsoft.App/SandboxGroups)입니다.

Important

샌드박스를 관리하고 만들려면 Azure 역할 Container Apps SandboxGroup 데이터 소유자 필요합니다. 샌드박스를 만들고 관리하는 모든 사용자에게 이 역할을 할당합니다.

샌드박스 환경 만들기 및 관리

Sandboxes 포털 또는 Azure Container Apps CLI 또는 SDK 사용하여 프로그래밍 방식으로 샌드박스를 만들고 관리할 수 있습니다.

Container Apps 샌드박스의 주요 특징

  • 1초 미만의 시작 시간: 샌드박스는 거의 즉시 사용할 수 있도록 사전 예열된 풀에서 프로비저닝됩니다.

  • 강력한 격리: 각 샌드박스는 신뢰할 수 없는 코드 실행에 안전한 자체 보안 경계에서 실행됩니다.

  • 0까지 확장하기: 샌드박스가 중단되면 CPU나 메모리 비용을 지불하지 않습니다.

  • 확장: 서비스는 수요에 따라 수천 개의 동시 샌드박스로 급증합니다.

  • OCI 컨테이너 이미지 지원: 포함된 공개 이미지를 사용하거나 자체 컨테이너 이미지를 샌드박스 루트 파일 시스템으로 가져와.

  • 일시 중단 및 다시 시작: 메모리 및 디스크를 포함한 전체 상태를 스냅샷하고 나중에 하위 초 복원 시간을 사용하여 다시 시작합니다.

  • 라이프사이클 제어: 상태 스냅샷, 영구 저장소, 네트워크 정책(출구 및 인그레스 모두)을 포함한 전체 샌드박스 수명 주기를 관리할 수 있습니다.

샌드박스를 사용하는 경우

명시적인 라이프사이클 제어, 영속 상태, SDK를 통한 프로그래밍 가능한 접근 권한이 필요한 격리된 컴퓨팅 환경이 필요할 때는 샌드박스를 사용하세요.

Scenario 샌드박스를 사용하시겠습니까? 이유
상태 유지를 사용하는 AI 코드 실행 Yes 작업 간 일시 중단, 전체 컨텍스트 그대로 다시 시작
개발 환경 Yes 세션 간에 상태를 유지하는 주문형 일시 중단 가능 환경
에이전트 워크플로 Yes AI 에이전트에게 작업 경계를 넘어 지속적이고 격리된 작업 영역 제공
대화형 사용자 세션 Yes 각 사용자는 고유한 격리된 컴퓨팅 환경을 가져옵니다.
보안 다중 테넌트 컴퓨팅 Yes 여러 테넌트에서 신뢰할 수 없는 워크로드를 실행하기 위한 강력한 격리
급증하는 워크로드 Yes 필요에 따라 0에서 수천 개의 샌드박스까지 확장할 수 있습니다
CI/CD 파이프라인 Yes 유휴 상태일 때 0으로 확장되는 임시 빌드 및 테스트 환경

적절한 Container Apps 컴퓨팅 옵션 선택

다음 표를 사용하여 워크로드에 맞는 Container Apps 컴퓨팅 유형을 선택합니다.

컴퓨팅 유형 적합한 대상 Lifecycle 시스템 상태
앱 장기 실행 서비스, API, 웹앱 연속 상태 비저장(외부 상태 저장소)
직업 실행-완료 작업, 일괄 처리 시작 → 실행 → 완료 상태 비저장
동적 세션 관리형 코드 실행, LLM 생성 스크립트 세션 풀에서 관리 임시
샌드박스 수명 주기 제어를 사용하여 프로그래밍 가능한 격리된 컴퓨팅 관리: 만들기, 일시 중단, 다시 시작, 삭제 상태 저장(스냅샷, 볼륨)

주요 개념

사전 요구 사항

샌드박스를 만들거나 관리하려면 Azure 역할 할당 Container Apps SandboxGroup 데이터 소유자 필요합니다. 이 역할이 없으면 샌드박스 작업을 수행할 수 없습니다. Azure 포털에서 또는 Azure CLI 사용하여 원하는 범위(Azure 구독 또는 Azure 리소스 그룹)에서 이 역할을 할당합니다.

다음 명령을 실행하기 전에 <>로 둘러싸인 자리 표시자를 자신의 값으로 바꾸세요.

az role assignment create \
  --assignee "<USER_EMAIL_OR_OBJECT_ID>" \
  --role "Container Apps SandboxGroup Data Owner" \
  --scope "/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP_NAME>"

샌드박스 그룹

샌드박스 그룹은 샌드박스의 최상위 관리 경계입니다. 리소스 그룹 및 지역에서 만드는 ARM(Azure Resource Manager) 리소스입니다. 모든 샌드박스, 디스크 이미지, 스냅샷, 볼륨 및 비밀은 샌드박스 그룹으로 범위가 지정됩니다.

샌드박스 그룹을 사용하여 애플리케이션, 팀 또는 환경별로 샌드박스를 구성합니다.

샌드박스

샌드박스는 샌드박스 그룹 내의 개별 격리된 컴퓨팅 인스턴스입니다. 각 샌드박스는 디스크 이미지 또는 스냅샷에서 실행되며 자체 CPU, 메모리, 디스크 및 네트워크 경계가 있습니다.

명령을 실행하고, 파일을 관리하고, 포트를 노출하고, 수명 주기 상태를 제어하여 샌드박스와 상호 작용합니다.

디스크 이미지

디스크 이미지는 샌드박스 루트 파일 시스템으로 사용하기 위해 변환된 OCI 컨테이너 이미지입니다. 공용 이미지를 사용하거나 사용자 고유의 컨테이너 레지스트리에서 프라이빗 이미지를 만들 수 있습니다.

다음에서 디스크 이미지를 빌드할 수 있습니다.

  • 공용 이미지: 모든 샌드박스 그룹에서 사용할 수 있는 미리 빌드된 이미지입니다.
  • 컨테이너 레지스트리 이미지: 선택적 인증을 사용하여 퍼블릭 또는 프라이빗 레지스트리에서 끌어오기.

스냅샷

스냅샷은 메모리 및 디스크를 포함하여 실행 중인 샌드박스의 전체 상태를 캡처합니다. 스냅샷을 사용하여 다음을 수행합니다.

  • 일시 중단 및 다시 시작: 샌드박스를 일시 중지하고 나중에 모든 프로세스와 데이터를 그대로 사용하여 복원합니다.
  • 환경 복제: 알려진 정상 상태에서 새 샌드박스를 만듭니다.
  • 기준 공유: 미리 구성된 환경을 팀 전체에 배포합니다.

Volumes

Microsoft 볼륨을 관리하고 샌드박스에 탑재할 수 있는 영구 스토리지를 제공합니다. 다음 두 가지 볼륨 유형을 사용할 수 있습니다.

볼륨 유형 Description
Azure Blob 여러 샌드박스(업로드 및 다운로드, 지속적인 아티팩트)를 통해 데이터를 공유하세요. 한 번에 여러 샌드박스에 탑재할 수 있습니다.
데이터 디스크 데이터베이스, 빌드 캐시 및 대규모 작업 집합에 대한 고성능 볼륨입니다. 한 번에 하나의 샌드박스에만 탑재할 수 있습니다.

수명 주기 상태

샌드박스는 다음 상태를 거꿉니다.

시스템 상태 Description
실행 중 CPU와 메모리를 사용하는 능동 실행
중지됨 사용자, API, 또는 라이프사이클 정책에 의해 차단됨

샌드박스가 중단되면 연산은 일시정지 모드(Suspend Mode)를 기반으로 스냅샷을 가져와 보존합니다(다음 섹션 참조).

각 샌드박스별로 라이프사이클 정책을 구성할 수 있습니다:

  • 자동 일시정지: 설정 가능한 타임아웃 후 유휴 샌드박스를 일시 중지합니다. 샌드박스는 인그레스(들어오는) 트래픽이 없고, 코드 실행(실행 API를 통해), 인터랙티브 셸 세션이 없으며, 파일 연산이 없을 때 유휴 상태가 됩니다.
  • 일시 중지 모드: 메모리 모드(전체 스냅샷 - 디스크 + 메모리) 또는 디스크 모드(디스크 보존 전용) 중 선택할 수 있습니다.
  • 자동 삭제: 샌드박스가 종료된 후 일정 기간 동안 자동으로 샌드박스를 삭제합니다.

아키텍처

샌드박스는 2면 아키텍처를 사용합니다.

비행기 Endpoint Operations
ARM 컨트롤 플레인 management.azure.com 샌드박스 그룹을 만들고, 업데이트하고, 삭제하고, 나열합니다. VNet 연결을 관리합니다.
데이터 평면 management.azuredevcompute.io 샌드박스, 디스크 이미지, 스냅샷, 파일, 볼륨, 비밀, 포트 및 송신 정책을 관리합니다.

ARM 컨트롤 플레인을 통해 샌드박스 그룹을 만들고 관리합니다. 개별 샌드박스와 그 자원에 대한 모든 작업은 특정 샌드박스 그룹에 적용된 ACA 샌드박스 데이터 플레인을 거칩니다.

리소스 계층

각 샌드박스에는 CPU, 메모리 및 디스크 할당을 확인하는 리소스 계층이 할당됩니다.

Tier CPU 기억 디스크
XS 0.25 코어 0.5GB 20GB
S 0.5 코어 1GB 20GB
M(기본값) 1코어 2GB 20GB
L 코어 2개 4GB 40GB
XL 코어 4개 8GB 80GB

Considerations

샌드박스를 사용할 때 다음 사항을 고려합니다.

  • Entra ID 필수: Microsoft Entra ID 계정만 샌드박스에 액세스할 수 있습니다. 개인 Microsoft 계정은 지원되지 않습니다.
  • 네트워킹 제어: 샌드박스에서 나가는 트래픽을 제어하는 이그레스 정책을 설정할 수 있으며, 도메인 기반 허용 또는 거부 규칙, CIDR 기반 네트워크 규칙, VNet 통합 등이 포함됩니다.

샌드박스 및 동적 세션

샌드박스와 동적 세션은 모두 Container Apps에서 격리된 컴퓨팅 환경을 제공하지만 서로 다른 요구 사항을 충족합니다.

동적 세션 샌드박스
액세스 패턴 세션 풀 관리 엔드포인트를 통한 HTTP 요청 라우팅 개별 샌드박스에 대한 직접 SDK 및 CLI 제어
시스템 상태 일시적, 쿨다운 후 제거됨 일시 중단, 다시 시작 및 스냅샷이 있는 상태 저장
개발자 제어 풀에서 할당 및 수명 주기를 관리합니다. 샌드박스 수명 주기, 파일, 포트 및 정책을 관리합니다.
이미지 모델 코드 인터프리터(기본 제공) 또는 사용자 지정 컨테이너 디스크 이미지(OCI), 스냅샷, 콘텐츠 패키지
영구 스토리지 사용할 수 없음 볼륨 (Azure Blob, 데이터 디스크)
네트워킹 기본 격리 아웃바운드 정책, VNet 통합, 포트 관리
SDK 풀 엔드포인트를 통한 REST API Python SDK (azure-containerapps-sandbox) 및 REST API

인프라를 추상화하는 관리형 실행 환경이 필요한 경우 동적 세션을 선택합니다. 상태 지속성을 사용하여 격리된 컴퓨팅에 대한 프로그래밍 가능한 제어가 필요한 경우 샌드박스를 선택합니다.