내보내기(0) 인쇄
모두 확장

Azure 클라우드 서비스에 대한 개발 고려 사항

업데이트 날짜: 2014년 6월

저자: Selcin Turkarslan

검토자: Tim Wieman, Valery Mizonov, Avilay Parekh, Paolo Salvatori, Steve Howard

응용 프로그램을 Microsoft Azure 클라우드 서비스로 마이그레이션하기 전에 먼저 이 서비스의 세부 정보를 검토하는 것이 좋습니다. "Azure 소개" 문서에서는 다음에 대한 정보를 제공합니다.

  • Azure 구성 요소

  • 실행 모델

  • 데이터 관리

  • 네트워킹

  • 지원되는 프로그래밍 SDK(소프트웨어 개발 키트) 등

이 문서의 목표는 Microsoft Azure 클라우드 서비스를 사용하여 Microsoft Azure 응용 프로그램을 구현하는 방법에 대한 소개 정보를 제공하는 것입니다. 마이그레이션 시나리오의 수는 거의 무한합니다. 따라서 개발자는 응용 프로그램 및 사용자에게 가장 적합한 기술 및 솔루션을 선택하는 것이 좋습니다.

기존 응용 프로그램을 Azure로 마이그레이션하려면 다음 작업을 수행해야 합니다.

  • 응용 프로그램에 가장 적합한 계산 실행 모델에 따라 다릅니다(예: 클라우드 서비스, 웹 사이트, VM(가상 컴퓨터) 등). "Azure 소개: 실행 모델"을 읽어 보세요.

  • Azure 관련 구성 및 사용자 지정 코드를 추가합니다.

  • Azure에서 데이터를 저장 및 관리합니다.

  • 기존 응용 프로그램을 Azure 응용 프로그램으로 다시 패키징합니다.

  • 응용 프로그램을 Azure에 배포합니다.

Microsoft Azure 클라우드 서비스에 배포된 응용 프로그램에는 응용 프로그램 코드, 데이터 관리 및 해당 구성 설정이 포함됩니다. 클라우드용 응용 프로그램을 개발할 때도 일반적인 아키텍처 패턴을 계속해서 적용할 수 있습니다. 예를 들어 개발자는 분산 환경에서 가용성, 확장성, 안정성 및 보안을 처리하도록 응용 프로그램을 설계해야 합니다. 또한 개발자는 다음을 고려해야 합니다.

  • SLA(서비스 수준 계약)

  • 용량 계획

  • 고객 청구

  • 감사

  • 응용 프로그램 모니터링

  • 트래픽 분석

  • 비용 관리

  • 확장 - 클라우드 응용 프로그램에서 수직 확장, 수직 축소, 수평 확장 및 확장하는 경우와 방법

기존의 개인 데이터 센터 환경에서 개발자는 서비스를 실행하기 위해 하드웨어를 구입, 설치 및 유지 관리하는 일을 담당합니다. Azure에서는 가상화된 리소스를 할당하여 요청 시 확장할 수 있는 응용 프로그램을 설계하고 작성할 수 있습니다. 일부 온-프레미스 응용 프로그램은 극소량의 변경만으로 또는 전혀 변경하지 않은 채 Azure에서 실행할 수 있습니다. 그러나 대부분의 응용 프로그램은 실제로 클라우드용 디자인 및 설계에서 이점을 얻을 수 있습니다. Azure를 최대한으로 활용하려면 응용 프로그램을 Azure로 마이그레이션하기 전에 여러 역할을 사용하도록 응용 프로그램을 수정하는 것이 좋습니다.

예를 들어 레거시 데이터 센터에서 호스트되는 웹 서비스 및 응용 프로그램은 흔히 단일 응용 프로그램에서 여러 기능을 결합합니다. 그런데 경우에 따라 이렇게 하면 잘 확장되지 않습니다. 또한 많은 웹 응용 프로그램은 Azure 클라우드 서비스 환경에서 작동하지 않는 로컬 디스크 드라이브에 영구적 응용 프로그램 상태를 저장합니다. 기존 웹 응용 프로그램에서 Azure로 마이그레이션할 때 클라우드 컴퓨팅 확장성 및 탄력성을 최대한으로 활용하기 위한 다음과 같은 두 가지 옵션이 있습니다.

Azure 클라우드 서비스는 모든 응용 프로그램을 하나 이상의 역할로 구현합니다. 역할마다 응용 프로그램의 기능의 일부를 수행하는 데 필요한 코드와 구성 정보가 있습니다. 웹 브라우저 또는 기타 HTTP 클라이언트와 직접 상호 작용하는 프런트 엔드 서비스 및 코드 역할입니다. 웹 역할은 Microsoft의 웹 서버인 IIS(인터넷 정보 서비스)에서 실행됩니다. 작업자 역할은 백그라운드 처리 및 지원 작업을 수행합니다. 중간 계층 서비스는 일반적으로 작업자 역할입니다.

역할마다 여러 인스턴스가 있을 수 있습니다. 각 인스턴스는 역할에 대해 작성된 동일한 코드를 실행합니다. 그러나 각 역할 인스턴스는 Azure 데이터 센터에서 별도의 가상 컴퓨터에 상주합니다. 각 역할의 인스턴스에서 사용할 VM 크기를 지정할 수 있습니다. 자세한 내용은 “클라우드 서비스의 크기 구성”을 참조하세요.

역할 간 기능 차이뿐만 아니라, 각 역할은 응용 프로그램의 확장 단위로 사용됩니다. 예를 들어 더 많은 트래픽을 제공하기 위해 웹 역할의 인스턴스를 20개 보유할 수 있습니다. 그런 다음 웹 역할의 요청을 비동기적으로 처리하기 위해 작업자 역할의 인스턴스를 5개만 보유할 수 있습니다. 간단한 ASP.NET, PHP 또는 Node.js 응용 프로그램 또는 웹 서비스를 만들려는 경우 웹 역할만 사용할 수도 있습니다. 클라우드 서비스에서 세부 기능 및 성능 테스트를 수행하는 것이 좋습니다. 이러한 테스트는 응용 프로그램을 프로덕션 환경에 배포하기 전에 최적의 역할 인스턴스 수 및 VM 크기를 결정하는 데 도움이 됩니다. 클라우드 서비스 개념에 대한 자세한 내용은 Azure 개발자 센터Azure 설명서 센터를 참조하세요.

Azure에서 제공하는 사용 가능한 저장소 옵션 활용을 고려합니다. 그러면 응용 프로그램 논리가 단순화되고 클라우드 서비스 성능이 개선됩니다. 응용 프로그램 마이그레이션을 계획하는 동안 각 데이터 저장소 옵션의 제한 사항을 이해하는 것은 매우 중요합니다. 또한 클라우드 서비스에 적합한 데이터 저장소 옵션을 식별하는 방법도 알아야 합니다. Azure에서 사용 가능한 저장소 옵션에 대한 자세한 내용은 “Azure의 데이터 관리 서비스 개요”를 참조하세요.

또한 Azure 캐싱 서비스를 사용하여 Azure 응용 프로그램을 위한 메모리 기반의 고속 저장소를 제공할 수 있습니다. 캐싱은 일시적으로 백 엔드 원본에서 정보를 저장하여 성능을 향상시킵니다. 캐싱은 클라우드에서 데이터베이스 저장소 액세스 트랜잭션에 관련된 비용을 줄일 수 있습니다. 최상의 성능 결과를 위해서는 다음과 같은 두 가지 조건을 만족하는 데이터 센터에 응용 프로그램을 배포하세요.

  • 대부분의 클라이언트에 가장 가까이 있습니다.

  • 저장소 계정 또는 Azure SQL 데이터베이스 인스턴스를 호스트하는 데이터 센터에 가장 가까이 있습니다.

그러나 데이터와 데이터 상주 위치에 대한 사법 또는 법률 문제가 있을 수 있습니다. 이 경우에는 회사 또는 데이터에 더 가까운 데이터 센터를 선택하세요. 자세한 내용은 “Azure SQL 데이터베이스 사용 시 성능 고려 사항”을 참조하세요.

Azure 클라우드 서비스 구현을 시작하기 전에 먼저 Microsoft Azure 구독을 구입해야 합니다. 자세한 내용은 Microsoft Azure 사이트를 참조하세요. 그런 다음 개발 환경을 준비해야 합니다. Microsoft는 .NET, Java, PHP, Node.js, Python 및 Ruby용 언어별 SDK를 제공합니다. 지원되는 프로그래밍 언어 및 플랫폼에 대한 최신 정보는 Microsoft Azure 설명서 센터를 참조하세요. 또한 Azure SDK 및 도구 다운로드 센터를 통해 모든 Azure 클라이언트 라이브러리, SDK 및 명령줄 도구에 액세스할 수 있습니다.

또한 Microsoft Azure는 웹 사이트 및 웹 응용 프로그램 호스팅을 위한 Azure 웹 사이트 서비스를 제공합니다. Azure 웹 사이트는 몇 초 만에 웹 앱을 배포 및 확장할 수 있게 해주는 완전히 관리되는 PaaS(Platform-as-a-Service) 제품입니다. 자세한 내용은 Azure 웹 사이트를 참조하세요.

서로 다른 플랫폼에서 실행되는 클라이언트 응용 프로그램이 관계형 데이터 원본에 연결될 수 있도록 하기 위해 Microsoft는 ODBC를 선택했습니다. ODBC는 Azure SQL 데이터베이스(SQL 데이터베이스)에 연결되는 Native Client 응용 프로그램용 표준 클라이언트 연결 API입니다. SQL Server Native Client OLE DB Provider는 SQL Server 2012에서 마지막으로 제공될 예정입니다. SQL 데이터베이스에서는 이를 지원하지 않습니다.

Windows 또는 Azure에서 응용 프로그램을 작성할 때 .NET Data Provider for SQL Server를 사용하세요. 또는 SQL Server 2008 R2 이상과 함께 제공되는 SQL Server Native Client ODBC 드라이버를 사용할 수 있습니다. 응용 프로그램의 새 버전 및 이후 버전을 개발할 때는 ODBC를 채택하는 것이 좋습니다. OLE DB를 사용하는 기존 응용 프로그램의 경우에는 향후 이러한 응용 프로그램을 ODBC로 마이그레이션하는 것이 좋습니다. OLE DB 응용 프로그램을 ODBC 응용 프로그램으로 변환하는 방법에 대한 자세한 내용은 "OLE DB에서 ODBC로 SQL Server 응용 프로그램 변환"을 참조하세요. OLE DB 사용 중단에 대한 자세한 내용은 ADO.NET 팀에서 제공하는 “Microsoft SQL Server OLEDB Provider 사용 중단 공지”를 참조하세요.

다른 응용 프로그램과 마찬가지로 다중 테넌트, 분산, 클라우드 환경에서 가용성, 재해 복구 및 보안을 처리하도록 응용 프로그램을 설계해야 합니다. 자세한 내용은 “Azure SQL 데이터베이스 사용 시 고가용성 및 재해 복구 고려 사항”Azure 보안 지침을 참조하세요. 응용 프로그램을 Azure에 온보딩하기 전에 소프트웨어 개발 수명 주기의 시작 부분에서 보안 요구 사항을 해결하는 것이 좋습니다.

Azure의 응용 프로그램 개발에 대한 자세한 내용은 “Azure 응용 프로그램 개발”“Failsafe: 복원력 있는 클라우드 아키텍처에 대한 지침”을 참조하세요.

Azure는 클라우드에서 다중 테넌트, 동적, 확장 가능한 플랫폼입니다. 따라서 응용 프로그램 디자인 시 클라우드 관련 모니터링 및 진단 기술을 고려해야 합니다. 소프트웨어 개발 수명 주기의 시작 부분에서 모니터링 및 진단을 고려하는 것이 좋습니다. 기존 모니터링 및 진단 기술을 평가하여, 응용 프로그램을 클라우드에 배포한 후에 이러한 모니터링 및 진단 기술이 적절한 서비스를 제공하는지 확인하세요. 예를 들어, 많은 로그 파일을 생성하는 응용 프로그램의 경우 진단 및 로깅 설정을 조정해야 할 수 있습니다. 조정하면 신속하게 검사하거나 추가 분석을 위해 온-프레미스 환경에 다운로드할 수 있는 작은 로그 파일이 생성됩니다.

다음은 Azure에 사용할 수 있는 몇 가지 문제 해결 도구 및 기술입니다.

  • WAD(Azure Diagnostics): Azure 서비스에서 작업 및 진단 데이터를 수집합니다. Azure 진단에서는 다음과 같은 다양한 데이터 원본의 진단 데이터를 기록합니다.

      • IIS 로그

      • Windows 진단 인프라 로그

      • Windows 이벤트 로그

      • 성능 카운터

      • 크래시 덤프

      • 사용자 지정 오류 로그

      Azure 진단의 로깅 간격을 구성할 수 있습니다. 수집된 정보는 분석을 위해 Azure 테이블 및 Blob 저장소에 지속됩니다. 자세한 내용은 “Azure 진단을 사용하여 로깅 데이터 수집”을 참조하세요.

  • System Center Azure MP(관리 팩): Azure 모니터링 관리 팩을 사용하면 Azure에서 실행되고 있는 응용 프로그램의 가용성 및 성능을 모니터링할 수 있습니다. 자세한 내용은 “Azure 응용 프로그램용 모니터링 팩 가이드”를 참조하세요. Azure 진단 및 System Center Azure 관리 팩을 사용하는 것이 좋습니다. 추가 정보는 System Center 2012: 사설 및 공용 클라우드 전체에서 응용 프로그램 관리 웹 페이지의 비디오에서 확인하세요.

  • Azure 저장소 분석: 로깅을 수행하고 Azure 저장소 계정에 대한 메트릭 데이터를 제공합니다. 이 데이터를 사용하면 요청을 추적하고, 사용 추세를 분석하고, 저장소 계정 문제를 진단할 수 있습니다. 자세한 내용은 “저장소 분석”을 참조하세요.

  • SQL 데이터베이스 연결 관리: 응용 프로그램에서 재시도 논리를 구현하여 오류 코드를 처리합니다. 자세한 내용은 “Azure SQL 데이터베이스 리소스 관리”를 참조하세요.

  • Azure PowerShell Cmdlet: PowerShell에서 직접 Azure 클라우드 및 데이터 관리 서비스를 탐색, 구성 및 관리할 수 있게 해줍니다. 이러한 도구는 Azure 서비스를 사용하는 응용 프로그램을 개발 및 테스트할 때 유용할 수 있습니다. 자세한 내용은 “Azure Cmdlet 참조”를 참조하세요.

  • 클라우드 서비스 기본 사항 참조 솔루션: 이 응용 프로그램은 데이터베이스 지원 Azure 서비스를 빌드하는 방법을 보여 줍니다. 이 데모는 Microsoft Azure CAT(고객 자문 팀)에서 실제 고객과의 작업을 진행하는 동안 습득한 내용을 기반으로 합니다. 응용 프로그램에서의 원격 분석 데이터 수집 및 사용을 비롯한 수평 확장 Azure 응용 프로그램의 기본 구성 요소를 알아보세요. 이 참조 솔루션은 Microsoft Azure의 클라우드 서비스 기본 사항 웹 페이지에 있습니다. 지침에는 TechNet Wiki(클라우드 서비스 기본 사항 Wiki)와 세부 문서가 포함되어 있습니다.

다른 응용 프로그램과 마찬가지로 Azure 클라우드 서비스도 프로덕션 환경에 업로드하기 전에 세부 테스트를 거쳐야 합니다. 기능, 종단 간 실행, 성능, 확장성, 보안 등에 대해 테스트해야 합니다.

자세한 규정 지침은 “Azure 응용 프로그램 개발을 위한 최선의 문제 해결 방법”을 참조하세요. 보충 정보는 “Azure 진단을 사용하여 로깅 데이터 수집"“Azure 응용 프로그램 테스트, 관리, 모니터링 및 최적화”를 참조하세요.

Azure는 기존 응용 프로그램을 클라우드와 통합하고 네트워크 트래픽을 관리하는 데 사용할 수 있는 다양한 네트워킹 기능을 제공합니다. Azure의 기본 네트워킹 및 연결 구성 요소는 다음과 같습니다.

  • Azure 저장소 큐: Azure 저장소 큐는 클라이언트가 액세스할 수 있는 메시지를 저장하는 데 사용될 수 있으며, 역할 인스턴스 간에 신뢰할 수 있는 메시징을 제공할 수 있습니다. 자세한 내용은 “.NET에서 큐 저장소를 사용하는 방법”“저장소”를 참조하세요.

  • Azure Service Bus: Azure 내의 모든 서비스 간 통신에는 Azure 서비스 버스를 사용하는 것이 좋습니다. 또한 온-프레미스 서버와 Azure 간의 통합을 유지하는 데도 Azure 서비스 버스를 사용하세요. 서비스 버스는 응용 프로그램 계층에서 보안 메시징 및 릴레이 기능을 제공합니다. Azure 서비스 버스는 공용 네트워크에서 일반적인 보안 메시징 서비스를 지원하는 클라우드 기반 통신 인프라를 제공합니다. 또한 https://myhostname.servicebus.windows.net과 같은 간단한 통합 네임스페이스를 제공합니다. 또한 Service Bus는 .NET API, REST API 및 WCF 프로그래밍 모델을 지원합니다. 자세한 내용은 서비스 버스 설명서 웹 페이지 및 “Azure 큐 및 서비스 버스 큐 - 비교 및 대조”를 참조하세요.

  • Azure Active Directory: Azure AD(Active Directory)를 사용하여, 클라우드에서 호스트하는 웹 서비스 및 최종 사용자 응용 프로그램에 대해 수평 확장된, 클레임 기반 액세스 제어를 제공하는 것이 좋습니다. Azure Active Directory는 포괄적인 ID 및 액세스 관리 클라우드 솔루션으로서, 핵심 디렉터리 서비스, 고급 ID 관리, 보안 및 응용 프로그램 액세스 관리 기능이 결합되어 있습니다. 또한 Azure AD는 개발자에게 중앙 집중식 정책 및 규칙을 기반으로 응용 프로그램에 대한 액세스를 제어하는 ID 관리 플랫폼을 제공합니다. 또한 이 서비스는 WIF(Windows Identity Foundation)와 통합할 수 있는 기능을 제공합니다. 자세한 내용은 “Azure Active Directory 액세스 제어를 사용하여 웹 사용자를 인증하는 방법”Azure Active Directory 설명서 웹 페이지를 참조하세요.

  • Azure 트래픽 관리자: 트래픽 관리자를 사용하면 여러 호스팅 Azure 서비스 전체에서 들어오는 트래픽의 부하를 분산할 수 있습니다. 동일한 데이터 센터에서 실행되거나 전 세계 다양한 데이터 센터에 걸쳐 실행되는 서비스의 트래픽 부하를 분산할 수 있습니다. 트래픽을 효과적으로 관리하여 응용 프로그램의 높은 성능, 가용성 및 복원력을 보장할 수 있습니다. 자세한 내용은 트래픽 관리자 설명서 웹 페이지를 참조하세요.

  • Azure 콘텐츠 배달 네트워크: Azure CDN(콘텐츠 배달 네트워크)은 개발자에게 콘텐츠 캐싱을 위한 글로벌 솔루션을 제공합니다. 고객에게 가장 가까운 위치에서 콘텐츠를 캐싱하여 최상의 응용 프로그램 환경을 제공할 수 있습니다. CDN은 전략적으로 배치된 위치에서 계산 인스턴스의 정적 콘텐츠 출력과 Azure Blob을 캐싱합니다. 이렇게 함으로써 CDN은 사용자에게 콘텐츠를 배달하는 대역폭을 극대화할 수 있습니다. Azure Platform Management 포털을 통해 콘텐츠 공급자에 대해 CDN 배달을 활성화할 수 있습니다. 자세한 내용은 Azure CDN 설명서 웹 페이지를 참조하세요.

  • Azure 가상 네트워크: Azure 가상 네트워크를 통해 Azure에서 논리적으로 분리된 섹션을 만들 수 있습니다. 그런 다음 IPsec 연결을 사용하여 단일 클라이언트 컴퓨터 또는 온-프레미스 데이터 센터에 이러한 섹션을 안전하게 연결할 수 있습니다. 가상 네트워크를 사용하면 Azure의 확장 가능한 주문형 인프라를 쉽게 활용할 수 있습니다. 또한 Windows Server, 메인프레임 및 UNIX에서 실행되는 시스템을 비롯한 온-프레미스 데이터 및 응용 프로그램에 연결할 수 있습니다. 자세한 내용은 가상 네트워크 설명서 웹 페이지를 참조하세요.

  • Azure ExpressRoute: Azure ExpressRoute를 사용하면 온-프레미스 또는 공동 배치 환경에서 Azure 데이터 센터와 인프라 간에 개인 연결을 만들 수 있습니다. ExpressRoute 연결은 공용 인터넷을 트래버스하지 않으며, 인터넷을 통한 일반 연결보다 보안성이 높으며 더 안정적이고 속도가 빠르며 대기 시간이 짧습니다. ExpressRoute를 사용하면 ExpressRoute 위치(Exchange 공급자 시설)에서 Azure에 대한 연결을 설정할 수 있습니다. 또는 기존 WAN 네트워크(예: MPLS VPN)에서 Azure에 직접 연결할 수 있습니다. 자세한 내용은 ExpressRoute 개요ExpressRoute 설명서 웹 페이지를 참조하세요.

자세한 내용은 네트워크 서비스 웹 페이지를 참조하세요.

클라우드 서비스 또는 응용 프로그램의 개발을 완료하고 나면 이를 패키징 및 업로드하고 Azure에 배포할 준비가 된 것입니다. 다음과 같은 4가지 배포 시나리오가 있습니다.

  • 새 배포

  • 구성 변경

  • 증분형 코드 업그레이드

  • 주요 업그레이드

자세한 내용은 “클라우드 서비스 관리 방법”, “Azure에서 배포 관리”“서비스 관리”를 참조하세요.

Azure 구독 하나를 사용하여 개발, 테스트, QA, 스테이징 등을 지원하도록 여러 배포를 구성할 수 있습니다. 또한 Azure를 사용하면 여러 구독에 액세스하도록 하나의 Azure 계정을 구성할 수 있습니다. 따라서 Azure 응용 프로그램에 대한 별도의 개발 및 테스트 환경(자체 구독 포함)을 만들 수 있습니다. 이 경우 먼저 테스트 구독에 서비스를 배포한 후 프로덕션 구독에 서비스를 배포하는 것을 고려하세요. 서비스를 가동할 준비가 되면 프로덕션 환경으로 이동할 수 있습니다. 클라우드 서비스를 프로덕션 구독에 배포한 후에는 연속 테스트에 준비 환경을 사용할 수 있습니다.

Azure를 사용하면 현재 수요에 맞게 자동으로 수직 확장 또는 축소되도록 응용 프로그램을 구성하여 비용을 최소화할 수 있습니다. 이 기능을 활성화하려면 “자동 확장” 규칙 및 일정을 사용하세요. 자세한 내용은 "응용 프로그램의 크기를 조정하는 방법"을 참조하세요.

참고 항목

표시:
© 2014 Microsoft