Windows Azure Platform에 대한 소개

요즈음 클라이언트 측 운영 체제는 Windows 7으로, 서버 측 운영 체제는 Windows Server 2008 R2로 모든 이목이 집중되고 있습니다. 양쪽 모두 획기적으로 개선된 기능들로 중무장하여 IT 업계를 흔들고 있고, 오랫만에 “이것이 Windows다” 라고 이야기할 수 있을만큼 선전하고 있습니다.


 


이런 추세와는 별개로, 꾸준히 Microsoft가 공을 들여서 선보이고 있는 기술이 하나 있는데, 바로 Windows Azure에 관한 것입니다. Windows Azure는 클라우드 컴퓨팅 기술에 대한 Microsoft의 구현 (Implementation)입니다.


 


Windows Azure는 지난 PDC (Professional Developer Conference) 2008 행사에서 처음 선보였고 현재는 지속적으로 CTP (Community Technology Preview)의 형태로 관련 개발 도구를 제공하고 있습니다. Windows Azure는 Visual Studio 2010과 함께 완전한 개발 도구가 출시될 것으로 현재는 예견되고 있습니다.


 


이야기로는 Windows Azure가 클라우드 컴퓨팅 플랫폼이라는 말이 참 많이 알려져있지만, 구체적으로 어떤 내용들이 포함되고 어떻게 활용될 수 있는지에 대해서 정리해볼 필요가 있다는 생각으로 글을 써봅니다.


 


Windows Azure는 다음의 세 가지 구성 요소로 이루어집니다.


 


Windows Azure: Windows Azure는 클라우드 컴퓨팅 환경 위에서 구동되는 클라우드형 운영 체제입니다. 기존에 우리가 학술적으로 배우고 이해하였던 운영 체제의 개념은 실제 물리적인 컴퓨터 하드웨어 한 대와 실제 사용자 한 명 사이의 창구 개념이었습니다만, Windows Azure에서 소개하는 클라우드형 운영 체제는 조금 다릅니다. 기존 운영 체제의 역할과는 달리, 서비스와 사용자 사이를 중계하는 데에 사용하는 것이 클라우드형 운영 체제의 의미가 될 것입니다.


 


Windows Azure는 다음과 같은 구조를 가지고 있습니다.


 



 


위의 그림은 Windows Azure Fabric의 구조를 설명하고 있습니다. Fabric은 사전적인 의미로 천조각을 뜻합니다만, 여기서의 의미는 사용하고자 하는 컴퓨터의 인스턴스 개체 수를 뜻합니다. 그렇게 보았을 때, Windows Azure 개발자는 Fabric을 필요한 수만큼 할당받아, Fabric Agent와 통신하면서 실제 응용프로그램을 작성하게 됩니다.


 


할당받은 Fabric을 활용하게 되면, 모든 작업은 계산 작업 (Compute)과 저장 작업 (Storage)으로 구분할 수 있습니다. 계산 작업에서는 웹 서비스를 처리하는 것과 백그라운드 작업을 수행하는 것을 가상 머신을 통해서 처리하며, 저장 작업에서는 흔히 생각할 수 있는 BLOB (일반 바이너리 파일이나 데이터)이나 간단한 테이블, 데이터 큐 같은 것들을 저장할 수 있습니다.


 


Windows Azure를 사용한다는 것은 쉽게 생각하면, 기존의 웹 호스팅과 유사합니다. 실제로 Windows Azure를 이용하여 개발하는 응용프로그램 모델은 HTTP를 통하여 통신하기 때문에 더욱 그러합니다. 하지만 어떻게 개발하는지에 따라서 확장 가능성이 더욱 커지고, 이전보다 더욱 풍부한 소프트웨어를 마음껏 개발할 수 있는 것이 중요한 차이점입니다.


 


Windows Azure로 호스팅할 수 있는 응용프로그램의 종류는 생각보다 다양한데, 내부적으로 IIS 7.0과 .NET Framework 3.5 SP1을 사용하기 때문입니다. 더불어서, FastCGI를 지원하므로 PHP와 같은 웹 프로그래밍 언어로 작성된 웹 응용프로그램도 얼마든지 호스팅이 가능합니다. 그리고, 이 환경 안에서 실행되는 .NET Framework 코드들은 Full Trust 환경에서 실행이 가능하므로 비관리 코드 (C/C++ 등으로 작성한 DLL이나 운영 체제의 API들)를 자유롭게 호출할 수도 있습니다.


 


자세한 내용은 http://www.microsoft.com/windowsazure/windowsazure/ 를 참고하십시오.


 


SQL Azure: SQL Azure는 Microsoft SQL Server를 기반으로 제공되는 클라우드형 RDBMS 서비스입니다. 데이터 보안을 완벽하게 유지해야 하는 시나리오가 아니라면, 급증하는 데이터베이스에 대한 요구 사항을 손쉽게 수용할 수 있는 것이 가장 큰 매력입니다.


 


참고로, Windows Azure가 제공하는 Storage 서비스와는 차이가 있습니다. Windows Azure 서비스의 Storage 서비스는 RDBMS와는 무관한 것이며, 응용프로그램에 영속성을 부여하기 위한 목적이 강합니다.


 


SQL Azure가 SQL Server를 기반으로 제공되는 서비스이므로, 당연히 우리가 기존에 사용해 오던 SQL Server Management Tool을 그대로 SQL Azure에서도 사용할 수 있습니다. 그리고 보안 패치나 각종 성능 향상이 자동으로 이뤄지므로 많은 고민 거리들을 머릿속에서 지울 수 있습니다. 그리고 기존에 사용하던 ODBC도 연동이 가능하므로, 일반 데스크톱 응용프로그램에서도 환경에 가변적이지 않은 완벽한 데이터베이스 솔루션을 사용할 수 있습니다. (심지어 VC++ 6.0으로 개발했던 프로그램일지라도 말입니다.) 그리고 PHP 개발자들의 경우, 멀리가서 DB를 찾지 않아도 됩니다. (PHP 전용 프로바이더가 제공됩니다.)


 


자세한 내용은 http://www.microsoft.com/windowsazure/sqlazure/ 를 참고하십시오.


 


Microsoft .NET Services: Microsoft .NET Services는 Windows Azure 위에서 구현된 서비스로, 서로 다른 응용프로그램 사이에 통일된 커뮤니케이션 채널을 만들어서 같은 내용을 공유하고, 송신하거나, 수신할 수 있도록 도와주는 서비스입니다. 여기에는 보통의 텍스트, XML 문서, 그래픽, BLOB과 같이 일상적으로 많이 사용하는 데이터 종류들이 모두 포함됩니다. 다음은 상세한 구조에 대한 그림입니다.


 



 


그림에서 보여지는것처럼, Windows Azure 플랫폼을 기초로 하는 .NET Service Bus는, 서로 다른 응용프로그램을 현대 IT 환경에서 사용하는 다양한 제약 사항들 (방화벽, NAT 등)을 건너뛰고 응용프로그램 사이에 커뮤니케이션 채널을 만드는 과정을 보여주고 있습니다.


 


뿐만 아니라, .NET Service Bus는 아래와 같이 Access Control Service에 대한 내용도 소개하고 있습니다. Access Control Service를 통하여 보안 정책을 설정하고 관리한다면, 의도하지 않았거나 차단 정책에 포함해야 할 상대를 정확히 파악하고 관리하여 서비스 보안에 만전을 기할 수 있습니다. 그리고 무엇보다도, Windows Azure 플랫폼 위에서 실행되므로 다른 Windows Azure 플랫폼과 연동하기가 편리합니다.


 



 


자세한 내용은 http://www.microsoft.com/windowsazure/dotnetservices/ 를 참고하십시오.


 


향후에도 더욱 편리하고 클라우드 컴퓨팅 환경에 필요한 솔루션들이 더 등장할 것입니다만, 이 글을 작성하는 현 시점에서는 이와 같은 서비스들이 선을 보이고 있습니다. 앞으로의 발전 방향이나 추세가 더욱 기대되는 플랫폼입니다.


 


Windows Azure는 현재 CTP 단계에 있으며, 이에 따라 다음과 같은 제한 사항이 있습니다.



  • 총 컴퓨터 사용 가능 시간: 총 2000 시간 (가상 머신 기준)

  • 총 사용 가능 저장소 용량: 총 50GB

  • 총 트래픽 허용량: 매일 20GB 이내

그리고 실제로 서비스가 상용화되면 다음과 같이 가격이 매겨질 것임을 발표한 바 있습니다.



Windows Azure를 테스트해보고 싶으신 분들은 http://www.microsoft.com/windowsazure/getstarted/ 의 내용을 참고하시어 필요한 SDK와 서비스 신청을 완료하실 수 있을 것입니다.


 

Windows Azure Platform에 대한 소개”에 대한 2개의 생각

댓글 남기기