App Service Environment를 사용하는 고가용성 엔터프라이즈 배포

Microsoft Entra ID
Azure Application Gateway
Azure Firewall
Azure Virtual Network
Azure App Service

가용성 영역은 특정 지역에 있는 데이터 센터의 물리적으로 구분된 컬렉션입니다. 영역 간에 리소스를 배포하여 영역으로 제한되는 중단이 애플리케이션의 가용성에 영향을 주지 않도록 할 수 있습니다. 이 아키텍처는 영역 중복 아키텍처에 배포하여 App Service Environment 배포의 복원력을 향상시키는 방법을 설명합니다. 이러한 영역은 근접과 관련이 없습니다. 구독마다 서로 다른 물리적 위치에 매핑될 수 있습니다. 아키텍처는 단일 구독 배포를 가정합니다.

가용성 영역을 지원하는 Azure 서비스는 영역, 영역 중복 또는 둘 다일 수 있습니다. 영역 서비스를 특정 영역에 배포할 수 있으며 영역 간에 영역 중복 서비스를 자동으로 배포할 수 있습니다. 자세한 내용은 가용성 영역 지원 형식을 참조하세요. App Service Environment는 영역 중복 배포를 지원합니다.

영역 중복에 대한 App Service Environment 구성하는 경우 플랫폼은 선택한 지역의 사용 가능한 영역에 Azure App Service 계획의 인스턴스를 자동으로 배포합니다. 영역 중복 계획은 두 개 이상의 영역을 사용하며 두 개 이상의 인스턴스가 필요합니다. 계획에 사용할 수 있는 영역 수는 지역에 따라 다릅니다.

아키텍처

App Service Environment의 고가용성 배포를 위한 참조 아키텍처를 보여 주는 다이어그램

다이어그램은 점선이 있는 파란색 경계 레이블이 지정된 가상 네트워크로 묶인 Microsoft Azure 네트워크 아키텍처의 구조화된 레이아웃을 제공합니다. 인터넷을 나타내는 아이콘은 가상 네트워크 외부에 있습니다. 자체 서브넷에 있는 Application Gateway에 연결합니다. 이 게이트웨이는 영역 중복 App Service Environment 내부 부하 분산 장치가 포함된 중앙 서브넷을 가리킵니다. 이 서브넷 내에서 세 개의 스택된 구성 요소는 웹 앱, 프라이빗 API, 함수라는 레이블이 붙어 있습니다. 웹앱 환경은 세 개의 서브넷을 가리킵니다. 하나의 서브넷에는 Azure Managed Redis가 포함됩니다. 다른 서브넷에는 외부 레이블이 지정된 아웃바운드 트래픽을 가리키는 화살표가 있는 방화벽이 포함되어 있습니다. 세 번째 서브넷에는 가상 네트워크 외부에 있는 Azure Managed Redis, Azure Service Bus, Azure Cosmos DB, Azure SQL Database 및 Azure Key Vault를 나타내는 아이콘에 연결된 여러 프라이빗 엔드포인트가 있습니다. 서브넷 외부의 DNS(프라이빗 도메인 이름 시스템) 영역은 프라이빗 엔드포인트에 연결됩니다. 점프 박스 VM(가상 머신)은 자체 서브넷에 상주하며, 중앙 서브넷과 가상 네트워크 외부 다이어그램의 맨 아래에 있는 GitHub Actions라는 레이블이 지정된 아이콘에 파선으로 연결됩니다. 맨 오른쪽에는 Microsoft Entra ID라는 레이블이 지정된 아이콘이 단독으로 표시됩니다.

이 아키텍처의 Visio 파일을 다운로드합니다.

이 아키텍처의 App Service Environment 서브넷의 리소스는 표준 App Service Environment 배포 아키텍처의 리소스와 일치합니다. 이 아키텍처는 App Service Environment v3 및 Azure Managed Redis의 영역 중복 기능을 사용하여 더 높은 가용성을 제공합니다. 이 참조 아키텍처의 범위는 단일 지역으로 제한됩니다.

Components

  • App Service Environment v3 는 영역 중복을 지원하는 격리된 고성능 호스팅 옵션입니다. 영역 중복을 지원하는 지역에서는 App Service Environment의 수명 주기 동안 언제든지 영역 중복을 구성할 수 있습니다. 영역 중복 App Service Environment의 각 App Service 계획은 2개 이상의 영역에 걸쳐 배포를 보장하기 위해 최소 2개의 인스턴스를 포함해야 합니다. 동일한 App Service Environment 내에서 영역 중복 및 비 영역 중복 계획을 결합할 수 있습니다. 인스턴스가 하나만 있는 계획을 구성하려면 먼저 해당 계획에 대한 영역 중복을 사용하지 않도록 설정합니다. 영역 중복은 추가 요금이 발생하지 않습니다. 사용 중인 격리 v2 인스턴스에 대해서만 요금을 지불합니다. 자세한 내용은 App Service Environment 가격 책정 및 App Service Environment의 신뢰성을 참조하세요. 이 아키텍처에서 App Service Environment v3는 웹앱, API 및 함수를 위한 격리된 고성능 호스팅 플랫폼을 제공합니다.

  • Azure Virtual Network 는 단일 지역 내의 모든 가용성 영역에 걸쳐 있는 계층 3 IP 기반 네트워크입니다. 또한 가상 네트워크의 서브넷은 가용성 영역 간에 확장됩니다. 자세한 내용은 Virtual Network의 App Service Environment 및 안정성에 대한 네트워크 요구 사항을 참조 하세요. 이 아키텍처에서 Virtual Network는 모든 리소스에 대해 안전하고 격리된 네트워킹을 제공합니다.

  • Azure Application Gateway v2 는 영역 중복을 지원하는 클라우드 네이티브 웹 트래픽 부하 분산 장치입니다. 이 아키텍처에서는 각 지역의 여러 가용성 영역에 걸쳐 있습니다. 따라서 단일 애플리케이션 게이트웨이는 참조 아키텍처에 표시된 대로 고가용성을 제공합니다. 참조 아키텍처는 일반적인 위협 및 취약성에 대한 향상된 보호를 제공하는 Application Gateway의 웹 애플리케이션 방화벽 SKU를 사용합니다. 이 보호는 OWASP(Open Web Application Security Project)의 CRS(핵심 규칙 집합) 구현을 기반으로 합니다. 자세한 내용은 Application Gateway v2의 안정성을 참조하세요. Application Gateway v2는 영역 중복 웹 트래픽 부하 분산 장치 역할을 합니다.

  • Azure Firewall 은 고가용성을 위한 기본 제공 지원을 포함하는 클라우드 네이티브 관리형 네트워크 보안 서비스입니다. 추가 구성 없이 여러 영역을 사용할 수 있습니다. 이 아키텍처에서 Azure Firewall은 관리되는 고가용성 네트워크 보안을 제공하여 가상 네트워크의 리소스에 대한 아웃바운드 트래픽을 제어하고 모니터링합니다.

    방화벽을 배포할 때 특정 가용성 영역을 구성할 수도 있습니다. 자세한 내용은 Azure Firewall 가용성 영역 지원을 참조하세요. 참조 아키텍처는 이 구성을 사용하지 않습니다.

  • Microsoft Entra ID 는 가용성 영역 및 지역에 걸쳐 있는 고가용성 고 중복 글로벌 서비스입니다. 자세한 내용은 고급 Microsoft Entra ID 가용성을 참조하세요. 이 아키텍처에서 Microsoft Entra ID는 모든 구성 요소에서 인증 및 권한 부여를 위해 고가용성 중복 ID 및 액세스 관리 서비스를 제공합니다.

  • GitHub Actions 는 CI/CD(지속적인 통합 및 지속적인 배포) 기능을 지원하는 자동화 플랫폼입니다. 이 아키텍처에서 GitHub Actions는 가상 네트워크 외부에서 앱을 빌드하고 App Service 환경에서 호스트되는 App Service 계획에 배포합니다.

App Service Environment는 가상 네트워크에 있으므로 VM(가상 머신)은 배포를 용이하게 하기 위해 가상 네트워크에서 점프 상자를 제공합니다. 향상된 보안 및 RDP(원격 데스크톱 프로토콜) 및 SSH(Secure Shell) 연결을 위해 점프 상자에 Azure Bastion 을 사용하는 것이 좋습니다.

  • Azure Managed Redis 는 영역 중복 서비스입니다. 영역 중복 캐시는 여러 가용성 영역에 배포된 VM에서 실행됩니다. 이 아키텍처에서 Azure Managed Redis는 더 높은 복원력과 가용성을 제공합니다.

고려 사항

이러한 고려 사항은 워크로드의 품질을 향상시키는 데 사용할 수 있는 일련의 기본 원칙인 Azure Well-Architected Framework의 핵심 요소를 구현합니다. 자세한 내용은 Well-Architected Framework를 참조하세요.

Reliability

안정성은 애플리케이션이 고객에 대한 약정을 충족할 수 있도록 하는 데 도움이 됩니다. 자세한 내용은 안정성에 대한 디자인 검토 검사 목록을 참조하세요.

점프 상자

이 아키텍처는 표준 배포와 동일한 프로덕션 수준 CI/CD 파이프라인을 사용하며 점프 박스 VM은 하나만 사용합니다. 그러나 아키텍처에서 사용하는 각 가용성 영역에 대해 하나의 점프 상자를 사용할 수 있습니다. 점프 상자는 앱의 가용성에 영향을 주지 않으므로 이 아키텍처는 하나의 점프 상자만 사용합니다. 점프 상자는 배포 및 테스트를 지원합니다.

App Service 환경

가용성 영역에 App Service Environment를 배포하여 중요 비즈니스용 워크로드에 대한 복원력과 안정성을 제공할 수 있습니다. 이 구성을 영역 중복이라고도 합니다.

App Service 계획에서 영역 중복을 사용하도록 설정하면 플랫폼은 선택한 지역의 두 개 이상의 영역에 해당 인스턴스를 자동으로 배포합니다. 영역 중복 계획에는 두 개 이상의 인스턴스가 필요합니다.

  • App Service Environment를 만들 때 또는 환경의 수명 주기에서 언제든지 가용성 영역을 구성할 수 있습니다.

  • 해당 App Service Environment에서 만드는 모든 App Service 계획에는 영역 중복을 사용하도록 설정하려면 최소 두 개의 인스턴스가 필요합니다. 환경이 영역 중복인 경우 개별 App Service 계획에 대해 영역 중복을 선택적으로 사용하도록 설정하고 사용하지 않도록 설정할 수 있습니다. App Service 계획을 단일 인스턴스로 확장하려면 해당 계획에 대한 영역 중복을 사용하지 않도록 설정한 다음 규모 감축 작업을 진행합니다.

  • 지역 하위 집합만 가용성 영역을 지원합니다.

  • 하나의 가용성 영역이 실패하는 경우 예상 부하를 처리할 수 있는 충분한 인스턴스를 계획에서 프로비전합니다. 플랫폼은 최상의 영역 분산을 사용하므로 인스턴스 수가 영역 간에 균등하게 분산되지 않을 수 있습니다. 영역 중단은 크기 조정, 앱 만들기, 구성 및 게시를 비롯한 런타임이 아닌 작업에도 영향을 줄 수 있습니다.

자세한 내용은 App Service Environment의 신뢰성을 참조하십시오.

Resiliency

App Service Environment에서 실행되는 애플리케이션은 Application Gateway에 대한 백 엔드 풀 을 형성합니다. 애플리케이션에 대한 요청이 공용 인터넷에서 제공되면 게이트웨이는 App Service Environment에서 실행되는 애플리케이션에 요청을 전달합니다. 애플리케이션에서 상태 검사를 구현할 수 있으며 상태 프로브를 구현하여 캐시와 같은 종속 리소스의 상태를 확인할 수 있습니다. C# 애플리케이션에서 상태 검사를 추가하려면 다음과 유사한 코드를 사용합니다.

var uriBuilder = new UriBuilder(Configuration.GetValue<string>("ConnectionEndpoints:VotingDataAPIBaseUri"))
{
    Path = "/health"
};

services.AddHealthChecks()
    .AddUrlGroup(uriBuilder.Uri, timeout: TimeSpan.FromSeconds(15))
    .AddRedis(Configuration.GetValue<string>("ConnectionEndpoints:RedisConnectionEndpoint"));

대상이 상태 프로브에 실패하면 Application Gateway는 대상을 비정상으로 표시하고 요청 라우팅을 중지합니다. 백 엔드 풀의 모든 대상이 비정상이면 Application Gateway는 HTTP 502 응답을 반환합니다. 백 엔드 상태 보고서의 알 수 없는 상태는 컨트롤 플레인에서 대상의 상태를 확인할 수 없으며 Application Gateway가 트래픽 라우팅을 중지했다는 의미는 아닙니다. 상태 프로브는 장애를 감지하지만, 장애 조치를 위한 다른 애플리케이션이나 App Service Environment를 제공하지는 않습니다.

영역 중복화는 App Service 플랜 인스턴스를 여러 가용성 영역에 분산 배치하여 가용성 영역 장애에 대한 복원력을 향상시킵니다. 애플리케이션 결함 또는 사용할 수 없는 종속성과 같은 모든 인스턴스에 영향을 주는 지역 중단 또는 오류로부터 보호하지는 않습니다. 지역 중단으로부터 보호하기 위해 여러 지역에 워크로드를 배포하고 전역 부하 분산 서비스를 사용하여 트래픽을 정상 지역 배포로 라우팅합니다. 자세한 내용은 Azure App Service 재해 복구를 위한 다중 지역 아키텍처를 참조하세요.

Azure 관리형 Redis

가용성 영역에 둘 이상의 노드를 배포할 수 있도록 고가용성을 위해 Azure Managed Redis를 구성합니다. 영역 실패 시 Azure Managed Redis는 트래픽을 정상 노드로 자동으로 리디렉션합니다. 장애 조치(failover)로 인해 10~15초의 가동 중지 시간이 발생할 수 있으며 다른 영역으로 복제되지 않은 데이터가 손실될 수 있습니다. 애플리케이션은 일시적 오류를 다시 시도하고 Cache-Aside 패턴을 사용하여 캐시를 사용할 수 없을 때 기본 데이터 저장소로 대체해야 합니다. 자세한 내용은 Azure Managed Redis의 안정성을 참조하세요.

비용 최적화

비용 최적화는 불필요한 비용을 줄이고 운영 효율성을 개선하는 방법에 중점을 둡니다. 자세한 내용은 비용 최적화를 위한 디자인 검토 검사 목록을 참조하세요.

고가용성 아키텍처에 대한 비용 고려 사항은 표준 아키텍처와 유사합니다.

다음과 같은 차이점이 비용에 영향을 줄 수 있습니다.

  • 가용성 영역 지원에는 추가 요금이 부과되지 않습니다. 사용하는 인스턴스에 대해서만 요금을 지불합니다. 자세한 내용은 App Service Environment 가격 책정을 참조 하세요.

  • Azure Managed Redis는 고가용성이 활성화되면 여러 가용성 영역이 있는 지역에서 영역 중복 서비스가 됩니다. 영역 중복 캐시는 지역 내의 여러 가용성 영역에 배포된 노드에서 실행되어 더 높은 복원력과 가용성을 제공합니다. 자세한 내용은 Azure Managed Redis의 안정성을 참조하세요.

고가용성, 복원력 및 매우 안전한 시스템에 대한 절판에는 일부 Azure 서비스에 대한 비용 증가가 포함됩니다. 이 아키텍처에 대한 샘플 비용 추정치 를 검토하고 워크로드에 맞게 서비스 계층 및 사용량 가정을 조정합니다.

기여자

Microsoft는 이 문서를 유지 관리합니다. 다음 기여자는 이 문서를 작성했습니다.

주요 작성자:

LinkedIn 비공개 프로필을 보려면, LinkedIn에 로그인하세요.

다음 단계

이 아키텍처를 수정하려면 예상 최대 부하 용량에 따라 동일한 지역 내 또는 여러 지역에 걸쳐 애플리케이션의 수평 크기를 조정할 수 있습니다. 여러 지역에 애플리케이션을 복제하면 지진 또는 기타 자연 재해로 인한 오류와 같은 광범위한 지리적 데이터 센터 오류의 위험을 완화하는 데 도움이 될 수 있습니다.