Hello Windows Azure / Windows Azure Platform의 이해

Cloud 2010. 5. 16. 15:00 Posted by 알 수 없는 사용자

안녕하세요. Visual Studio 2010 팀 블로그에 새로 참여하는 새내기, Visual C# MVP 남정현입니다. 데브피아 C# 포럼 SYSOP으로 활동 중이기도 하고, 데브피아 오프라인 세미나를 통해서 .NET 커뮤니티 개발자 여러분들과도 몇 번 인사드렸던 적이 있었는데, 이번에 VSTS 2010 팀 블로그에서 인사를 드리게 되었습니다. 반갑습니다. :-)

요즈음 클라우드 컴퓨팅에 관해서 이곳 저곳에서 이야기도 많이 회자되고 있는 것을 볼 수 있습니다. 2008년 후반에 Buzz Keyword로 급부상했던 아이템이 점차 트렌드로 바뀌어가고 있는 추세인데, 여러 유수 IT 기업들이 클라우드 컴퓨팅에 대한 다양한 해석과 아이디어를 더하여 자신들만의 플랫폼 구축에 열과 성을 다하고 있습니다. Microsoft에서도 지난 2월, 미국, 유럽, 일부 아시아 국가를 대상으로 Windows Azure Platform을 정식으로 런칭하였습니다.

VSTS 2010 팀 블로그를 통하여 제가 연재하게 될 Article Series인 "Hello Windows Azure"의 내용은, Windows Azure Platform에서 실행되는 응용프로그램을 Visual Studio 2010을 통하여 개발하는 과정을 주로 소개하는 내용으로, Visual Studio 2010 이외의 다른 IDE를 활용한 개발 방법 및 Windows Azure Platform 기반의 상호 운용성에 대한 주제는 저의 블로그 (http://www.rkttu.com/) - 또는 - 저의 개인 메일 (rkttu nospam rkttu dot com)을 통하여 질문, 토론, 의견 등을 받고자 합니다. 많은 관심 부탁드립니다.

Windows Azure Platform 개요

Windows Azure Platform은 Microsoft Data Center 위에서 실행되는 Public Cloud Platform으로, 응용프로그램을 호스팅하고 실행하는 기능을 제공하는 Windows Azure, 관계형 데이터베이스 (RDBMS) 데이터를 호스팅하고 제공하는 SQL Azure, 분산 컴퓨팅 기술의 구현과 Hybrid Cloud Platform의 구현을 가능하게 하는 AppFabric, 실시간으로 제공되는 동적 데이터 카탈로그를 구현할 수 있는 SQL Data Services (Codename: Dallas) 등으로 구성됩니다.

그 외에 부수적으로는 Windows Azure Platform과 조합하였을 때 훨씬 더 효과적으로 사용할 수 있는 Microsoft의 다른 Web SDK 및 온라인 서비스들 (예: Facebook SDK, Windows Live ID 및 Windows Live 관련 SDK)을 접목한다면 더욱 사용성이 편리하고 우수한 클라우드 기반 응용프로그램을 만드실 수 있습니다.

위의 그림에서 보여지는 것처럼, Windows Azure Platform은 핵심 인프라를 기반으로하여, End User들에게는 실제 클라우드 응용프로그램이 제공하는 서비스를 활용할 수 있게 하고, 개발자들에게는 Visual Studio 및 기존에 자신이 사용하던 IDE를 이용하여 Cloud Application을 개발할 수 있게 하고, 호스팅되는 Cloud Application의 재량이지만, SOAP, REST, XML-RPC 등의 통신 프로토콜을 통하여 기존의 On-Premise 기반 소프트웨어에서도 클라우드 응용프로그램의 이점을 누릴 수 있게함을 보여줍니다.

특히, Visual Studio는 이 블로그를 찾아주시는 여러분들께서 제일 많이 애용하시는 개발 도구일 것입니다. 익숙한 프로그래밍 언어 (C#, VB.NET, F#)들을 활용해서 최신의, 그리고 강력한 컴퓨팅 환경 위에서 구동 가능한 응용프로그램을 자유롭게 개발하실 수 있다는 것을 뜻합니다. 아직까지 국내에 정식 출시되지 않은 서비스이지만, Windows Azure가 실제로 어떻게 동작하고, 어떤 절차를 거쳐서 개발이 이루어지는지에 대해서 먼저 아실 수 있다면 그 또한 좋은 이득이 되지 않겠는가 하는 생각입니다.

Windows Azure에 대하여

아래 그림은 Windows Azure Platform을 이루는 주요 구성 요소들을 Layer별로 표현한 모식도입니다. 아래 그림에서 몇 가지 핵심적인 요소들을 살펴보겠습니다.


Windows Azure는 Windows Azure Platform에서 운영 체제에 해당하는 인프라 구성 요소입니다. 내부적으로 Windows Server 2008 R2 x64를 Guest OS로 사용하여, Hypervisor 및 Load Balancer를 기반으로 외부에서 발생하는 요청을 항상 고성능 / 실시간으로 처리하고 결과를 내보낼 수 있도록 돕습니다. Windows Azure는 응용프로그램을 게시하고 실행할 수 있는 Compute 서비스와, 인스턴스 및 응용프로그램의 개수나 종류에 관계없이 동일한 영속성을 부여하기 위한 Storage 서비스를 제공합니다.

Compute 서비스를 통하여 실행되는 Windows Azure 응용프로그램은 보통 여러 개의 역할 (Role) 구성 요소가 동시에 실행됩니다. Role 하나에는 하나 이상의 Virtual Machine Instance가 복제되어 서비스를 담당하게 됩니다. 이 때, Load Balancer가 하는 일은, 실행되는 Virtual Machine Instance의 네트워크 부하, CPU 부하 등을 측정하여 현 시점에서 제일 최적의 성능을 낼 수 있는 Instance가 처리를 대행하도록 연결해주는 일입니다. Compute 서비스를 통하여 실행할 수 있는 Role의 종류는 크게 두 가지인데, Web Role과 Worker Role이 있습니다.

Web Role은 IIS를 내장하고 있는 OS 템플릿을 바탕으로 구축됩니다. IIS를 이용하여 기본적으로는 ASP.NET 응용프로그램을 호스팅할 수 있게 되어있습니다. 여기에 IIS 7.x 이후부터는 Fast CGI를 지원할 수 있게 되어 PHP, Perl, Python 등 대중의 인기를 많이 받는 새로운 웹 프로그래밍 언어까지 더할 수 있고, 특별히 Windows Azure SDK for Visual Studio에서는 Windows Azure용 Fast CGI를 개발할 수 있는 템플릿도 제공하고 있어서 더욱 편리하게 웹 응용프로그램을 개발할 수 있는 것이 특징입니다.

Worker Role은 OS의 핵심 기능을 템플릿으로 하여 구축됩니다. 별도의 기본 서비스 없이, 최소한의 운영 체제의 기능을 이용하여 고속의 연산 처리나 백그라운드 응용프로그램 처리 작업을 개발할 때에는 유용하게 쓰일 수 있습니다.

012345678910


동일하게 복제된 여러 Virtual Machine Instance는, 장애나 Load Balancer의 판단으로 내부적으로 외부의 응답을 처리하는 Instance가 계속 바뀌게 됩니다. 이에 따라, 여러 Instance들이 동일한 내용을 보고 처리할 수 있게 하기 위해서는 외부적인 저장소가 필요한 데, 이 때 사용할 수 있는 것이 바로 Storage 서비스를 통하여 제공되는 Table, Queue, BLOB Storage입니다. Table Storage는 행과 열로 구성된 2차원 행렬 타입의 테이블 자료 구조를 구현하고, Queue Storage는 응용프로그램간 실시간 메시지 교환을 목적으로 사용하는 FIFO (First In First Out) 타입의 큐 자료 구조를 구현하며, BLOB Storage는 파일 크기에 관계없이 대용량의 BLOB (Binary Large Object)를 저장하고 로드할 수 있도록 한 것입니다. 특별히 BLOB Storage의 경우, BLOB Storage의 파일을 외부에서 안정적으로 다운로드할 수 있도록, CDN (Contents Delivery Network) 서비스와 연계하는 기능을 제공합니다. 이 글을 작성하는 시점에서 CDN 서비스와의 연동은 아직 CTP (Community Technology Preview) 단계에 머물러 있습니다.


그리고 최근에는 Windows 7, Windows Server 2008 R2 이후부터 본격적으로 Native Format으로 자리잡은 VHD File을 이용하여 Win32 I/O API를 통한 파일 입/출력을 가능하게 하는 Windows Azure Drive API가 새롭게 런칭되었습니다. Windows Azure Drive API를 이용하여 VHD를 생성하고, 마운트하는 기능을 제공하며, VHD 파일 내부적으로는 NTFS 파티션을 자동으로 생성합니다. Windows Azure Drive와 BLOB Storage 사이의 가장 큰 차이점을 꼽는다면, Windows Azure Drive는 CreateFile 같은 Win32 API로 파일 입/출력이 가능한 저장소이고, BLOB Storage는 외부에 파일을 직접 노출하거나, 서로 다른 시스템간에 파일을 교환할 수 있다는 것입니다. 상황과 조건에 따라서 적절한 방법을 택할 수 있을것입니다.

다음 시간에는

이번 첫 Article에서는 Windows Azure Platform에 대한 개요와 Windows Azure의 기본적인 구성 요소에 대해서 살펴보는 내용을 다루었습니다. 다음 시간에는 Windows Azure Platform 서비스를 신청하고 활용하는 방법을 소개하고, 몇 가지 실제 Windows Azure 기반 응용프로그램 및 개발 사례들을 소개하도록 하겠습니다.

감사합니다. 즐거운 하루 되세요. :-)

이미지 파일 인용: Microsoft Cloud Platform - David Chou / Microsoft