규정 준수에 의해 엄격하게 제어 및 제한되는 세그먼트의 고객의 경우, 특히 기간 업무 애플리케이션에 대해 격리된 전용 환경을 갖는 것이 중요합니다. 보안이 가장 중요한 위치에 있는 동안 이러한 중요한 애플리케이션은 메모리 사용률이 높거나 초당 요청이 많은 시나리오에서 스케일링하고 수행할 수 있는 기능도 필요합니다. 이 솔루션은 기간 업무 애플리케이션을 호스트하는 방법에 대한 예제를 제공합니다. App Service Environment를 사용하여 보안과 성능을 동시에 해결할 수 있습니다. 이 솔루션을 배포할 때 허브 VNet의 리소스를 나타내는 Azure 랜딩 존에서 기존 리소스를 유연하게 사용할 수 있습니다. 또는 이 솔루션을 자체 포함된 워크로드로 배포할 수 있습니다.
참고 항목
이 문서에서는 Azure 랜딩 존의 App Service에 대한 클라우드 채택 프레임워크 지침에 부합하는 배포 가능한 아키텍처를 제공합니다.
아키텍처
이 이미지 전체는 구독 및 프라이빗 DNS 영역의 범위에 있습니다. 왼쪽 위 모서리에서 구독 아이콘과 Azure 프라이빗 DNS 영역 아이콘으로 표시됩니다. 이러한 아이콘 아래에는 두 블록이 나란히 있습니다. 둘 사이의 VNet 피어링을 사용하여 두 개의 가상 네트워크를 나타냅니다. 왼쪽의 블록은 허브 VNet을 나타내고 오른쪽의 블록은 스포크 VNet을 나타냅니다. 왼쪽 상자에는 세 개의 작은 상자가 있습니다. 각 상자는 다른 서브넷과 연결된 네트워크 보안 그룹을 나타냅니다. 왼쪽 위에서 시작하는 것은 Azure Bastion 서브넷 내의 Azure Bastion 인스턴스이고, 오른쪽 위는 jumpbox 서브넷에 있는 jumpbox VM입니다. 오른쪽 아래에는 CI/CD 서브넷에 있는 CI/CD 에이전트 서버가 포함된 허브 VNet의 세 번째와 마지막 상자가 있습니다. 스포크 VNet을 나타내는 오른쪽 상자에는 App Service Environment v3 인스턴스가 있는 App Service Environment 서브넷이라는 작은 상자 하나만 포함되어 있습니다. 작은 상자는 App Service Environment를 나타냅니다. App Service 아이콘이 해당 상자 안에 있습니다. 이미지의 아래쪽 가운데에는 프로세스의 일부로 배포된 공유 리소스도 있습니다. 왼쪽에서 오른쪽으로 시작하는 공유 리소스에는 Azure Key Vault, Azure Log Analytics 작업 영역, Azure 애플리케이션 Insights가 포함됩니다.
이 아키텍처의 Visio 파일을 다운로드합니다.
워크플로
이 아키텍처에는 작업(주황색), 배포(녹색), 사용자(자주색)의 세 가지 흐름에 설명선이 있습니다.
작업
- 운영자 또는 관리자는 CI/CD(연속 통합/지속적인 배포) 서버 또는 App Service Environment에 대한 Kudu 엔드포인트에서 관리 작업을 수행하려고 합니다. 먼저 Azure Bastion 호스트에 연결해야 합니다.
- Azure Bastion 호스트를 사용하면 운영자 또는 관리자가 RDP(원격 데스크 프로토콜)를 사용하여 jumpbox 서버에 액세스할 수 있습니다.
- jumpbox 서버에서 운영자 또는 관리자는 CI/CD 서버로 RDP를 수행하고 에이전트 업그레이드, OS 업그레이드 등과 같은 필수 작업을 수행할 수 있습니다. 운영자 또는 관리자는 jumpbox 서버에서 App Service Environment 인스턴스의 Kudu 엔드포인트로 연결하여 관리 작업을 수행하거나 고급 문제 해결을 수행할 수도 있습니다.
배포
- 솔루션 배포는 CI/CD 에이전트 서버를 통해 수행됩니다. 이 서버의 DevOps 에이전트는 새 배포가 실행될 때 Azure Pipelines와 연결됩니다.
- 그러면 VNet 피어링을 통해 App Service Environment에 연결하여 앱 서비스에 아티팩트가 배포됩니다.
사용자
- 사용자는 회사의 네트워크를 통해 배포된 App Service에 연결할 수 있습니다. 필요한 경우 Azure ExpressRoute 또는 VPN을 사용할 수 있으며, 해당하는 모든 Azure VNet 피어링을 통해 사용할 수 있습니다.
구성 요소
해당 솔루션에서는 다음과 같은 Azure 서비스를 사용합니다.
Azure App Service Environment v3(ASEv3)는 Azure App Service의 기능이며 대규모, 네트워크 격리, 보안 및/또는 높은 메모리 사용률이 필요한 고객을 위한 단일 테넌트 서비스입니다. 앱은 App Service Environment v3에서 생성한 App Service 요금제에서 호스트되며 격리된 v2 서비스 플랜 내에서 다른 계층을 사용하는 옵션이 있습니다. 이전 버전의 App Service Environment에 비해 네트워크 종속성, 스케일링 시간, 인지세 제거를 포함하지만 이에 국한되지 않는 다양한 개선 사항이 적용되었습니다. 이 솔루션은 내부 액세스를 위해 구성된 App Service Environment v3를 사용합니다.
Azure Private DNS를 사용하면 사용자 지정 DNS 솔루션을 구현할 필요 없이 가상 네트워크 내에서 도메인 이름을 관리하고 확인할 수 있습니다. 가상 네트워크 링크를 통해 Azure프라이빗 DNS 영역을 하나 이상의 가상 네트워크에 정렬할 수 있습니다. 이 참조 아키텍처에서 사용하는 App Service Environment v3의 내부 특성으로 인해 App Service Environment에 호스트되는 애플리케이션의 도메인 이름을 확인하려면 프라이빗 DNS 영역이 필요합니다.
Azure Application Insights는 개발자가 변칙을 감지하고, 문제를 진단하고, 사용 패턴을 이해할 수 있는 Azure Monitor의 기능입니다. Application Insights는 라이브 웹앱에 대한 확장 가능한 애플리케이션 성능 관리 및 모니터링이 특징입니다. .NET, Node.js, Java, Python을 비롯한 다양한 플랫폼이 지원됩니다. Azure, 온-프레미스, 하이브리드 환경 또는 기타 퍼블릭 클라우드에서 호스트되는 앱을 지원합니다. Application Insights는 배포된 애플리케이션의 동작을 모니터링하기 위해 이 참조 아키텍처의 일부로 포함됩니다.
Azure Log Analytics는 필요에 따라 Azure Portal 내에서 Azure Monitor 로그의 데이터로 로그 쿼리를 편집하고 실행할 수 있는 Azure Monitor의 기능입니다. 개발자는 레코드 집합에 대한 간단한 쿼리를 실행하거나 Log Analytics를 사용하여 고급 분석을 수행할 수 있습니다. 그런 다음 결과를 시각화할 수 있습니다. Log Analytics는 분석 및 보고를 위해 모든 모니터링 로그를 집계하도록 이 참조 아키텍처의 일부로 구성됩니다.
Azure Virtual Machines는 다양한 워크로드를 호스트하는 데 사용할 수 있는 확장 가능한 주문형 컴퓨팅 리소스입니다. 이 참조 아키텍처에서 가상 머신은 관리 jumpbox 서버뿐만 아니라 DevOps 에이전트 또는 GitHub 실행기의 호스트를 제공하는 데 사용됩니다.
Azure Key Vault는 API 키 및 암호에서 인증서 및 암호화 키에 이르기까지 비밀을 안전하게 저장하고 액세스하는 클라우드 서비스입니다. Azure 키 자격 증명 모음은 이 아키텍처 인프라의 일부로 배포되어 향후 코드 배포를 위한 비밀 관리를 용이하게 합니다.
Azure Bastion은 개발자의 가상 네트워크 내에서 프로비저닝되는 PaaS(Platform as a Service)입니다. Azure Portal에서 TLS를 통해 개발자의 가상 머신에 대한 안전한 RDP/SSH 연결을 제공합니다. Azure Bastion을 사용하면 가상 머신에서 RDP/SSH를 통해 연결하는 데 공용 IP 주소가 더 이상 필요하지 않습니다. 이 참조 아키텍처는 Azure Bastion을 사용하여 DevOps 에이전트 또는 GitHub 실행기 서버 또는 관리 Jumpbox 서버에 액세스합니다.
대안
일반적인 악용 및 취약성으로부터 웹 애플리케이션을 보호하기 위한 WAF(Web Application Firewall) 기능을 제공하려면 App Service 인스턴스 전에 Azure Application Gateway를 추가하는 것이 좋습니다.
자체 호스팅 GitHub 실행기는 Azure DevOps 자체 호스팅 에이전트 대신 사용할 수 있습니다.
고려 사항
이러한 고려 사항은 워크로드의 품질을 향상시키는 데 사용할 수 있는 일단의 지침 원칙인 Azure Well-Architected Framework의 핵심 요소를 구현합니다. 자세한 내용은 Microsoft Azure Well-Architected Framework를 참조하세요.
안정성
안정성은 애플리케이션이 고객에 대한 약속을 충족할 수 있도록 합니다. 자세한 내용은 안정성 핵심 요소 개요를 참조하세요.
- 이 참조 구현에서 영역 중복에 대한 요구 사항과 솔루션의 다른 Azure 서비스의 영역 중복 기능을 고려합니다. App Service Environment v3는 대상 지역의 세 영역 모두에 인스턴스를 분산하여 영역 중복성을 지원합니다. 이 구성은 App Service Environment를 만들 때만 설정할 수 있으며, 일부 지역에서는 사용할 수 없습니다. 자세한 내용은 App Service Environment에 대한 가용성 영역 지원을 참조하세요. 이 참조 구현은 영역 중복성을 구현하지만 이 리포지토리를 복제하고
zoneRedundant
속성을false
로 설정하여 변경할 수 있습니다.
보안
우수한 보안은 중요한 데이터 및 시스템에 대한 고의적인 공격과 악용을 방어합니다. 자세한 내용은 보안 요소의 개요를 참조하세요.
- 유효한 위치에서만 앱 서비스에 연결할 수 있도록 적절한 액세스 제한을 사용합니다. 예를 들어 앱 서비스가 API를 호스트하고 APIM이 앞에 있는 경우 앱 서비스가 APIM에서만 액세스할 수 있도록 액세스 제한을 설정할 수 있습니다.
- 이 참조 구현은 App Service Environment를 가상 네트워크(내부 App Service Environment라고 함)에 배포하므로 App Service Environment에 배포된 모든 애플리케이션은 기본적으로 가상 네트워크 범위에서 네트워크 격리됩니다.
- Azure Key Vault에 애플리케이션 비밀(데이터베이스 자격 증명, API 토큰, 프라이빗 키)을 저장합니다. 관리 ID를 사용하여 안전하게 액세스하도록 App Service 앱을 구성합니다. Azure Key Vault 및 Azure App Configuration을 사용할 시기를 결정합니다.
비용 최적화
비용 최적화는 불필요한 비용을 줄이고 운영 효율성을 높이는 방법을 찾는 것입니다. 자세한 내용은 비용 최적화 핵심 요소 개요를 참조하세요.
- App Service Environment v3 인스턴스에 대한 인지세는 없지만 App Service Environment v3 인스턴스 내에서 앱 서비스 플랜이 구성되지 않은 경우 요금이 부과됩니다. 이 요금은 App Service Environment v3 인스턴스가 배포된 지역에 대해 Windows I1v2 인스턴스의 한 인스턴스와 동일한 요금으로 부과됩니다.
- 영역 중복으로 구성된 경우 이 구성에 배포된 기본 인프라를 고려하여 요금 부과 모델이 조정됩니다. ASEv3 가격 책정에 따라 추가 인스턴스에 대한 책임이 있을 수 있습니다.
- App Service Environment v3 App Service 요금제(격리된 V2 App Service 요금제라고 함)의 경우 1년 또는 3년 계약으로 컴퓨팅에 Azure Reservations 및 Azure 저축 계획을 사용하고 종량제 가격에서 상당한 절감액을 받습니다. 자세한 내용은 격리된 v2 인스턴스에 예약 할인이 적용되는 방식을 참조하세요.
운영 우수성
운영 우수성은 애플리케이션을 배포하고 프로덕션에서 계속 실행하는 운영 프로세스를 다룹니다. 자세한 내용은 운영 우수성 핵심 요소 개요를 참조하세요.
- Application Insights 또는 다른 애플리케이션 성능 관리 솔루션을 사용하여 다양한 환경에서 애플리케이션이 어떻게 작동하는지 모니터링하고 알아봅니다.
- Application Insights를 사용하도록 설정하는 방법에는 두 가지가 있습니다. 다른 환경의 경우 원격 분석 데이터를 다른 Application Insights 인스턴스로 수집합니다.
- 애플리케이션에 여러 구성 요소가 서로 다른 서비스로 구분된 경우 해당 동작을 함께 검사하는 것이 좋습니다. 원격 분석 데이터를 동일한 Application Insights 인스턴스에 수집하지만 다른 클라우드 역할 이름으로 레이블을 지정합니다.
- Application Insights 데이터를 Azure Log Analytics 작업 영역으로 내보냅니다. 조직에 단일 작업 영역을 사용하는 것이 좋습니다.
- 애플리케이션 및 기능 디자인에 운영 대시보드를 포함시켜 프로덕션에서 솔루션을 지원할 수 있도록 합니다.
- 엔드포인트에 대한 상태 검사를 구현한 다음, 상태 프로브, 종속성 검사, 가용성 테스트에 사용합니다.
- 잘 정의된 규칙과 접두사 및 접미사를 사용하여 배포된 모든 리소스를 고유하게 식별하는 것이 좋습니다. 이러한 명명 규칙은 서로의 옆에 솔루션을 배포할 때 충돌을 방지하고 전반적인 팀 민첩성 및 처리량을 개선합니다.
- 네트워크 구성에 따라 App Services는 공용 인터넷에서 연결할 수 없으며 퍼블릭 호스트된 에이전트의 사용은 배포에 작동하지 않습니다. 해당 시나리오에서 자체 호스팅 에이전트를 사용합니다.
시나리오 배포
이 구현을 시작하고 세부 사항을 더 잘 이해하려면 참조 구현 배포에 대한 사용자 가이드에서 참조 구현 리소스를 검토합니다.
- 이 리포지토리를 복제하고 요구 사항 및 조직의 특정 랜딩 존 지침에 맞게 참조 구현 리소스를 수정하는 것이 좋습니다.
- 배포하기 전에 솔루션을 배포하는 데 사용되는 서비스 주체에 위에 나열된 리소스 종류를 생성하는 데 필요한 권한이 있는지 확인합니다.
- 참조 구현을 배포하는 데 사용할 CI/CD 서비스를 고려합니다. 이 참조 구현은 내부 App Service Environment이므로 배포 파이프라인을 실행하려면 자체 호스팅 에이전트가 필요합니다. DevOps 에이전트 또는 GitHub 실행기를 사용할 수 있습니다. 필요한 특정 구성 값에 대한 사용자 가이드를 참조하세요.
- 이 참조 구현을 배포하려는 지역을 고려합니다. 선택한 지역이 배포에 사용하도록 설정되어 있는지 확인하려면 ASEv3 지역 목록을 참조하세요.
참가자
Microsoft에서 이 문서를 유지 관리합니다. 원래 다음 기여자가 작성했습니다.
주요 작성자:
- Pete Messina | 선임 클라우드 솔루션 설계자
- Nabeel Prior | 선임 클라우드 솔루션 설계자
비공개 LinkedIn 프로필을 보려면 LinkedIn에 로그인합니다.
다음 단계
다음 주요 서비스에 대해 자세히 알아보세요.
- Azure ASEv3(App Service Environment v3)
- Azure Private DNS Zones
- Azure Application Insights
- Azure Log Analytics
- Azure Virtual Machines 개요
- Azure Key Vault 개념
- Azure Bastion