Azure Container Apps 는 마이크로 서비스 및 컨테이너화된 애플리케이션을 배포하기 위한 완전 관리형 서버리스 컨테이너 호스팅 서비스입니다.
Azure를 사용하는 경우 안정성은 공유 책임입니다. Microsoft는 복원력 및 복구를 지원하는 다양한 기능을 제공합니다. 이러한 기능이 사용하는 모든 서비스 내에서 작동하는 방식을 이해하고 비즈니스 목표 및 가동 시간 목표를 충족하는 데 필요한 기능을 선택할 책임이 있습니다.
이 문서에서는 일시적인 오류, 가용성 영역 중단, 지역 중단 및 서비스 유지 관리를 포함하여 다양한 잠재적인 중단 및 문제에 대해 Container Apps를 복원할 수 있도록 하는 방법을 설명합니다. 또한 백업을 사용하여 다른 유형의 문제에서 복구하는 방법을 설명하고 Container Apps SLA(서비스 수준 계약)에 대한 주요 정보를 강조 표시합니다.
프로덕션 배포 권장 사항
솔루션의 안정성 요구 사항을 지원하기 위해 Container Apps를 배포하는 방법과 안정성이 아키텍처의 다른 측면에 미치는 영향을 알아보려면 Azure Well-Architected Framework의 Container Apps에 대한 아키텍처 모범 사례를 참조하세요.
안정성 아키텍처 개요
Container Apps를 사용하는 경우 기본 배포 단위 역할을 하고 컨테이너 앱 그룹을 중심으로 보안 경계를 정의하는 환경을 배포합니다. 환경은 가용성 영역 지원 및 네트워킹 구성을 포함하여 핵심 설정을 구성하는 곳입니다. 두 가지 유형의 환경은 워크로드 프로필 환경과 소비 전용 환경입니다. 자세한 내용은 Container Apps의 컴퓨팅 및 청구 구조를 참조하세요.
단일 환경에서 여러 앱을 배포할 수 있습니다. 각 앱은 하나 이상의 컨테이너를 실행합니다. 또한 환경은 비대화형 작업을 나타내는 하나 이상의 작업을 실행할 수 있습니다. 자세한 내용은 Container Apps의 컨테이너 및 Container Apps의 작업을 참조하세요.
각 앱에는 앱의 실행 중인 인스턴스를 나타내는 하나 이상의 복제본이 있습니다. 최소 및 최대 복제본 수와 앱이 복제본을 동적으로 추가 및 제거하는 방법을 포함하여 앱의 크기를 조정하는 방법을 제어할 수 있습니다. 플랫폼 스케줄러는 최소 복제본 수 요구 사항을 충족하는 동안 물리적 호스트 간에 최적의 배포를 보장합니다. 자세한 내용은 컨테이너 앱에서 스케일링 규칙 설정을 참조하세요.
Container Apps는 다양한 기능을 사용하여 애플리케이션의 안정성을 지원합니다.
자동 상태 모니터링: 기본 제공 수신 컨트롤러는 정상 복제본 간에 트래픽 부하를 자동으로 분산합니다. 복제본이 상태 검사에 실패하거나 기본 인프라를 장기간 사용할 수 없게 되면 서비스가 실패한 컨테이너를 자동으로 다시 시작하거나 대체 복제본을 만듭니다. 또한 정상적이지 않은 복제본으로부터 트래픽을 재배치하고 클러스터 내 네트워크 재시도를 관리합니다. 이 자동 복구 프로세스는 고객의 개입이 필요하지 않으며 지정된 복제본 수를 유지 관리합니다. 자세한 내용은 상태 프로브를 참조하세요.
Dapr을 통한 애플리케이션 복원력: Container Apps는 프로덕션 수준의 마이크로 서비스 및 컨테이너화된 애플리케이션을 지원하는 프레임워크인 Dapr과 긴밀한 통합을 제공합니다. Dapr에는 다른 서비스의 오류 처리를 포함하여 복원력을 향상시키는 데 도움이 되는 기능이 포함되어 있습니다. 자세한 내용은 Container Apps를 사용하는 마이크로 서비스를 참조하세요.
시스템 구성 요소에 대한 인프라 복원력: 이 복원력에는 컨트롤 플레인, 수신 컨트롤러 및 컨테이너 런타임이 포함됩니다. 가용성 영역이 있는 지역에서 Container Apps는 영역 중복성을 제공합니다. 자세한 내용은 가용성 영역 오류에 대한 복원력을 참조하세요.
일시적인 오류에 대한 복원력
일시적인 오류는 구성 요소에서 짧고 간헐적인 오류입니다. 클라우드와 같은 분산 환경에서 자주 발생하며 작업의 일반적인 부분입니다. 일시적인 오류는 짧은 시간 후에 스스로 수정됩니다. 애플리케이션은 일반적으로 영향을 받는 요청을 다시 시도하여 일시적인 오류를 처리할 수 있는 것이 중요합니다.
모든 클라우드 호스팅 애플리케이션은 클라우드 호스팅 API, 데이터베이스 및 기타 구성 요소와 통신할 때 Azure 임시 오류 처리 지침을 따라야 합니다. 자세한 내용은 임시 오류 처리를 위한 권장 사항을 참조하세요.
Container Apps는 플랫폼 수준 재시도 메커니즘 및 상태 모니터링을 통해 많은 일시적인 오류를 자동으로 처리합니다. 애플리케이션이 일시적인 오류에 대한 복원력을 갖도록 하려면 다음 작업을 수행합니다.
플랫폼이 애플리케이션별 오류 조건을 감지하고 응답할 수 있도록 상태 프로브를 구성합니다. 애플리케이션의 시작 특성에 따라 적절한 실패 임계값 및 시간 제한 값을 설정합니다. 예를 들어, 일시적인 문제 발생 시 컨테이너가 조기에 재시작되는 것을 방지하려면, 생존성 프로브에 대해 실패 임계값을 3으로 설정하고 주기를 10초로 지정하세요. 자세한 내용은 상태 프로브를 참조하세요.
서비스 검색 복원력 정책(미리 보기)을 사용하여 서비스 요청 오류를 사전에 방지, 검색 및 복구합니다. 예를 들어 복원력 정책을 사용하는 경우 앱에 들어오는 각 요청은 앱이 응답하지 못하게 하는 일시적인 오류가 있는 경우 자동으로 다시 시도될 수 있습니다. 자세한 내용은 서비스 검색 복원력(미리 보기)을 참조하세요.
외부 서비스 호출, 데이터베이스 연결 및 API 요청에 대한 재시도 논리를 애플리케이션에 구현합니다.
애플리케이션이 Dapr을 사용하여 클라우드 서비스와 통합하는 경우 Dapr 구성 요소 복원력(미리 보기) 을 사용하여 재시도, 시간 제한 및 회로 차단기를 구성합니다.
다른 종속성을 위해 애플리케이션은 일시적인 오류를 처리해야 합니다. 다운스트림 서비스 중단 시 연속 오류를 방지하기 위해 외부 서비스를 호출할 때 지수 백오프 전략 및 회로 차단기 패턴을 사용합니다. Container Apps 기본 제공 서비스 검색 및 부하 분산 기능은 자동으로 실패한 인스턴스에서 트래픽을 라우팅하지만, 애플리케이션 수준 재시도 정책은 플랫폼 수준 상태 검사가 컨테이너를 다시 시작하기 전에 일시적인 문제를 정상적으로 처리하도록 보장합니다.
작업을 일시적인 오류에 견딜 수 있도록 설계합니다. 여기에는 작업 실행 중 또는 종속성에서 발생하는 오류도 포함됩니다. 작업이 다시 시작되면 작업을 다시 시작할 수 있도록 설계하거나, 멱등성을 고려하여 안전하게 다시 실행할 수 있도록 설계합니다.
가용성 영역 오류에 대한 복원력
가용성 영역은 Azure 지역 내에서 물리적으로 별도의 데이터 센터 그룹입니다. 한 영역이 실패하면 서비스가 나머지 영역 중 하나로 전환될 수 있습니다.
Container Apps 환경을 만들 때 영역 중복을 사용하도록 설정하여 선택한 Azure 지역의 여러 가용성 영역에 기본 인프라를 분산할 수 있습니다. Container Apps는 영역 간에 앱의 복제본을 자동으로 예약합니다. 이 배포는 투명하게 발생하므로 개별 복제본에 대한 영역 배치를 지정할 필요가 없습니다.
영역 중복성은 컨테이너 앱의 복제본이 여러 영역에 분산되도록 하여 영역 수준 오류에 대한 애플리케이션의 복원력을 향상시킵니다.
다음 다이어그램은 세 개의 복제본이 있는 영역 중복 컨테이너 앱을 보여 줍니다. 각 복제본은 별도의 가용성 영역에서 실행됩니다.
요구 사항
지역 지원을 확인합니다. 영역 중복성은 Container Apps 및 가용성 영역을 지원하는 모든 지역에서 사용할 수 있습니다.
가용성 영역을 지원하는 지역을 확인하려면 가용성 영역 이 지원되는 Azure 지역을 참조하세요.
Container Apps를 지원하는 지역을 확인하려면 지역별 제품 가용성을 참조하세요.
워크로드 프로필을 사용합니다. 존 중복성은 사용량 기반 및 전용 워크로드 프로필을 포함한 모든 컨테이너 앱 플랜에서 사용할 수 있습니다.
환경을 만드는 동안 영역 중복을 사용하도록 설정합니다. 환경을 만든 후에는 이 설정을 변경할 수 없습니다.
가상 네트워크에 Container Apps 환경을 배포합니다. 가상 네트워크는 가용성 영역을 지원하는 지역에 있어야 합니다. 가상 네트워크에 적절한 크기의 서브넷이 있는지 확인합니다. 사용 전용 환경에는
/23CIDR(Classless Inter-Domain Routing) 범위 이상의 서브넷이 필요하지만, 워크로드 프로필 환경에는/27CIDR 범위 이상이 필요합니다.여러 가용성 영역에 분산되도록 최소 복제본 수를 2개 이상으로 설정합니다. 다음 조건이 적용되는 경우 더 높은 최소 복제본 수를 설정하는 것이 좋습니다.
예상 최대 부하에는 두 개 이상의 복제본이 필요합니다.
여러 동시 영역 중단에 대한 복원력이 있어야 합니다.
영역 중단 중에 새 복제본이 다른 영역에 생성될 때까지 기다리는 시간을 최소화하려고 합니다.
비용
영역 중복을 사용하도록 설정할 때 표준 Container Apps 가격 책정 이외의 추가 요금이 발생하지 않습니다. 영역 중복성이 켜져 있든 꺼져 있든 관계없이 컴퓨팅 리소스, 요청 및 vCore 초에 대해 동일한 요금을 지불합니다. 자세한 내용은 Container Apps 가격 책정 및 Container Apps 청구를 참조하세요.
가용성 영역 지원 구성
영역 간 중복이 있는 컨테이너 앱 환경을 만듭니다. Azure Portal, Azure CLI 및 Azure PowerShell을 다루는 배포 지침은 영역 중복 컨테이너 앱 만들기를 참조하세요.
영역 중복 배포로 마이그레이션하세요. 기존 Container Apps 환경에서는 영역 중복을 사용하도록 설정할 수 없습니다. 영역 중복이 아닌 기존 환경을 업그레이드하려면 지원되는 지역에서 영역 중복을 사용하도록 설정된 새 환경을 만듭니다. 그런 다음 컨테이너 앱을 다시 배포합니다.
영역 중복을 사용하지 않도록 설정합니다. 환경을 만드는 동안 영역 중복성을 사용하도록 설정한 후에는 사용하지 않도록 설정할 수 없습니다. 영역 중복이 아닌 배포가 필요한 경우 영역 중복 옵션을 사용하도록 설정하지 않고 새 환경을 만들거나 가용성 영역을 지원하지 않는 지역에 배포해야 합니다.
영역 중복성을 확인합니다. Azure Portal, Azure CLI 및 Azure PowerShell을 사용하여 환경의 영역 중복 상태를 확인할 수 있습니다.
용량 계획 및 관리
가용성 영역을 사용할 수 없게 되면 Container Apps 플랫폼은 확장 규칙을 사용하여 해당 영역에서 손실된 복제본을 교체할 시기를 결정합니다. 스케줄러가 적절한 일정 결정을 내릴 수 있도록 크기 조정 규칙을 올바르게 구성하는 것이 중요합니다.
크기 조정 규칙을 올바르게 구성하려면 다음 원칙을 따릅니다.
애플리케이션에서 허용할 수 있는 최소 복제본 수를 설정합니다. 플랫폼이 이전 복제본이 사라졌음을 감지해야 하므로 손실된 복제본을 교체하는 데 짧은 시간이 걸릴 수 있습니다. 그런 다음 새 복제본은 들어오는 요청을 수신하기 전에 시작되어 정상적인 준비 상태 프로브 상태를 반환해야 합니다. 지정한 최소 복제본 수보다 적은 기간을 허용할 수 없는 경우 영역을 사용할 수 없게 되는 경우에도 애플리케이션 성능을 유지하기 위해 과도하게 프로비전하는 것이 좋습니다.
Container Apps 스케줄러가 영역 간에 최적의 배치 결정을 내리는 데 도움이 되도록 리소스 요청 및 제한을 설정합니다. 지정되지 않은 리소스 요구 사항으로 인해 부하가 높은 동안 균일하지 않은 배포 또는 배치 오류가 발생할 수 있습니다.
구성 옵션에 대한 자세한 내용은 크기 조정 규칙 설정을 참조하세요.
모든 영역이 정상인 경우의 동작
이 섹션에서는 Container Apps 리소스가 영역 중복성을 위해 구성되고 모든 가용성 영역이 작동할 때 예상되는 사항에 대해 설명합니다.
영역 간의 트래픽 라우팅: 영역 중복 Container Apps를 통해 플랫폼은 여러 복제본이 동시에 트래픽을 처리하는 액티브-액티브 모델로 작동합니다. 인그레스 컨트롤러는 기본적으로 라운드 로빈 로드 밸런싱을 사용하여, 해당 영역에 관계없이 모든 정상 복제본에 들어오는 요청을 분산합니다. 각 영역은 요청을 독립적으로 처리하며 플랫폼은 트래픽 분산을 위해 특정 영역의 우선 순위를 지정하지 않습니다. 상태 프로브는 여러 관점에서 각 복제본의 정확한 상태 평가를 보장하기 위해 모든 영역에서 시작됩니다.
영역 간 데이터 복제: Container Apps는 상태 비지정 워크로드용으로 설계되었기 때문에 영역 간에 애플리케이션 데이터를 복제하지 않습니다. 컨테이너 범위 스토리지 및 복제본 범위 스토리지를 포함하여 앱이 임시 스토리지에 저장하는 모든 데이터는 컨테이너 또는 복제본이 종료될 때 삭제됩니다.
상태 저장 데이터 요구 사항의 경우 영역 중복 스토리지에 대해 구성된 Azure Files 파일 공유를 탑재 하거나 자체 영역 간 복제 기능을 제공하는 Azure Cosmos DB 또는 Azure SQL Database와 같은 다른 Azure 서비스를 사용합니다.
플랫폼은 고가용성을 위해 영역 간에 앱 구성, 크기 조정 규칙 및 비밀을 포함하여 컨트롤 플레인 메타데이터만 복제합니다. 컨테이너 이미지는 복제본을 만들 때 필요에 따라 컨테이너 레지스터에서 각 영역으로 가져옵니다.
영역 오류 중 동작
이 섹션에서는 Container Apps 리소스가 영역 중복성을 위해 구성되고 가용성 영역 중단이 발생할 때 예상되는 사항에 대해 설명합니다.
검색 및 응답: Azure는 영역 오류를 자동으로 검색합니다. Container Apps는 실패한 영역에 대한 새 복제본 예약을 즉시 중지하고 나머지 영역의 정상 복제본에 트래픽을 재배포하기 시작합니다. 플랫폼은 개입 없이 모든 장애 조치(failover) 작업을 자동으로 처리합니다.
통지: 영역이 다운된 경우 Microsoft는 자동으로 알리지 않습니다. 그러나 Azure Service Health 를 사용하여 영역 오류를 포함하여 서비스의 전반적인 상태를 파악할 수 있으며, 문제를 알리도록 Service Health 경고를 설정할 수 있습니다.
Azure Monitor에서 Container Apps 메트릭을 통해 앱의 상태를 모니터링할 수도 있습니다. 영역 관련 문제가 발생할 때 즉시 알림을 받도록 복제본 수 감소 및 요청 실패율에 대한 경고를 구성합니다.
활성 요청: 실패한 영역의 복제본에 대한 비행 중 요청은 드롭되거나, 타임아웃 또는 연결 오류가 발생할 수 있습니다. 영향을 받는 영역에서 실행되는 모든 작업 실행은 중단되고 실패한 것으로 표시됩니다.
예상 데이터 손실: 서비스가 상태 비정상 워크로드용으로 설계되었기 때문에 Container Apps 플랫폼 수준에서 데이터 손실이 발생하지 않습니다. 가용성 영역 내 의 임시 스토리지 에 저장된 모든 데이터는 복제본이 종료될 때 손실되며 임시 스토리지는 임시 데이터에만 사용해야 합니다.
예상 가동 중지 시간: 애플리케이션은 영역 오류 발생 시 가동 중지 시간이 거의 없거나 없습니다. 실제 영향은 애플리케이션의 상태 프로브 설정 및 정상 영역에 있는 복제본 수에 따라 달라집니다. 클라이언트가 일시적인 오류 처리 지침을 따라 효과를 최소화해야 합니다.
영향을 받는 영역에서 실행되는 모든 작업은 중단되고 실패한 것으로 표시됩니다. 작업에서 영역 오류에 대한 복원력이 필요한 경우 다시 시도 또는 병렬 처리를 구성하여 작업이 동일한 실행의 여러 복사본을 실행하도록 합니다. 자세한 내용은 고급 작업 구성을 참조하세요.
트래픽 경로 변경: 수신 컨트롤러의 상태 프로브는 빠르게 접근할 수 없는 복제본을 감지하여 부하 분산 풀에서 제거합니다. 앱의 상태 프로브 구성에 따라 이 장애 조치(failover) 프로세스는 일반적으로 약 30초 안에 발생합니다. 후속 들어오는 트래픽은 나머지 정상 복제본에 분산됩니다. 이 트래픽 리디렉션은 동일한 애플리케이션 URL을 계속 사용하는 클라이언트에 투명하게 발생합니다.
세션 선호도가 활성화되고 영역이 다운되면 이전 복제본을 더 이상 사용할 수 없으므로 이전에 해당 영역의 복제본으로 라우팅된 클라이언트가 새 복제본으로 라우팅됩니다. 이전 복제본과 관련된 모든 상태가 손실됩니다.
잘못된 영역에서 작업의 새 인스턴스가 시작되지 않습니다.
인스턴스 관리: 자동 크기 조정 규칙이 증가된 부하에 따라 트리거되는 경우 정상 영역에 새 복제본 인스턴스가 생성될 수 있습니다.
영역 복구
가용성 영역이 실패에서 복구되면 Container Apps는 개입 없이 영역을 활성 서비스로 자동으로 다시 통합합니다. 플랫폼의 상태 프로브는 복구된 영역의 인프라를 사용할 수 있게 되는 시기를 감지하고 Container Apps는 크기 조정 구성에 따라 해당 영역에 새 복제본을 예약하기 시작합니다. 정상 영역에 있는 기존 복제본은 재통합 프로세스 중에 트래픽을 계속 제공하므로 서비스 중단을 방지할 수 있습니다.
Container Apps는 일반 크기 조정 작업의 일환으로 사용 가능한 모든 영역에서 복제본 배포의 균형을 점진적으로 조정합니다. 이 자동 리밸런싱은 스케일링 이벤트로 인해 복제본 생성이 이루어질 때나 비정상 복제본이 교체될 때 발생합니다. 플랫폼은 기존의 정상 복제본을 즉시 재배포하지 않으므로 불필요한 컨테이너 다시 시작을 방지하고 복구하는 동안 애플리케이션 안정성을 유지합니다.
영역 오류 테스트
Container Apps 플랫폼은 영역 중복 컨테이너 앱의 트래픽 라우팅, 장애 조치(failover), 장애 복구를 관리합니다. 이 기능은 완전히 관리되므로 가용성 영역 오류 프로세스를 시작하거나 유효성을 검사할 필요가 없습니다.
영역 오류에 대한 애플리케이션의 복원력을 확인하려면 제어된 테스트 방법을 사용하여 애플리케이션 계층에서 영역 수준 중단을 시뮬레이션합니다. 애플리케이션을 축소하여 특정 영역에서 복제본을 중지하거나 제거하고 나머지 복제본이 증가된 부하를 처리하는 방법을 모니터링합니다. 복제본 수, 요청 성공률, 응답 시간 및 자동 크기 조정 동작을 포함하여 복원력 테스트 중에 주요 메트릭을 모니터링합니다. 복제본이 제거될 때 최소 복제본 수가 서비스 가용성을 유지하는지 확인하고 크기 조정 규칙이 나머지 복제본의 증가된 부하를 처리할 수 있는지 확인합니다. 상태 엔드포인트를 의도적으로 실패시켜 상태 프로브 구성을 테스트하여, 플랫폼이 예상 시간 내에 비정상 인스턴스를 회전에서 제거하는지 확인하십시오.
지역 전체 오류에 대한 복원력
Container Apps는 단일 지역 서비스입니다. 지역을 사용할 수 없게 되면 환경 및 앱도 사용할 수 없습니다.
복원력을 위한 사용자 지정 다중 지역 솔루션
애플리케이션에 영향을 주는 단일 지역 오류의 위험을 줄이기 위해 여러 지역에 환경을 배포할 수 있습니다. 다음 단계는 복원력을 강화하는 데 도움이 됩니다.
각 지역의 환경에 애플리케이션을 배포합니다. 각 환경에는 자체 가상 네트워크 구성이 필요하며 서브넷 요구 사항은 각 지역 배포에 독립적으로 적용됩니다. 컨테이너 이미지는 모든 지역에서 사용할 수 있어야 하며, 지역 복제를 사용하도록 설정된 Azure Container Registry를 사용하여 수행할 수 있습니다.
Azure Front Door 또는 Azure Traffic Manager와 같은 서비스를 사용하여 부하 분산 및 장애 조치(failover) 정책을 구성합니다.
마지막 애플리케이션 상태를 복구할 수 있도록 지역 간에 데이터를 복제합니다.
백업 및 복원
Container Apps는 애플리케이션 또는 데이터에 대한 기본 제공 백업 기능을 제공하지 않습니다. 컨테이너 앱은 무상태 컨테이너 호스팅 플랫폼으로서 애플리케이션이 외부 서비스를 통해 자체 데이터 유지 및 복구 전략을 관리해야 합니다. 애플리케이션 컨테이너와 해당 로컬 파일 시스템은 임시이며 복제본을 다시 시작하거나 이동할 때 로컬에 저장된 모든 데이터가 손실됩니다.
애플리케이션 업데이트 중 복원력
수정 관리를 사용하여 가동 중지 시간 없이 애플리케이션에 업데이트를 배포합니다. 업데이트된 컨테이너 이미지를 사용하여 새 개정판을 만들고 블루-그린 배포 전략을 사용하여 전환하거나 트래픽 분할 규칙을 사용하여 트래픽을 점진적으로 이동할 수 있습니다. 애플리케이션 업데이트 중에 플랫폼은 서비스 중단을 방지하기 위해 이전 컨테이너를 해제하기 전에 새 컨테이너를 만들어 최소 복제본 수를 유지합니다.
자세한 내용은 Container Apps의 변경 내용 업데이트 및 배포를 참조하세요.
서비스 유지 관리에 대한 복원력
Container Apps는 자동 플랫폼 유지 관리를 수행하여 보안 업데이트를 적용하고, 새로운 기능을 배포하고, 서비스 안정성을 향상시킵니다. 이 플랫폼은 장애 도메인 및 가용성 영역에서 롤링 업데이트를 사용하여 실행 중인 애플리케이션의 중단을 줄입니다. 유지 관리 기간 동안 업데이트가 기본 인프라에 단계적으로 적용되므로 컨테이너는 중단 없이 계속 실행됩니다.
앱에서 유지 관리를 수행하려는 기간인 고유한 유지 관리 기간을 지정할 수 있습니다. 중요한 업데이트는 유지 관리 기간 외에 발생할 수 있습니다. 자세한 내용은 Container Apps 계획된 유지 관리를 참조하세요.
서비스 수준 약정
Azure 서비스의 SLA(서비스 수준 계약)는 각 서비스의 예상 가용성과 해당 가용성 예상 결과치를 달성하기 위해 솔루션이 충족해야 하는 조건을 설명합니다. 자세한 내용은 온라인 서비스 SLA를 참조하세요.
Container Apps의 가용성 SLA는 앱에서 설정한 크기 조정 규칙을 기반으로 합니다.