Azure로 마이그레이션 계획

업데이트 날짜: 2015년 2월

마이그레이션 계획을 시작할 때 비용, 비즈니스 및 기술 요구 사항, 시간대, 마이그레이션 과정에 필요한 테스트 등의 여러 주요 요소를 고려해야 합니다. 이 섹션에서는 Azure로 마이그레이션을 계획할 때 고려해야 할 몇 가지 사항과 단계를 소개합니다.

저자: Steve Howard
검토자: James Podgorski, Paolo Salvatori, Selcin Turkarslan, Stuart Ozer

비용은 해결되어야 할 가장 큰 문제 중 하나이므로 Azure로 내부 응용 프로그램 마이그레이션을 고려할 때 의사 결정 및 계획 과정 초기에 결정하는 것이 좋습니다. Azure에 대한 응용 프로그램 가격은 네트워크 트래픽 부하, 응용 프로그램의 입/출력 특성, 응용 프로그램의 데이터 처리량과 같은 여러 요인에 따라 결정됩니다. 가격 계산은 이 항목에서 다루지 않습니다. 마이그레이션 계획을 시작할 때 Azure 가격 계산기를 사용하여 비용을 예측하는 것이 좋습니다. Azure 가격 계산기는 여기에서 사용할 수 있습니다.

조직에 대한 비용을 계산할 때 개발 및 테스트 중 직접적인 Azure 비용을 포함해야 합니다. 내부 개발 프로젝트에서는 개발 및 테스트 서버에 대한 비용을 지불합니다. 마찬가지로 Azure 환경에서는 개발 및 테스트 중 사용하는 리소스에 대한 비용을 지불해야 합니다. 훈련 및 학습 비용과 Azure로 응용 프로그램 이식 관련 비용도 계산해야 합니다. 성능 테스트 및 용량 계획을 수행하여 응용 프로그램에 필요한 용량을 미리 평가하는 것이 좋습니다.

Azure로 몇 가지 비즈니스 및 기술 요구 사항을 충족할 수 있습니다. 다음은 Azure로 마이그레이션하기에 적합한 응용 프로그램의 특성을 일부 나열한 것입니다.

  • 분산된 사용자 기반: Azure 데이터 센터는 여러 대륙에 위치해 있습니다. 데이터 센터 간 연결로 필요 시 고성능 데이터 배포가 가능합니다. CDN(Content Distribution Network) 및 데이터 동기화 서비스 등의 Azure 기능을 사용하면 최종 사용자 인근의 여러 데이터 센터에 많이 사용하는 데이터나 관련 데이터를 분산 배포할 수 있습니다. 최적의 사용자 경험을 위해 사용자로 하여금 가까운 데이터 센터를 이용하게 하면 왕복 시간이 최소화됩니다.

  • 가변 부하: 내부 응용 프로그램에서 최대 부하를 처리하도록 하려면 하드웨어를 구입해야 합니다. 예를 들어, 소매점은 대개 연휴 쇼핑 기간의 부하 처리를 위해 서버를 구입합니다. 마찬가지로 회계 부서는 월말 또는 연말 마감 기간의 최대 부하를 처리할 수 있도록 추가 인프라를 계획할 수 있습니다. 이렇게 최대 부하를 처리하기 위해 구입한 서버는 나머지 시간에는 충분히 활용되지 못합니다. 반대로 탄력적인 요금을 활용하도록 설계된 응용 프로그램은 Azure를 통해 사용량이 많을 때는 응용 프로그램의 새 인스턴스를 온라인 상태로 만들고, 사용량이 적을 때는 보다 낮은 수준으로 전력 및 용량 처리를 수행합니다. 이러한 방식으로 Azure와 적절하게 설계 및 관리되는 응용 프로그램을 사용하여 필요한 만큼만 지불할 수 있습니다.

  • 다중 테넌트: 서비스 공급자의 경우, Azure를 사용하면 동일한 인프라에서 여러 가지 방법으로 많은 고객에게 응용 프로그램 서비스를 제공할 수 있으므로 운영 비용을 최소화할 수 있습니다.

  • 응용 프로그램에 집중해야 함: 특히 서비스 공급자는 인프라 유지 관리보다는 응용 프로그램과 기능 개발에 리소스를 집중시키려고 합니다. Azure를 사용하면 내부 또는 기존의 호스팅된 서버 응용 프로그램을 호스팅하는 인프라에 필요한 많은 관리 오버헤드로부터 벗어나서 응용 프로그램 및 기능 개발에 자원을 집중시킬 수 있습니다.

  • 인프라 리소스 요구 사항 최소화: Azure에서 제공하는 탄력적인 확장 기능을 활용하도록 응용 프로그램을 설계하면 역할 인스턴스와 리소스를 필요에 따라 할당할 수 있습니다. 하드웨어에 미리 투자할 필요가 없으며 사용량이 적을 때는 최대 부하를 처리하는 서버를 유지 관리할 필요도 없습니다.

Azure는 서비스 중심의 장점으로 기존의 플랫폼 외에도 가상 컴퓨터를 호스팅할 수 있습니다. 이러한 가상 컴퓨터는 모든 Azure 지원 운영 체제를 실행할 수 있으며 내부를 실행할 때와 같은 방법으로 응용 프로그램을 실행할 수 있습니다. 지원되는 운영 체제 목록은 Azure 가상 컴퓨터 개요를 참조하십시오. 이러한 가상 컴퓨터는 웹 또는 작업자 역할의 인스턴스와 다른 Azure 구성 요소를 포함할 수 있는 보다 큰 응용 프로그램 아키텍처에 포함될 수도 있습니다. 가상 컴퓨터를 통해 몇몇 서비스 또는 응용 프로그램 부분을 Azure로 쉽게 이식할 수 있습니다. 자세한 내용은 Migration with Azure Virtual Machines를 참조하세요.

분석 및 설계 단계에서 Azure로 이동하여 가장 큰 혜택을 얻을 응용 프로그램을 식별해야 합니다. 그런 다음 Azure 구현 및 구현 계획 설계를 시작합니다. 이 단계에서 아키텍처 디자인과 시간대의 윤곽을 계획해야 합니다.

다음은 계획의 몇 가지 주요 요소입니다.

  • 현재 문제 파악: 다음 목록에는 재설계 요구 사항에 맞게 계획할 때 파악해야 하는 문제의 몇 가지 예가 나와 있습니다.

    • 현재 아키텍처의 현재 로드에서 표준 이하의 성능을 보이는 응용 프로그램 구성 요소: 예를 들어 SQL 쿼리가 만족스럽게 수행되지 않을 경우 마이그레이션이나 추가 설계 전에 이를 조정해야 합니다. 또한 모든 응용 프로그램 계층 구성 요소를 다시 설계하고 확장해야 합니다.

    • 탄력적인 확장 요구 사항 확인: 서로 독립적으로 실행될 수 있는 확장 가능한 독립 기능 단위로 응용 프로그램을 분해하는 방법을 파악해야 합니다.

    • 불균형한 부하 패턴: 불균형한 부하 패턴을 파악하고, 최대 부하 기간을 처리할 수 있도록 확장을 목적으로 응용 프로그램을 설계해야 합니다. 사용량이 많은 기간부터 수요가 적은 기간까지 확장 수준을 관리하는 방법을 계획해야 합니다.

    • 증가 예측: 보통 증가 예측을 통해 IT 부서에서 패러다임 변경이 필요한지 알 수 있습니다. 확장을 통해 증가 예측을 충족할 수 있는 부분을 결정하십시오. 증가 예측은 특정 데이터 웨어하우스 중심 응용 프로그램에서 큰 데이터 분석 패러다임으로 전환하는 등의 패러다임 전환을 고려해야 함을 나타내기도 합니다. 반드시 계획 단계에서 이러한 옵션을 논의해야 합니다. 설계 및 구현 과정에서는 나중까지 해결 방법을 확실히 알 수 없을 수도 있습니다. 첫 마이그레이션 시나 나중에 적절한 때 평가할 수 있도록 이러한 우발적인 사항이나 결정 요인을 파악해야 합니다.

  • 기술 요구 사항 파악: 최대 부하 및 이외 상황 모두에서 각 응용 프로그램 구성 요소의 요구 사항을 파악합니다. 그런 다음 각 구성 요소의 규모를 계획합니다. 구성 요소마다 확장 기능과 메커니즘이 다를 수 있습니다. 기술 요구 사항은 단순히 성능 이상일 수 있습니다. 예를 들어, 마이그레이션 계획 시 고가용성 및 재해 복구 요구 사항이나 최대 네트워크 대기 시간에 대한 요구 사항을 파악하여 Azure 기능과 비교해야 합니다. 다음 목록에서는 기술 요구 사항의 몇 가지 예를 보여 줍니다.

    • 관계형 저장소 사용: 관계형 데이터베이스에 저장된 데이터를 검사합니다. 트랜잭션과 관계형의 특징을 모두 지닌 데이터나 트랜잭션 처리가 필요한 데이터는 관계형 저장소에 보관해야 합니다. 가상 컴퓨터에서 실행 중인 SQL Server나 Azure SQL 데이터베이스(SQL 데이터베이스)를 사용하여 이러한 유형의 데이터를 저장할 수 있습니다. Azure 테이블, Azure Blob 저장소 또는 Azure 드라이브에 효율적으로 다른 유형의 데이터를 저장할 수 있습니다. 데이터의 각 부분에 필요한 저장소의 종류를 식별하는 것이 좋습니다.

    • 관계형 데이터 저장소 선택: Azure 가상 컴퓨터에서 실행 중인 SQL Server나 SQL 데이터베이스의 선택은 몇 가지 요인에 따라 결정됩니다. 고가용성, 부하 분산 및 투명한 장애 조치(failover)의 관리 오버헤드를 피하려면 SQL 데이터베이스를 선택해야 합니다. 그러나 응용 프로그램을 마이그레이션하는 동안의 중간 상태이거나 아직 SQL 데이터베이스에서 기능을 사용할 수 없는 특수한 경우에는 Azure 가상 컴퓨터에서 실행 중인 SQL Server를 선택합니다. 이러한 질문에 대한 답은 상황과 솔루션에 따라 달라집니다. 다음 목록에서는 이에 대한 몇 가지 고려 사항을 보여 줍니다.

      • 데이터베이스 크기: 현재 Azure SQL 데이터베이스는 웹 버전 데이터베이스의 경우 5GB의 데이터로 제한되고 비즈니스 버전 데이터베이스의 경우 150GB로 제한됩니다. 데이터베이스 용량을 확장하려면 확장 방법을 사용하십시오. Azure 확장 방법에 대한 자세한 내용은 "Windows Azure SQL 데이터베이스 확장"을 참조하십시오. 사용 가능한 데이터베이스 버전 및 크기에 대한 최신 정보는 Azure SQL 데이터베이스 계정 및 요금 청구를 참조하십시오.

      • 데이터베이스 수: 기본적으로 SQL 데이터베이스는 구독당 최대 6대의 서버와 각 SQL 데이터베이스 서버에서 master 데이터베이스를 포함하여 최대 150개의 데이터베이스를 지원합니다. 이 제한은 확장할 수 있습니다. 자세한 내용은 Microsoft Online Services 고객 포털에서 고객 지원 담당자에게 문의하십시오.

      • 데이터베이스 간 쿼리: SQL 데이터베이스는 현재 데이터베이스 간 조인이나 기타 데이터베이스 간 쿼리를 지원하지 않습니다. SQL 데이터베이스에 하나 이상의 데이터베이스의 데이터를 필요로 하는 공용 구조체 또는 조인이 있을 경우 응용 프로그램의 응용 프로그램 계층에서 해당 논리를 수행해야 합니다.

      • CLR(공용 언어 런타임) 개체: SQL 데이터베이스는 현재 CLR 저장 프로시저, 집계, 트리거 또는 함수를 지원하지 않습니다. SQL 데이터베이스에서 저장 프로시저, 트리거 또는 함수를 실행하려면 Transact-SQL에서 이식해야 합니다. Transact-SQL의 데이터베이스 계층에서 수행할 수 없는 집계 등의 복잡한 논리나 작업은 응용 프로그램 계층으로 이동해야 합니다. 작업자 역할을 사용하여 이러한 작업을 수행할 수 있습니다.

      • 데이터 형식: SQL 데이터베이스는 SQL Server의 일부 시스템 데이터 형식을 지원하지 않습니다. 최신 정보는 SQL MSDN 라이브러리의 Data Types (SQL Database)을 참조하십시오.

      • 복제: 트랜잭션 복제나 병합 복제와 같은 복제 유형은 SQL 데이터베이스에서 사용할 수 없습니다. Azure 가상 컴퓨터에서 실행 중인 SQL Server에서 이러한 복제 유형을 설정하고 실행할 수 있습니다. SQL 데이터 동기화를 사용하여 SQL 데이터베이스 인스턴스 간에 데이터를 동기화할 수 있습니다. 그러나 트랜잭션 일관성이나 복잡한 충돌 해결이 필요한 경우 SQL 데이터 동기화 서비스만으로는 부족할 수 있습니다. 경고: SQL 데이터 동기화는 현재 미리 보기로만 사용할 수 있으며, 이후 릴리스를 위해 제품 사용자 의견을 받는 용도로만 사용되므로 프로덕션 환경에서는 사용할 수 없습니다.

      • 전체 텍스트 검색: Azure SQL 데이터베이스는 현재 전체 텍스트 검색을 지원하지 않습니다. 응용 프로그램에서 SQL Server 테이블의 문자 데이터에 대해 전체 텍스트 쿼리를 실행하는 경우 Azure 가상 컴퓨터의 SQL Server로 데이터베이스를 마이그레이션하는 것이 좋습니다. Azure VM의 SQL Server에 대한 자세한 내용은 Migrating with SQL Server in Azure Virtual Machines 항목을 참조하십시오.

      • 라이선스: SQL 데이터베이스는 선택한 데이터베이스 크기에 따라 매월 대금을 청구합니다. Azure 가상 컴퓨터에서 SQL Server를 실행하려면 라이선스가 필요합니다.

      • 로그인 및 보안: Windows 인증(통합 보안)은 SQL 데이터베이스에서 지원되지 않지만, Azure 가상 컴퓨터에서 실행 중인 SQL Server에서는 사용할 수 있습니다. SQL 데이터베이스의 보안 지침 및 제한 사항에 대한 자세한 내용은 Azure SQL 데이터베이스 보안 지침 및 제한 사항을 참조하십시오.

  • 로그인 및 사용자 보안: Azure의 네트워크 기능이 새롭게 향상되어 내부 네트워크의 Active Directory 도메인을 Azure로 확장할 수 있습니다. 자세한 내용은 Migration with Azure Virtual Machines를 참조하세요. SQL 데이터베이스 보안 관리에 대한 자세한 내용은 Azure SQL 데이터베이스에서 데이터베이스, 로그인 및 사용자 관리를 참조하십시오.

  • 응용 프로그램의 기능 분해: 별도의 Azure 역할 또는 가상 컴퓨터에서 실행할 수 있도록 응용 프로그램을 기능 단위로 분해할 수 있는 부분을 파악합니다. 탄력적인 요금을 지원하려는 경우나 일부 응용 프로그램이 클라우드 컴퓨팅에 부적합하여 혼합 응용 프로그램을 사용할 수 있도록 하려는 경우가 여기에 해당합니다.

  • PCI(Payment Card Industry) 및 기타 규제 요구 사항: 응용 프로그램이나 구성 요소를 Azure로 이동하기 전에 필요한 인증 또는 요구 사항의 현재 상태를 확인합니다. PCI 규정 요구 사항 등의 경우 Azure로 마이그레이션되는 응용 프로그램 및 데이터베이스의 일부를 제거하고 혼합 응용 프로그램을 실행할 수 있습니다. 이를 통해 대부분의 구성 요소에서 Azure와 클라우드 컴퓨팅을 이용할 수 있으며 규격화된 제어와 규제가 필요한 데이터 및 응용 프로그램 부분을 제대로 관리할 수 있습니다.

  • Azure 플랫폼에서 호스팅할 수 없는 주요 구성 요소: 기타 몇 가지 이유로 공용 클라우드에서 일부 데이터 형식이나 일부 구성 요소를 호스팅하지 못할 수도 있습니다. 이러한 구성 요소를 식별하고 혼합 응용 프로그램을 고려하십시오. 혼합 아키텍처를 통해 Azure에서 여러 구성 요소를 호스팅하여 Azure와 클라우드 컴퓨팅의 이점을 모두 제공할 수 있습니다. 또한 규격화된 제어와 규제가 필요한 데이터 및 응용 프로그램 부분을 제대로 관리할 수 있습니다.

마이그레이션 범위를 정의하면 마이그레이션 계획의 각 단계에 대한 작업량도 명확해집니다. 각 응용 프로그램과 데이터 구성 요소를 보고 개발, 테스트 및 마이그레이션에 필요한 시간과 리소스를 추정합니다. 기능적으로 응용 프로그램을 분해할 때 이렇게 분해된 구성 요소를 동시에 개발하여 탄력적으로 확장 가능한 구성 요소를 생성하십시오.

마이그레이션 계획에 기능 및 성능 테스트와 릴리스 날짜 등의 프로젝트 중요 시점을 설정합니다. Azure에 사용할 여러 구성 요소가 준비되거나 구성 요소를 Azure 웹 역할 및 작업자 역할로 이동할 준비가 되면 일련의 단계 및 반복을 통해 마이그레이션을 진행할 수 있습니다.

개발 및 마이그레이션을 위한 시간대가 설정되면 해당 기간 동안의 증가를 계획하고 기존 응용 프로그램과 인프라에 대해 수행할 작업을 결정합니다. 이러한 종류의 계획을 통해 마이그레이션이 완료될 때까지 기존 시스템을 작동할 수 있습니다. 이 중간 계획을 세울 때 현재 문제점을 파악하고, 기존 시스템이 계속 작동할 수 있도록 수행해야 할 작업과 중간 인프라에서 계속할 수 있는 확장 작업을 식별합니다. 또한 기존 시스템이 계속 작동해야 하는 단계를 파악합니다. 이러한 단계는 대개 특정 응용 프로그램의 특징에 따라 SQL 쿼리를 조정하거나 웹 서버를 추가하는 것만큼 간단합니다. 예상보다 빠르게 증가하거나 예기치 않게 급증하는 경우를 위한 대체 계획을 파악합니다. 대체 계획을 세울 때 추가 하드웨어 투자 없이 이러한 상황을 처리할 수 있도록 Azure 가상 컴퓨터로 확장하여 급증이나 증가를 처리할 수 있는지 고려합니다.

모든 마이그레이션 계획은 포괄적인 기능 테스트 및 부하 테스트에 대한 계획을 포함해야 합니다. 테스트 방법론은 이 문서에서 설명하지 않습니다. 다음은 테스트 시 기억해야 할 몇 가지 주요 사항입니다.

  • 테스트 스크립트 자동화

  • 응용 프로그램의 모든 계층과 구성 요소 테스트

  • 시스템에서의 실제 비율을 나타내는 활동 비율에 대한 테스트

  • 최고 예상 사용률 이상의 수준 테스트

테스트를 구축하고 실행하는 시간과 테스트로 발견된 문제를 수정하는 시간을 포함하는 것이 좋습니다.

비즈니스 및 기술 요구 사항을 정의하는 경우 성공적으로 마이그레이션을 실행하는 데 필요한 리소스를 식별합니다. 마이그레이션을 위해 이러한 리소스를 추가해야 할 수 있습니다. 리소스를 식별할 때 살펴봐야 할 세 가지 주요 영역이 있습니다.

  • 담당자: 성공적으로 응용 프로그램을 마이그레이션하려면 추가적인 기술을 알고 있는 직원을 배치해야 할 수도 있습니다. 또한 마이그레이션 후 기술 직원의 역할이 변경되고 기술 업데이트가 필요할 수 있습니다. 예를 들어, 로그인, 액세스 및 서비스와 확장 수준 관리를 위해 계정 관리자 및 서비스 관리자 역할을 고려하십시오.

  • 도구: Azure 응용 프로그램을 개발, 테스트 및 배포 하는 데 필요한 도구를 파악합니다. 자세한 내용은 Azure Tools for Microsoft Visual StudioAzure SQL 데이터베이스 도구 및 유틸리티 지원을 참조하십시오.

  • 컨설팅: 응용 프로그램을 마이그레이션하려면 특정 전문 지식이 필요할 수 있습니다. 마이그레이션 전문가는 일반적인 문제를 피할 수 있도록 도와 상당한 시간과 비용을 절약할 수 있습니다.

작은 응용 프로그램의 경우 Azure 관리 포털로 충분히 Azure 배포를 관리할 수 있습니다. Azure 관리 포털에 로그인하여 인스턴스 역할 수를 변경하고 SQL 데이터베이스 인스턴스를 관리하는 등 배포와 응용 프로그램을 관리할 수 있습니다. 그러나 복잡한 응용 프로그램과 고객에게 서비스를 제공하는 응용 프로그램의 경우 Azure 관리 포털만으로는 부족할 수 있습니다.

Azure에서 호스팅되는 VM과 응용 프로그램을 프로그래밍 방식으로 관리하고 Azure 저장소를 프로비저닝 및 사용할 수 있도록 REST API가 노출됩니다. Azure 환경 확장과 모니터링을 처리하는 관리 인터페이스를 작성할 수 있습니다. 마이그레이션 계획에는 마이그레이션 후 응용 프로그램을 관리하는 계획이 포함되어야 합니다. 특히 사용자 지정 인터페이스나 자동화를 포함하려는 경우 관리 계획이 필요합니다.

Azure 배포 관리를 위한 REST API에 대한 자세한 내용은 Azure에 대한 API 참조에 나와 있습니다.

참고 항목

표시: