다음을 통해 공유


Azure Virtual Desktop에 대한 플랫폼 자동화 및 DevOps 고려 사항

Azure Virtual Desktop은 데스크톱 가상화 환경에 대한 Microsoft 컨트롤 플레인을 제공하는 관리되는 서비스입니다.

이 문서에서는 Azure Virtual Desktop 환경을 실행하는 데 필요한 운영 작업에 중점을 둡니다. 이 문서의 각 권장 사항은 개별적으로 적용할 수 있습니다. 자동화에 대한 모든 권장 사항을 구현할 필요는 없습니다.

디자인 고려 사항

Azure Virtual Desktop 환경을 계획하고 디자인하는 동안 다음 고려 사항을 검토합니다.

DevOps와 통합

자동화가 DevOps와의 통합을 의미할 필요는 없지만 이렇게 하면 많은 이점이 있습니다. 골든 이미지에 대한 빌드 프로세스를 자동화하는 것은 여러 가지 이유로 투자할 가치가 있습니다.

  • DevOps 파이프라인을 사용하는 경우 자동화 흐름을 더 잘 관리할 수 있습니다.
  • DevOps 파이프라인에서 배포 보고서 및 경고를 받을 수 있습니다.
  • 테스트 프레임워크와 통합하고 자동화 프로세스의 단계에 대한 승인 게이트를 만들도록 파이프라인을 구성할 수 있습니다.
  • 미리 정의된 여러 이벤트에서 새 갤러리 이미지, 애플리케이션의 릴리스 또는 설정된 일정 사용 같은 파이프라인을 시작할 수 있습니다.
  • 호스트 풀 만들기를 자동화하면 새 위치를 사용할 수 있게 되었을 때 호스트 풀 메타데이터를 새 지리적 위치로 쉽게 이동할 수 있습니다.

코드 제공 인프라(Infrastructure as Code)

DevOps 사례를 수용하는 방향으로 이동하면서 Azure 리소스를 배포할 도구를 선택해야 합니다. IaC 도구 범주에는 두 가지가 있습니다. 기본 설정 옵션은 선언적 IaC 도구입니다.

Azure는 ARM 템플릿Azure Bicep을 사용하여 네이티브 옵션을 제공합니다.

HashiCorp의 Terraform과 같은 타사 IaC 도구를 찾을 수도 있습니다.

풀링된 구성과 개인 구성

조직이 환경을 확장함에 따라 대부분의 워크로드는 개인 구성이 아닌 풀링된 구성에 합니다.

개인 구성은 풀링된 구성보다 실행 비용이 더 많이 드는 경우가 많습니다. 일반적으로 상승된 권한이 필요한 개발자와 같은 특정 워크로드 사용자에게 적합합니다. 개인 모드에서 호스트 풀을 실행하는 경우 물리적 데스크톱을 유지 관리하는 것처럼 머신을 유지 관리하여 환경에 필요한 도구의 양을 줄입니다.

풀링된 구성은 데스크톱 가상화에 가장 많이 사용되는 구성이므로 이 문서의 핵심입니다. 풀링된 환경은 기존 환경과 다르게 업데이트해야 합니다. VM(가상 머신)은 조직에 적합한 주기로(일반적으로 1~3개월마다) 골드 이미지에서 업데이트합니다. 조직이 고도로 자동화된 경우 필요하면 주기를 매주 또는 야간으로도 늘릴 수 있습니다.

이미지 만들기

Azure Virtual Desktop 환경을 스케일 업할 때 골드 이미지에서 호스트 풀을 만듭니다. 이 풀은 자동화된 프로세스를 통해 만드는 것이 이상적입니다.

빌드 검사 목록을 사용하여 스케일 업할 수도 있습니다. 대규모 환경이 있는 경우 검사 목록 프로세스는 초기 개발/테스트 설정의 일부여야 합니다. 골드 이미지 생성을 자동화할수록 빌드 및 환경 안정성의 정확도 면에서 안전성을 확보할 수 있습니다.

기존 이미지를 사용하여 새 애플리케이션 및 구성 변경 내용으로 업데이트한 다음, “새” 골드 이미지로 사용하도록 캡처하는 VM을 만들지 않는 것이 좋습니다. 이 시나리오를 유지 관리하려면 상당한 위험이 수반되며 데스크톱 가상화 환경이 정적이고 취약해지는 주요 요인입니다.

이 문서의 뒷부분에 설명된 Packer 프로세스를 포함하여 골드 이미지를 만드는 데 사용할 수 있는 많은 자동화 도구가 있습니다. 조직에 가장 적합한 도구 집합을 사용합니다. 선택한 도구에 관계없이 Azure Virtual Desktop 환경의 상태를 보다 쉽게 유지할 수 있도록 골드 이미지 만들기를 최대한 자동화합니다.

애플리케이션 설치

애플리케이션은 이미지에 설치된 방식 또는 사용자별로 동적으로 제공되는 방식 중 하나로 사용자에게 제공됩니다.

이미지에 설치된 애플리케이션은 사용자에게 범용이어야 하며 자동화된 이미지 만들기 프로세스의 일부여야 합니다. 이미지 설치 애플리케이션에는 보안 제품 및 Microsoft 365 제품군이 포함될 수 있습니다.

사용자별로 동적으로 제공되는 애플리케이션에는 보다 유연한 접근 방식이 필요한 다른 모든 항목이 포함되어야 합니다. 동적으로 제공되는 애플리케이션에는 특정 그룹으로 제한된 애플리케이션과 다른 애플리케이션과 호환되지 않는 애플리케이션이 포함될 수 있습니다.

언어 배포

Azure Virtual Desktop 환경이 확장하기 시작하면 사용자를 위해 이미지를 네이티브 언어로 지역화해야 할 수 있습니다. 원하는 경우 로컬 언어에서 시작하거나 빌드 시 이미지에 언어를 추가할 수 있습니다. 기본 이미지를 선택할 때 이 요구 사항을 고려하세요. 미리 최적화된 Windows 10 갤러리 이미지(예: Microsoft 365를 포함하거나 포함하지 않는 이미지)는 미국 영어(en-US)로만 제공됩니다.

참고 항목

Windows 10 Enterprise 다중 세션을 사용하는 경우 다른 언어로 빌드할 수 없습니다. 이 경우 제공된 갤러리 이미지를 조정해야 합니다. 기존 en-US 갤러리 이미지를 조정하려면 다른 애플리케이션을 설치하기 전에 추가 언어를 설치합니다.

배포 위치

Azure Virtual Desktop에서는 기존 데스크톱 환경보다 호스트 풀의 지리적 배치를 더 자유롭게 조정할 수 있습니다. 모든 Azure 위치에서 Azure Virtual Desktop을 지원하기 때문입니다. 사용자와 동일한 각 위치에서 골드 이미지를 제공하여 WAN(광역 네트워크)의 이미지에서 VM을 만들지 않도록 합니다.

호스트 풀 골드 이미지 업데이트

특정 호스트 풀의 VM을 기반으로 하는 골드 이미지를 업데이트하는 방법에는 두 가지가 있습니다.

방법 1:

  • 두 번째 호스트 풀을 배포한 다음, 준비가 되면 사용자를 새 호스트 풀로 넘깁니다.
  • 롤백이 필요한 경우 이전 호스트 풀을 사용할 수 있습니다.
  • 조직에서 새 호스트 풀이 제대로 작동하는 것에 만족하면 이전 호스트 풀을 제거할 수 있습니다.

방법 2:

  • 기존 VM을 호스트 풀의 드레이닝 모드로 설정합니다.
  • 업데이트된 골드 이미지의 새 VM을 동일한 호스트 풀에 배포합니다.
  • 단일 호스트 풀의 VM 수를 두 배로 늘릴 때 리소스 제약 조건 또는 API 제한 한도에 도달하지 않도록 주의하세요.

디자인 권장 사항

조직의 Azure Virtual Desktop 환경을 디자인할 때 다음 권장 사항을 검토합니다.

소스 코드 관리

소스 코드를 관리하고 간단한 분기 전략을 유지하는 경우 Git을 사용하는 것이 좋습니다. 사용자 환경에 Git을 사용하는 경우 다음을 수행합니다.

  • 회사 정책에서 리포지토리가 공개되어야 한다고 지정하지 않는 한 Git 리포지토리 및 Azure DevOps 프로젝트는 비공개로 유지합니다.
  • 프로젝트 정보 입력을 시작할 수 있도록 추가 정보 파일로 리포지토리를 초기화합니다.
  • 다른 팀원이 액세스할 수 있도록 프로젝트 권한을 수정합니다.
  • 기본 작업 항목 프로세스를 채택하여 파이프라인을 개발하고 워크로드를 간소화합니다.
  • 최소한 두 개의 리포지토리를 유지 관리해야 합니다. 하나는 골드 이미지 빌드를 관리하기 위한 리포지토리이고 다른 하나는 Azure Virtual Desktop 배포를 관리하기 위한 리포지토리입니다.

파이프라인

파이프라인 배포 시스템은 선택한 소스 코드 관리 시스템에 따라 결정됩니다.

조직이 Azure DevOps에서 표준화된 경우 Azure Pipelines를 사용합니다. 조직이 GitHub에서 표준화된 경우 GitHub Actions를 사용합니다. 두 옵션 모두 네트워크 내에서 자체 호스팅 에이전트를 배포하는 기능을 제공하며, 다음과 같은 몇 가지 이점이 있습니다.

  • 더 긴 빌드 시간 허용
  • 네트워크 내에서 리소스에 액세스하는 기능

배포 파이프라인을 제어하여 유효성 검사 호스트 풀에 배포하도록 자동으로 트리거할 수 있지만 명시적 승인 없이 프로덕션 호스트 풀에 자동으로 푸시되지는 않습니다.

변수 및 Azure Key Vault

Azure Pipelines에서 작업할 때는 변수 그룹을 사용합니다.

  • 변수 그룹을 사용하면 파이프라인에서 비밀 및 파일 위치와 같은 반복 가능한 매개 변수를 사용할 수 있습니다.
  • 변수 그룹 내의 변수는 키/값 쌍으로 저장할 수 있지만, 권장되는 방법은 변수 그룹을 Azure Key Vault에 연결하여 배포 파이프라인에서 사용할 비밀을 끌어오는 것입니다.

Azure Virtual Desktop 이미지 만들기

AIB(Azure Image Builder) 서비스를 사용하여 골드 이미지에 대한 빌드, 업데이트, sysprep, 배포 프로세스를 자동화합니다. 이 서비스는 각 빌드에 대해 Azure Marketplace에서 지원되는 기본 이미지를 사용하여 최신 업데이트가 있는지 확인할 수 있습니다.

참고 항목

Azure Image Builder는 현재 일부 지역에서 사용할 수 있지만 이러한 지역 외부에 이미지를 배포할 수 있습니다.

골드 이미지 빌드 프로세스의 일부로 설치해야 하는 모든 애플리케이션을 고려하고 스크립트를 통해 설치할 수 있는지 확인합니다. PowerShell에서 애플리케이션 설치 명령을 스크립팅하고 Git 리포지토리에 커밋했는지 확인합니다. 공용 인터넷을 통해 애플리케이션 설치 관리자를 다운로드할 수 없는 경우 애플리케이션을 Azure Blob Storage에 배치하는 것이 좋습니다. 애플리케이션 설치 프로세스에 비밀이 필요한 경우 Azure Key Vault를 배치하는 것이 좋습니다.

Azure Image Builder를 시작하려면 Azure VM Image Builder 및 PowerShell을 사용하여 Azure Virtual Desktop 이미지 만들기를 참조하세요.

CI/CD 파이프라인을 사용하여 Azure Image Builder를 호출하려면 Azure Pipelines의 경우 Azure Image Builder Service DevOps 작업 또는 GitHub Actions의 경우 Azure Virtual Machine 이미지 빌드 작업을 사용합니다.

HashiCorp Packer는 오픈 소스 대안입니다. Azure Compute Gallery에 배포하는 기능을 포함하여 Azure Image Builder(HashiCorp Packer를 기반으로 빌드됨)와 동일한 기능을 제공합니다.

Packer에 대한 자세한 내용은 Packer 웹 사이트를 참조하세요.

Packer 방법에는 다음과 같은 필수 조건이 있습니다.

  • Packer 도구의 전체 제품군을 사용하려면 Azure DevOps 라이선스가 필요합니다.
  • Microsoft Entra ID에서 사용자에게 Global 관리istrator 역할을 할당해야 합니다.
  • 서비스 주체에게 구독에 대한 기여자 액세스 권한을 제공해야 합니다.
  • 비밀을 저장할 Azure Key Vault(액세스 정책에서 서비스 주체에 비밀 관리 권한 부여)가 있어야 합니다.

배포 파이프라인에서 Packer로 작업하는 경우:

  • 배포 파이프라인에서 사용할 빌드 에이전트에 Packer 도구를 설치합니다.
  • 파이프라인에서 유효성 검사 단계를 만들어 빌드가 작동하는지 확인합니다.
  • 유효성 검사 후 유효성 검사 단계를 복제하고 배포 모드를 증분으로 설정합니다.

Packer 파일 스토리지에 대한 기타 고려 사항:

  • Azure Pipelines가 액세스할 수 있도록 Packer 파일 및 프로비전을 중앙 위치에 저장합니다. 이러한 파일을 안전하게 저장하려면 Azure 파일 공유를 사용하는 것이 좋습니다.
  • Key Vault에 Azure Files에 대한 액세스 자격 증명을 저장합니다. 파이프라인 변수를 사용하여 빌드 시 Key Vault에서 액세스 자격 증명을 끌어올 수 있습니다.
  • 또한 Azure DevOps의 변수 그룹에 연결된 키 자격 증명 모음에 Packer 파일 이름 및 계정 키를 저장합니다. 파이프라인에서 이러한 자격 증명에 액세스하여 이미지를 만드는 데 사용되는 VM에 Packer 파일을 다운로드합니다.
  • UNC 경로를 Azure DevOps 변수 그룹에 변수로 저장합니다.

Azure Virtual Desktop 이미지 저장

Azure Compute Gallery 서비스는 골드 이미지를 중심으로 구조 및 조직을 빌드하는 가장 간단한 방법입니다. 이 콘솔은 다음과 같은 기능을 제공합니다.

  • 다양한 Azure 지역에 이미지를 전역 복제합니다.
    • Azure VM(Virtual Desktop 세션 호스트)이 배포하는 지역에 이미지를 배포했는지 확인합니다.
  • 보다 쉽게 관리할 수 있는 이미지 버전 관리 및 그룹화 버전 관리 및 그룹화는 Azure Virtual Desktop 호스트 풀을 이전 이미지 버전으로 롤백하는 데 유용합니다.
  • 가용성 영역을 지원하는 지역의 ZRS(영역 중복 스토리지) 계정이 포함된 고가용성 이미지. ZRS는 영역 장애 발생 시 보다 나은 복원력을 제공합니다.
  • RBAC(역할 기반 액세스 제어)를 통해 구독 간 및 Microsoft Entra 테넌트 간에 Azure Virtual Desktop 이미지 공유
  • 각 지역의 이미지 복제본을 사용하여 배포 크기 조정

자세한 내용은 Azure Compute Gallery 서비스 개요를 참조하세요.

Azure Virtual Desktop 이미지에 애플리케이션 설치

  • 골드 이미지에 설치된 범용 애플리케이션의 경우 이 문서의 앞부분에서 설명한 Packer 방법을 사용합니다.
  • App-V는 현재 Microsoft에서 사용자 단위로 애플리케이션을 스트리밍하기 위해 지원되는 방법입니다.
  • FSLogix 애플리케이션 마스킹을 사용하여 해당 애플리케이션이 App-V에서 제대로 작동하지 않는 경우 애플리케이션 또는 플러그 인을 숨기거나 표시합니다.
  • 가능한 경우 MSIX 앱 연결을 사용하여 사용자에게 애플리케이션을 동적으로 제공하고 골드 이미지의 전체 크기를 줄입니다. CI/CD 파이프라인을 사용하여 애플리케이션을 MSIX 형식으로 패키징하는 프로세스를 자동화할 수도 있습니다. 자세한 내용은 개요를 참조하세요.

Azure Virtual Desktop 이미지에서 언어 배포

Microsoft에는 언어 팩을 수동으로 또는 자동으로 설치하는 프로세스가 있습니다. 관리 오버헤드를 최대한 적게 유지하고 언어 설치 프로세스를 자동화하는 것이 좋습니다.

이 프로세스에는 이미지로 변환될 VM에 PowerShell 스크립트를 다운로드하는 작업이 포함됩니다. Microsoft 설명서에서 자동화 스크립트 예제를 찾을 수 있습니다. Packer 파이프라인에 대한 권장 사항을 따르는 경우 이 프로세스를 추가 빌드 작업으로 포함할 수 있습니다.

Windows 10 Enterprise 다중 세션에서 언어 팩을 설치하는 방법에 대한 자세한 내용은 Azure Virtual Desktop의 Windows 10 VM에 언어 팩 설치를 참조하세요.

Azure Virtual Desktop 리소스의 배포 및 사용자 지정에 IaC(Infrastructure as Code) 접근 방식을 사용합니다. 이는 배포에서 일관성을 보장하기 위해 가능할 때마다 사용해야 합니다. ARM 템플릿을 사용하여 CI/CD 파이프라인 작업의 일부로 Azure Virtual Desktop 리소스를 배포할 수 있습니다. Azure Portal, Azure PowerShell 또는 Azure CLI를 사용할 때도 이를 사용할 수 있습니다.

다음은 권장되는 호스트 풀 업데이트 전략입니다.

  • Azure Compute Gallery에 골드 이미지를 빌드하고 배포하도록 CI/CD 파이프라인을 설정합니다.
  • CI/CD 파이프라인을 사용하여 유효성 검사 호스트 풀을 지정하고 새 세션 호스트를 유효성 검사 호스트 풀에 배포합니다.
  • 유효성 검사 호스트 풀을 사용하여 자동화를 테스트합니다.
  • 빌드 번호 또는 이미지 버전으로 세션 호스트에 태그를 지정하여 실행 중인 이미지 버전을 식별합니다.
  • 배포하기 전에 유효성을 검사(또는 확인)하여 구독 내에 충분한 컴퓨팅 할당량이 있는지 확인합니다.
  • 유효성 검사 풀에서 테스트가 성공하면 기존 세션 호스트를 드레이닝 모드로 전환합니다. 태그가 지정된 VM은 쉽게 식별할 수 있습니다.
  • 새 세션 호스트를 배포하고 사용자가 연결할 수 있도록 허용합니다.
  • 프로덕션에서 테스트가 성공하면 이전 세션 호스트의 할당을 취소하여 더 이상 컴퓨팅 요금이 발생하지 않고 결국 삭제하여 관리 디스크 요금이 더 이상 발생하지 않도록 합니다.
  • 삭제된 세션 호스트는 Azure에서만 제거됩니다. 컴퓨터 개체는 AD에 유지되므로 이러한 컴퓨터 개체는 수동으로 또는 스크립트를 통해 삭제해야 합니다.

위의 예제에서는 Azure DevOps를 사용하는 이미지 자동화의 한 가지 방법과 CI/CD(연속 통합 및 지속적인 업데이트) 파이프라인을 보여 줍니다. 이는 클라우드 네이티브 접근 방식이며 가동 중지 시간 없이 새 세션 호스트의 중단이 적은 롤아웃을 제공합니다. 이전 이미지를 단계적으로 제거하고 새 이미지를 온라인으로 가져올 때 가상 머신 수가 급증하는 것을 고려해야 합니다.

위에서 설명한 것처럼 Azure Compute Gallery는 이미지를 기반으로 구조와 조직을 빌드하는 데 도움이 되는 서비스입니다. 이러한 이미지는 Azure Virtual Desktop 세션 호스트의 IaC 배포에서 참조할 수 있습니다. 이 서비스는 이미지의 버전 관리, 그룹화 및 복제를 허용합니다.

ARM 템플릿 또는 Terraform을 사용하여 세션 호스트를 배포하는 경우 갤러리에서 만든 이미지의 리소스 ID를 VM 사용자 지정 이미지 원본 ID로 사용하는 것이 좋습니다. 사용 중인 이미지는 Azure Compute Gallery 서비스를 통해 Azure Virtual Desktop 호스트 풀을 배포하는 Azure 지역으로 복제해야 합니다.

다음 단계

엔터프라이즈 규모 시나리오에 랜딩 존 가속기를 사용하여 Azure Virtual Desktop을 배포하는 방법을 알아봅니다.