온-프레미스 애플리케이션을 App Service 웹앱 및 SQL 관리형 인스턴스로 리팩터링

이 문서에서는 가상의 회사 Contoso가 Azure로 마이그레이션하는 과정에서 VMware VM(가상 머신)에서 실행되는 2계층 Windows .NET 애플리케이션을 리팩터링하는 방법을 보여 줍니다. Contoso 팀은 애플리케이션 프런트 엔드 VM을 Azure App Service 웹앱으로 마이그레이션합니다. 이 문서에서는 Contoso가 애플리케이션 데이터베이스를 Azure SQL Managed Instance로 마이그레이션하는 방법도 보여 줍니다.

이 예제에서 사용되는 SmartHotel360 애플리케이션은 오픈 소스 소프트웨어로 제공됩니다. 테스트 목적으로만 사용하려는 경우 GitHub 다운로드할 수 있습니다.

비즈니스 영향 요소

Contoso IT 리더십 팀은 비즈니스 파트너와 긴밀히 협력하여 이 마이그레이션을 통해 달성하고자 하는 것을 이해했습니다.

  • 비즈니스 성장 해결. Contoso는 성장하고 있으며 회사의 온-프레미스 시스템과 인프라에 대한 압박이 있습니다.
  • 효율성 증대. Contoso는 불필요한 절차를 제거하고 개발자와 사용자를 위한 프로세스를 간소화해야 합니다. 이 회사는 IT를 빠른 상태로 유지하고 시간이나 비용을 낭비하지 않도록 하여 고객 요구 사항을 더 빠르게 제공해야 합니다.
  • 민첩성 향상. Contoso IT는 비즈니스 요구 사항에 대해 더 빠르게 대응해야 합니다. 세계 경제에서 성공하려면 회사는 마켓플레이스의 변화보다 더 빠르게 대응할 수 있어야 합니다. 반응 시간이 방해가 되거나 비즈니스 방해가 되어서는 안 됩니다.
  • 크기 조정. 비즈니스가 성장함에 따라 Contoso IT는 동일한 속도로 성장할 수 있는 시스템을 제공해야 합니다.
  • 비용을 절감합니다. Contoso는 라이선스 비용을 최소화하려고 합니다.

마이그레이션 목표

최상의 마이그레이션 방법을 결정하기 위해 Contoso 클라우드 팀은 다음 목표를 만들었습니다.

요구 사항 도메인 세부 정보
애플리케이션 Azure의 애플리케이션은 현재 온-프레미스만큼 중요합니다.

애플리케이션에는 현재 VMware에 있는 것과 동일한 성능 기능이 있어야 합니다.

팀은 애플리케이션에 투자하고 싶지 않습니다. 지금은 관리자가 애플리케이션을 클라우드로 안전하게 이동합니다.

팀은 애플리케이션이 현재 실행되는 Windows Server 2008 R2 지원을 중지하려고 합니다.

또한 팀은 SQL Server 2008 R2에서 최신 PaaS(Platform as a Service) 데이터베이스로 전환하여 관리 필요성을 최소화하려고 합니다.

Contoso는 가능한 경우 SQL Server 라이선스 및 Software Assurance에 대한 투자를 활용하려고 합니다.

Contoso는 웹 계층에서 단일 실패 지점을 완화하려고 합니다.

애플리케이션은 ASP.NET 애플리케이션과 단일 VM에서 실행되는 WCF(Windows Communication Foundation) 서비스로 구성됩니다. Contoso는 App Service 사용하여 두 웹앱에 이러한 구성 요소를 분산하려고 합니다.
Azure Contoso는 애플리케이션을 Azure로 이동하려고 하지만 VM에서 실행하려는 것은 아닙니다. Contoso는 웹 및 데이터 계층에 Azure PaaS 서비스를 사용하려고 합니다.
DevOps Contoso는 빌드 및 릴리스 파이프라인에 Azure DevOps를 사용하는 DevOps 모델로 이동하려고 합니다.

솔루션 디자인

Contoso는 목표와 요구 사항을 결정한 후 배포 솔루션을 디자인하고 검토합니다. 또한 팀은 마이그레이션에 사용할 Azure 서비스를 포함하여 마이그레이션 프로세스를 식별합니다.

현재 애플리케이션

  • SmartHotel360 온-프레미스 애플리케이션은 WEBVM 및 SQLVM이라는 두 VM에 계층화됩니다.
  • VM은 VMware ESXi 6.5 호스트 contosohost1.contoso.com 있습니다.
  • VMware 환경은 VM에서 실행되는 vCenter Server 6.5(vcenter.contoso.com)에서 관리됩니다.
  • Contoso에는 온-프레미스 도메인 컨트롤러(contosodc1)가 있는 온-프레미스 데이터 센터(contoso-datacenter)가 있습니다.
  • 마이그레이션이 완료되면 Contoso 데이터 센터의 온-프레미스 VM은 서비스 해제됩니다.

제안된 솔루션

  • 애플리케이션 웹 계층의 경우 Contoso는 App Service 사용합니다. Contoso는 이 PaaS 서비스를 사용하여 몇 가지 구성 변경만으로 애플리케이션을 배포할 수 있습니다. Contoso는 Visual Studio를 사용하여 변경하고 웹 사이트용과 WCF 서비스에 대해 하나씩 두 개의 웹앱을 배포합니다.
  • Contoso는 DevOps 파이프라인에 대한 요구 사항을 충족하기 위해 Git 리포지토리를 사용하여 소스 코드 관리에 Azure DevOps를 사용합니다. 자동화된 빌드 및 릴리스를 사용하여 코드를 빌드하고 App Service 배포합니다.

데이터베이스 고려 사항

솔루션 디자인 프로세스 중에 Contoso는 Azure SQL Database의 기능을 SQL Managed Instance 기능과 비교합니다. 팀은 다음 고려 사항에 따라 SQL Managed Instance 사용하기로 결정합니다.

  • SQL Managed Instance는 최신 온-프레미스 SQL Server 버전과 거의 100%의 호환성을 제공하는 것을 목표로 합니다. Microsoft는 온-프레미스 또는 IaaS(Infrastructure as a Service) VM에서 SQL Server 실행하고 최소한의 디자인 변경으로 애플리케이션을 완전 관리형 서비스로 마이그레이션하려는 조직에 SQL Managed Instance 권장합니다.
  • Contoso는 많은 수의 애플리케이션을 온-프레미스에서 IaaS VM으로 마이그레이션할 계획입니다. 이러한 VM 중 다수는 독립 소프트웨어 공급업체에서 제공합니다. Contoso 팀은 SQL Managed Instance 사용하면 이러한 애플리케이션에 대한 데이터베이스 호환성을 보장하는 데 도움이 될 수 있음을 알고 있습니다. 지원되지 않을 수 있는 SQL Database 대신 SQL Managed Instance를 사용합니다.
  • Contoso는 완전히 자동화된 Azure Database Migration Service 사용하여 SQL Managed Instance 리프트 앤 시프트 마이그레이션을 수행할 수 있습니다. Contoso는 향후 데이터베이스 마이그레이션에 이 서비스를 다시 사용할 수도 있습니다.
  • SQL Managed Instance는 SmartHotel360 애플리케이션의 중요한 구성 요소인 SQL Server Agent를 지원합니다. Contoso에는 이 호환성이 필요합니다. 그렇지 않으면 애플리케이션에 필요한 유지 관리 계획을 다시 디자인해야 합니다.
  • Software Assurance를 사용하면 Contoso는 SQL Server 대한 Azure 하이브리드 혜택 사용하여 SQL 관리형 인스턴스에서 현재 라이선스를 할인된 가격으로 교환할 수 있습니다. 이를 통해 Contoso는 SQL Managed Instance 사용하여 최대 30%를 절약할 수 있습니다.
  • SQL 관리형 인스턴스는 가상 네트워크에 완전히 포함되어 있으므로 Contoso 데이터에 대한 더 나은 격리 및 보안을 제공합니다. Contoso는 공용 인터넷과 격리된 환경을 유지하면서 퍼블릭 클라우드를 활용할 수 있습니다.
  • SQL Managed Instance Always Encrypted, 동적 데이터 마스킹, Row-Level 보안 및 위협 탐지를 비롯한 많은 보안 기능을 지원합니다.

솔루션 검토

Contoso 팀은 장단점 목록을 컴파일하여 제안된 디자인을 평가합니다.

고려 사항 세부 정보
장점 SmartHotel360 애플리케이션 코드는 Azure로 마이그레이션하기 위해 변경할 필요가 없습니다.

Contoso는 SQL Server 및 Windows Server 모두에 대한 Azure 하이브리드 혜택 사용하여 Software Assurance에 대한 투자를 활용할 수 있습니다.

마이그레이션 후 Contoso는 Windows Server 2008 R2를 지원할 필요가 없습니다. 자세한 내용은 Microsoft 수명 주기 정책을 참조하세요.

Contoso는 여러 인스턴스를 사용하여 애플리케이션의 웹 계층을 구성할 수 있으므로 웹 계층은 더 이상 단일 실패 지점이 아닙니다.

데이터베이스는 더 이상 오래된 SQL Server 2008 R2에 의존할 필요가 없습니다.

SQL Managed Instance는 Contoso의 기술 요구 사항과 목표를 지원합니다.

SQL 관리되는 인스턴스는 SQL Server 2008 R2에서 벗어나면서 현재 배포와 100% 호환성을 제공합니다.

Contoso는 향후 마이그레이션에 Database Migration Service 재사용할 수 있습니다.

SQL Managed Instance에는 Contoso에서 구성할 필요가 없는 내결함성이 기본적으로 제공됩니다. 이 내결함성은 데이터 계층이 더 이상 단일 장애 조치 지점이 아니도록 합니다.
단점 App Service 각 웹앱에 대해 하나의 애플리케이션 배포만 지원합니다. 따라서 웹 사이트용과 WCF 서비스에 대해 하나씩 두 개의 웹앱을 프로비전해야 합니다.

Contoso가 운영 체제 또는 데이터베이스 서버를 사용자 지정하려고 하거나 SQL Server와 함께 타사 애플리케이션을 실행하려는 경우 데이터 계층의 경우 SQL Managed Instance가 최상의 솔루션이 아닐 수 있습니다. IaaS VM에서 SQL Server를 실행하면 이러한 유연성을 제공할 수 있습니다.

제안된 아키텍처

제안된 아키텍처를 보여 주는 다이어그램

마이그레이션 프로세스

  1. Contoso는 Azure SQL 관리되는 인스턴스를 프로비전한 다음 Database Migration Service 사용하여 SmartHotel360 데이터베이스를 마이그레이션합니다.
  2. Contoso는 웹앱을 프로비저닝 및 구성하고 여기에 SmartHotel360 애플리케이션을 배포합니다.

마이그레이션 프로세스를 보여 주는 다이어그램

Azure 서비스

서비스 Description 비용
App Service 마이그레이션 도우미 코드 변경을 최소화하거나 변경하지 않고 .NET 웹 애플리케이션을 온-프레미스에서 클라우드로 마이그레이션하는 데 도움이 되는 사용하기 쉬운 무료 도구입니다. 무료로 다운로드할 수 있는 도구입니다.
Database Migration Service 가동 중지 시간을 최소화하면서 여러 데이터베이스 원본에서 Azure 데이터 플랫폼으로 마이그레이션하는 데 사용할 수 있는 Azure 서비스입니다. Azure Database Migration Service 가격 책정지원되는 지역을 참조하세요.
SQL Managed Instance Azure에서 완전히 관리되는 SQL Server 인스턴스를 나타내는 관리형 데이터베이스 서비스입니다. 최신 버전의 SQL Server 데이터베이스 엔진과 동일한 코드를 사용하며 최신 기능, 성능 향상 및 보안 패치가 있습니다. Azure에서 SQL 관리형 인스턴스를 사용하면 용량에 따라 요금이 부과됩니다. SQL Managed Instance 가격 책정에 대해 자세히 알아봅니다.
Azure App Service 완전 관리형 플랫폼을 사용하는 강력한 클라우드 애플리케이션을 만드는 데 도움이 될 수 있는 서비스입니다. 가격은 크기, 위치 및 사용 기간을 기준으로 합니다. App Service 가격 책정에 대해 자세히 알아보세요.
Azure Pipelines 애플리케이션 개발을 위한 CI/CD(지속적인 통합 및 지속적인 업데이트) 파이프라인을 제공하는 서비스입니다. 파이프라인은 애플리케이션 코드를 관리하기 위한 Git 리포지토리, 패키지 및 기타 빌드 아티팩트를 생성하기 위한 빌드 시스템 및 개발, 테스트 및 프로덕션 환경에 변경 내용을 배포하기 위한 릴리스 관리 시스템으로 시작합니다. Azure Pipelines 가격 책정에 대해 알아봅니다.

필수 구성 요소

이 시나리오를 구현하려면 Contoso가 다음 필수 조건을 충족해야 합니다.

요구 사항 세부 정보
Azure 구독 Contoso는 이 시리즈의 전반부 문서에서 구독을 만들었습니다. Azure 구독이 아직 없는 경우 체험 계정을 만듭니다.

체험 계정을 만들면 구독 관리자로서 모든 작업을 수행할 수 있습니다. 기존 구독을 사용하고 관리자가 아닌 경우 관리자는 소유자 또는 기여자 권한을 사용자에게 할당해야 합니다.
Azure 인프라 Contoso는 마이그레이션을 위한 Azure 인프라에 설명된 대로 Azure 인프라를 설정합니다.

시나리오 단계

Contoso가 마이그레이션을 실행하는 방법은 다음과 같습니다.

  • 1단계: 웹앱 평가 및 마이그레이션. Contoso는 App Service 마이그레이션 도우미를 사용하여 마이그레이션 전 호환성 검사를 실행하고 웹앱을 App Service 마이그레이션합니다.
  • 2단계: SQL Managed Instance 설정. Contoso에는 온-프레미스 SQL Server 데이터베이스에서 마이그레이션할 기존 Managed Instance가 필요합니다.
  • 3단계: Database Migration Service 사용하여 마이그레이션합니다. Contoso는 Database Migration Service 사용하여 애플리케이션 데이터베이스를 마이그레이션합니다.
  • 4단계: Azure DevOps 설정 Contoso는 새 Azure DevOps 프로젝트를 만들고 Git 리포지토리를 가져옵니다.
  • 5단계: 연결 문자열 구성 Contoso는 웹 계층 웹앱, WCF 서비스 웹앱 및 SQL Managed Instance가 통신할 수 있도록 연결 문자열을 구성합니다.
  • 6단계: Azure DevOps에서 빌드 및 릴리스 파이프라인 설정 마지막 단계에서 Contoso는 Azure DevOps에서 빌드 및 릴리스 파이프라인을 설정하여 애플리케이션을 만듭니다. 그런 다음 팀은 파이프라인을 두 개의 개별 웹앱에 배포합니다.

1단계: 웹앱 평가 및 마이그레이션

Contoso 관리자는 App Service 마이그레이션 도우미를 사용하여 웹앱을 평가하고 마이그레이션합니다. 프로세스 중에 가이드로 ASP.NET 앱을 Azure 로 마이그레이션 학습 경로를 사용합니다. 관리자는 다음을 수행합니다.

  • App Service 마이그레이션 평가 도구를 사용하여 웹앱 간의 종속성을 평가하고 온-프레미스 웹앱과 App Service 지원되는 항목 간에 비호환성이 있는지 확인합니다.

  • App Service 마이그레이션 도우미를 다운로드하고 Azure 계정에 로그인합니다.

  • 구독, 리소스 그룹 및 웹 사이트의 도메인 이름을 선택합니다.

2단계: SQL Managed Instance 설정

Azure SQL 관리되는 인스턴스를 설정하려면 Contoso에 다음 요구 사항을 충족하는 서브넷이 필요합니다.

  • 서브넷은 전용이어야 합니다. 비어 있어야 합니다. 다른 클라우드 서비스를 포함할 수 없습니다. 이 서브넷은 게이트웨이 서브넷일 수 없습니다.
  • 관리되는 인스턴스를 만든 후 Contoso는 서브넷에 리소스를 추가하면 안 됩니다.
  • 서브넷에는 연결된 네트워크 보안 그룹이 있을 수 없습니다.
  • 서브넷에는 사용자 정의 경로 테이블이 있어야 합니다. 할당되는 유일한 경로는 0.0.0.0/0 다음 홉 인터넷이어야 합니다.
  • 가상 네트워크에 대해 선택적 사용자 지정 DNS를 지정하는 경우 Azure의 재귀 확인자에 대한 가상 IP 주소 168.63.129.16을 목록에 추가해야 합니다. Azure SQL Managed Instance에 대한 사용자 지정 DNS를 구성하는 방법을 알아봅니다.
  • 서브넷에는 연결된 서비스 엔드포인트(스토리지 또는 SQL)가 없어야 합니다. 서비스 엔드포인트는 가상 네트워크에서 비활성화되어야 합니다.
  • 서브넷에는 16개 이상의 IP 주소가 있어야 합니다. Managed Instance 서브넷의 크기를 조정하는 방법에 대해 알아봅니다.
  • Contoso의 하이브리드 환경에서는 사용자 지정 DNS 설정이 필요합니다. Contoso에서 회사의 Azure DNS 서버 중 하나 이상을 사용하도록 DNS 설정을 구성합니다. DNS 사용자 지정에 대해 자세히 알아보세요.

관리되는 인스턴스에 대한 가상 네트워크 설정

Contoso 관리자는 다음과 같이 가상 네트워크를 설정합니다.

  1. 주 지역(미국 동부 2)에 가상 네트워크(VNET-SQLMI-EUS2)를 만듭니다. ContosoNetworkingRG 리소스 그룹에 가상 네트워크를 만듭니다.

  2. 주소 공간을 10.235.0.0/24로 할당하여 범위가 엔터프라이즈의 다른 네트워크와 겹치지 않도록 합니다.

  3. 네트워크에 다음 두 개의 서브넷을 추가합니다.

    • SQLMI-DB-EUS2(10.235.0.0/25).

    • SQLMI-SAW-EUS2(10.235.0.128/29): 이 서브넷은 디렉터리를 관리되는 인스턴스에 연결하는 데 사용됩니다.

      관리되는 인스턴스를 만들기 위한 값을 보여 주는 스크린샷

  4. 가상 네트워크와 서브넷이 배포되면 다음과 같이 네트워크를 피어링합니다.

    • VNET-HUB-EUS2(미국 동부 2의 허브 가상 네트워크)를 사용하여 VNET-SQLMI-EUS2를 피어링합니다.

    • VNET-PROD-EUS2(프로덕션 네트워크)를 사용하여 VNET-SQLMI-EUS2를 피어링합니다.

      피어링된 네트워크를 보여 주는 스크린샷

  5. 사용자 지정 DNS 설정을 지정합니다. DNS 설정은 먼저 Contoso의 Azure 도메인 컨트롤러를 가리킵니다. Azure DNS는 보조 DNS입니다. Contoso Azure 도메인 컨트롤러가 있는 위치는 다음과 같습니다.

    • 미국 동부 2 지역의 프로덕션 네트워크(VNET-PROD-EUS2)의 PROD-DC-EUS2 서브넷에 있습니다.

    • CONTOSODC3 주소: 10.245.42.4

    • CONTOSODC4 주소: 10.245.42.5

    • Azure DNS 확인자: 168.63.129.16

    네트워크 DNS 서버를 보여 주는 스크린샷

도움이 더 필요하세요?

라우팅 설정

관리되는 인스턴스는 프라이빗 가상 네트워크에 배치됩니다. Contoso는 가상 네트워크가 Azure 관리 서비스와 통신할 수 있도록 하는 경로 테이블이 필요합니다. 가상 네트워크에서 이를 관리하는 서비스와 통신할 수 없으면 가상 네트워크에 액세스하지 못하게 됩니다.

Contoso에서 고려해야 하는 요소는 다음과 같습니다.

  • 경로 테이블에는 Managed Instance에서 보낸 패킷을 가상 네트워크에서 라우팅하는 방법을 지정하는 규칙(경로) 집합이 포함됩니다.
  • 경로 테이블은 관리되는 인스턴스가 배포되는 서브넷과 연결됩니다. 서브넷에서 나가는 각 패킷은 연결된 경로 테이블에 따라 처리됩니다.
  • 서브넷은 단일 경로 테이블에만 연결할 수 있습니다.
  • Azure에서 경로 테이블을 만드는 데 추가 요금이 부과되지 않습니다.

라우팅을 설정하기 위해 Contoso 관리자는 다음 단계를 완료합니다.

  1. ContosoNetworkingRG 리소스 그룹에 사용자 정의 경로 테이블을 만듭니다.

    경로 테이블 만들기 대화 상자를 보여 주는 스크린샷

  2. SQL Managed Instance 요구 사항을 준수하기 위해 경로 테이블(MIRouteTable)이 배포된 후 관리자는 주소 접두사 0.0.0.0/0을 사용하여 경로를 추가합니다. 다음 홉 유형 값을 인터넷으로 설정합니다.

    경로 추가 대화 상자를 보여 주는 스크린샷

  3. 경로 테이블을 VNET-SQLMI-EUS2 네트워크의 SQLMI-DB-EUS2 서브넷과 연결합니다.

    서브넷 연결 대화 상자를 보여 주는 스크린샷

도움이 더 필요하세요?

관리되는 인스턴스에 대한 경로를 설정하는 방법을 알아봅니다.

관리되는 인스턴스 만들기

다음으로 Contoso 관리자는 다음 단계를 완료하여 SQL 관리형 인스턴스를 프로비전합니다.

  1. 관리되는 인스턴스는 비즈니스 애플리케이션을 제공하기 때문에 관리자는 회사의 주 지역(미국 동부 2)에 관리되는 인스턴스를 배포합니다. 관리되는 인스턴스를 ContosoRG 리소스 그룹에 추가합니다.

  2. 인스턴스에 대한 가격 책정 계층, 컴퓨팅 크기 및 스토리지를 선택합니다. SQL Managed Instance 가격 책정에 대해 자세히 알아봅니다.

    SQL Managed Instance 대화 상자를 보여 주는 스크린샷

    관리되는 인스턴스가 배포되면 ContosoRG 리소스 그룹에 두 개의 새 리소스가 표시됩니다.

    • SQL Managed Instance.

    • Contoso에 여러 관리되는 인스턴스가 있는 경우의 가상 클러스터

      ContosoRG 리소스 그룹의 새 리소스를 보여 주는 스크린샷

도움이 더 필요하세요?

관리되는 인스턴스를 프로비저닝하는 방법을 알아봅니다.

3단계: Database Migration Service 사용하여 마이그레이션

Contoso 관리자는 Database Migration Service 사용하여 관리되는 인스턴스를 마이그레이션합니다. 단계별 마이그레이션 자습서의 지침을 따릅니다. 온라인, 오프라인 및 하이브리드(미리 보기) 마이그레이션을 수행할 수 있습니다.

Contoso 관리자는 다음 단계를 완료합니다.

  • 가상 네트워크에 연결된 프리미엄 SKU를 사용하여 Database Migration Service 인스턴스를 만듭니다.
  • Database Migration Service 가상 네트워크를 통해 원격 SQL Server 인스턴스에 액세스할 수 있는지 확인합니다. 이 단계에서는 들어오는 모든 포트가 Azure에서 가상 네트워크 수준, 네트워크 VPN 및 SQL Server 호스트하는 컴퓨터에서 SQL Server 수 있도록 하는 작업이 포함됩니다.
  • Database Migration Service 구성합니다.
    • 마이그레이션 프로젝트를 만듭니다.
    • 원본(온-프레미스 데이터베이스)을 추가합니다.
    • 대상을 선택합니다.
    • 마이그레이션할 데이터베이스를 선택합니다.
    • 고급 설정을 구성합니다.
    • 복제를 시작합니다.
    • 오류가 있으면 해결합니다.
    • 최종 컷오버를 수행합니다.

4단계: Azure DevOps 설정

Contoso는 애플리케이션에 대한 DevOps 인프라 및 파이프라인을 빌드해야 합니다. 이를 위해 Contoso 관리자는 새 DevOps 프로젝트를 만들고 코드를 가져온 다음 빌드 및 릴리스 파이프라인을 설정합니다.

  1. Contoso Azure DevOps 계정에서 새 프로젝트 ContosoSmartHotelRefactor를 만든 다음, 버전 제어를 위해 Git을 선택합니다.

    새 프로젝트 대화 상자를 보여 주는 스크린샷

  2. 현재 애플리케이션 코드를 보유하고 있는 Git 리포지토리를 가져옵니다. 공용 GitHub 리포지토리에서 다운로드합니다.

    Git 리포지토리 가져오기 대화 상자를 보여 주는 스크린샷

  3. Visual Studio를 리포지토리에 연결한 다음 팀 탐색기를 사용하여 코드를 개발자 컴퓨터에 복제합니다.

    프로젝트에 연결 대화 상자를 보여 주는 스크린샷

  4. 애플리케이션에 대한 솔루션 파일을 엽니다. 웹앱과 WCF 서비스에는 파일 내 별도의 프로젝트가 있습니다.

    솔루션 탐색기 웹앱 및 WCF 서비스 프로젝트를 보여 주는 스크린샷

5단계: 연결 문자열 구성

Contoso 관리자는 웹앱과 데이터베이스가 서로 통신할 수 있는지 확인합니다. 이렇게 하려면 코드 및 웹앱에서 연결 문자열을 구성합니다.

  1. WCF 서비스의 웹앱인 SHWCF-EUS2의 설정>애플리케이션 설정에서 라는 DefaultConnection새 연결 문자열을 추가합니다.

  2. SmartHotel-Registration 데이터베이스에서 연결 문자열을 끌어온 다음 올바른 자격 증명으로 업데이트합니다.

    연결 문자열 설정을 보여 주는 스크린샷

  3. Visual Studio에서 관리자는 솔루션 파일에서 SmartHotel.Registration.wcf 프로젝트를 엽니다. 프로젝트에서 연결 문자열을 connectionStrings 추가하여 web.config 파일의 섹션을 업데이트합니다.

    SmartHotel.Registration.wcf 프로젝트의 web.config 파일의 connectionStrings 섹션을 보여 주는 스크린샷

  4. WCF 서비스의 새 위치를 가리키도록 SmartHotel.Registration.Web에 대한 web.config 파일의 섹션을 업데이트 client 합니다. 포인터는 서비스 엔드포인트를 호스트하는 WCF 웹앱의 URL입니다.

    SmartHotel.Registration.wcf 프로젝트의 web.config 파일의 클라이언트 섹션을 보여 주는 스크린샷

  5. 관리자는 Visual Studio에서 팀 탐색기를 사용하여 코드 변경 내용을 커밋하고 동기화합니다.

6단계: Azure DevOps에서 빌드 및 릴리스 파이프라인 설정

이제 Contoso 관리자는 빌드 및 릴리스 프로세스를 수행하도록 Azure DevOps 구성합니다.

  1. Azure DevOps에서 새파이프라인빌드 및 릴리스>를 선택합니다.

    Azure DevOps의 새 파이프라인 단추를 보여 주는 스크린샷

  2. Azure Repos Git 및 관련 리포지토리를 선택합니다.

    Azure Repos Git 단추 및 선택한 리포지토리를 보여 주는 스크린샷

  3. 템플릿 선택에서 빌드에 대한 ASP.NET 템플릿을 선택합니다.

    ASP.NET 템플릿이 선택된 템플릿 선택 대화 상자를 보여 주는 스크린샷

  4. 빌드에 ContosoSmartHotelRefactor-ASP.NET-CI라는 이름을 사용하고 첫 번째 빌드를 시작하는 큐 저장&을 선택합니다.

    빌드에 대한 큐 저장 & 단추를 보여 주는 스크린샷

  5. 프로세스를 볼 수 있도록 빌드 번호를 선택합니다. 프로세스가 완료되면 관리자는 프로세스 피드백을 볼 수 있습니다. 아티팩트 를 선택하여 빌드 결과를 검토합니다.

    빌드 페이지와 아티팩트 단추를 보여 주는 스크린샷

    아티팩트 탐색기 창이 열립니다. 빌드 결과는 drop 폴더에 표시됩니다.

    • 두 .zip 파일은 애플리케이션을 포함하는 패키지입니다.
    • 이러한 .zip 파일은 App Service 배포를 위해 릴리스 파이프라인에서 사용됩니다.

    아티팩트 탐색기를 보여 주는 스크린샷

  6. 릴리스새 파이프라인을 선택합니다.>

    새 파이프라인 버튼을 보여주는 스크린샷입니다.

  7. App Service 배포 템플릿을 선택합니다.

    템플릿 선택 대화 상자를 보여 주는 스크린샷

  8. 릴리스 파이프라인의 이름을 ContosoSmartHotel360Refactor 로 지정하고 스테이지 이름 상자에서 SHWCF-EUS2 를 WCF 웹앱의 이름으로 지정합니다.

    WCF 웹앱의 스테이지 이름을 보여 주는 스크린샷

  9. 단계에서 1개의 작업, 1개의 작업을 선택하여 WCF 서비스의 배포를 구성합니다.

    1 작업, 1 작업 옵션을 보여 주는 스크린샷

  10. 구독이 선택되고 권한이 부여되었는지 확인한 다음, 앱 서비스 이름을 선택합니다.

    앱 서비스 이름을 보여 주는 스크린샷

  11. 파이프라인에서 아티팩트를 선택하고, 아티팩트 추가를 선택하고, 원본 유형으로 빌드 를 선택한 다음, ContosoSmarthotel360Refactor 파이프라인을 사용하여 빌드합니다.

    아티팩트 추가 대화 상자의 빌드 단추를 보여 주는 스크린샷

  12. 지속적인 배포 트리거를 사용하도록 설정하기 위해 관리자는 아티팩트에서 번개 단추를 선택합니다.

    아티팩트에서 번개 단추를 보여 주는 스크린샷

  13. 연속 배포 트리거를 사용으로 설정합니다.

    연속 배포 트리거가 사용으로 설정된 것을 보여 주는 스크린샷

  14. 관리자는 1단계 작업, 1단계 작업으로 돌아가서 배포 Azure App Service 선택합니다.

    Azure App Service 배포 옵션을 보여 주는 스크린샷

  15. 파일 또는 폴더 선택에서 드롭 폴더를 확장하고 빌드 중에 만든 SmartHotel.Registration.Wcf.zip 파일을 선택한 다음 저장을 선택합니다.

    파일 또는 폴더 선택 대화 상자를 보여 주는 스크린샷

  16. 파이프라인>단계를 선택한 다음 추가를 선택하여 SHWEB-EUS2에 대한 환경을 추가합니다. 그리고 다른 Azure App Service 배포를 선택합니다.

    1 작업, 1 작업 링크를 보여 주는 스크린샷

  17. 이 프로세스를 반복하여 웹앱 SmartHotel.Registration.Web.zip 파일을 올바른 웹앱에 게시한 다음 저장을 선택합니다.

    웹 파일을 선택하기 위한 파일 또는 폴더 선택 대화 상자를 보여 주는 스크린샷

    릴리스 파이프라인은 다음과 같이 표시됩니다.

    릴리스 파이프라인을 보여 주는 스크린샷

  18. 빌드로 돌아가서 트리거를 선택한 다음 연속 통합 사용을 선택합니다. 이 작업을 사용하면 변경 내용이 코드에 커밋될 때 전체 빌드 및 릴리스가 수행되도록 파이프라인을 사용할 수 있습니다.

    연속 통합 사용 확인란을 보여 주는 스크린샷

  19. 큐 저장 & 을 선택하여 전체 파이프라인을 실행합니다. 새 빌드가 트리거되어 App Service 애플리케이션의 첫 번째 릴리스가 만들어집니다.

    큐 저장 & 단추를 보여 주는 스크린샷

  20. Contoso 관리자는 Azure DevOps에서 빌드 및 릴리스 파이프라인 프로세스를 수행할 수 있습니다. 빌드가 완료되면 릴리스가 시작됩니다.

    빌드 및 릴리스 진행률을 보여 주는 스크린샷

  21. 파이프라인이 완료되면 두 사이트가 모두 배포되고 애플리케이션이 온라인으로 실행됩니다.

    실행 중인 애플리케이션을 보여 주는 스크린샷

    애플리케이션이 Azure로 성공적으로 마이그레이션되었습니다.

마이그레이션 후 정리

마이그레이션 후 Contoso 팀은 다음 정리 단계를 완료합니다.

  • vCenter 인벤토리에서 온-프레미스 VM을 제거합니다.
  • 로컬 백업 작업에서 VM을 제거합니다.
  • SmartHotel360 애플리케이션의 새 위치를 표시하도록 내부 설명서를 업데이트합니다. 설명서에서는 데이터베이스가 SQL 관리되는 인스턴스에서 실행되고 프런트 엔드가 두 개의 웹앱에서 실행된다는 것을 보여줍니다.
  • 서비스가 해제된 VM과 상호 작용하는 모든 리소스를 검토하고 새 구성을 반영하도록 관련 설정 또는 설명서를 업데이트합니다.

배포 검토

리소스가 Azure로 마이그레이션된 후 Contoso는 새 인프라를 완전히 운영하여 보안을 제공해야 합니다.

보안

Backup

  • Contoso 팀은 SQL Managed Instance 데이터베이스에 대한 백업 요구 사항을 검토합니다. 자세한 내용은 Azure SQL Database의 자동화된 백업을 참조하세요.
  • 또한 SQL Database 백업 및 복원 관리에 대해서도 알아봅니다. 자세한 내용은 자동 백업을 참조하세요.
  • 데이터베이스에 대한 지역별 장애 조치(failover)를 제공하기 위해 장애 조치(failover) 그룹을 구현하는 것이 좋습니다. 자세한 내용은 자동 장애 조치(failover) 그룹 개요를 참조하세요.
  • 복원력을 위해 주 지역(미국 동부 2) 및 보조 지역(미국 중부)에 웹앱을 배포하는 것이 좋습니다. 팀은 지역 가동 중단 중에 장애 조치(failover)를 보장하기 위해 Traffic Manager를 구성할 수 있습니다.

라이선스 및 비용 최적화

  • 모든 리소스가 배포된 후 Contoso는 인프라 계획 중에 결정한 Azure 태그를 할당합니다.
  • 모든 라이선스는 Contoso에서 사용하는 PaaS 서비스 비용에 기본 제공됩니다. 이 비용은 기업계약에서 공제됩니다.
  • Contoso는 Azure Cost Management 및 Billing을 사용하여 IT 리더십이 설정한 예산 내에서 작동하도록 합니다.

결론

이 문서에서 Contoso는 애플리케이션 프런트 엔드 VM을 두 개의 App Service 웹앱으로 마이그레이션하여 Azure의 SmartHotel360 애플리케이션을 리팩터링했습니다. Contoso는 애플리케이션 데이터베이스를 Azure SQL 관리되는 인스턴스로 마이그레이션했습니다.