[IBM developerWorks] 최적의 클라우드 컴퓨팅 플랫폼 찾기

로그[log] 2010. 11. 18. 07:34



파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음
728x90

원문기사 :
http://www.ibm.com/developerworks/kr/library/wa-cloudflavor/index.html

최적의 클라우드 컴퓨팅 플랫폼 찾기

애플리케이션에 가장 적합한 클라우드 컴퓨팅 플랫폼 선택하기

Brett McLaughlin, Author and editor, O'Reilly Media, Inc.

요약: 클라우드 컴퓨팅에 대한 기본적인 지식을 이해하고 있다면 현시대에 필요한 스킬을 갖추고 있는 셈입니다. 하지만 실제로 애플리케이션을 빌드할 때 어느 플랫폼을 사용해야 할까요? Google과 Amazon 모두 잘 알려져 있기는 하지만 인기가 높지는 않습니다. 그리고 Microsoft 사용자에게 가장 적합한 플랫폼은 무엇일까요? 여러 가지 클라우드 컴퓨팅 플랫폼을 자세히 살펴보고 특정 애플리케이션 요구 사항에 가장 적합한 플랫폼을 선택하는 방법에 대해 설명합니다.




오늘날 "클라우드"는 많은 사람들의 관심을 받고 있다. 기술 컨퍼런스에 참석하거나 프로그래머와 이야기를 나누다 보면 "클라우드 컴퓨팅", "Google App Engine" 및 "Amazon의 호스트 애플리케이션"과 같은 용어가 어느새 화제의 중심으로 떠오르게 된다.


클라우드 컴퓨팅이 무엇인지 알고 있다고 가정하자(클라우드 컴퓨팅에 대한 자세한 정보는 이 기사의 참고자료 섹션 참조). 만약 클라우드 컴퓨팅이 궁극적으로 프로그래밍 언어와 관련된 것이라면 기본적인 이해만으로도 실제 코딩 작업을 수행할 수 있을 것이다. 예를 들어, Java™ 오브젝트에 대한 기본 사항을 이해한 후에는 필요한 내용을 익혀 가면서 실제 작업을 수행할 수 있다.


하지만 클라우드 컴퓨팅은 언어가 아니다. 실제로 하나의 패러다임이다. 클라우드 컴퓨팅이 인터넷의 원격 서버에서 실행되면서 호스팅되는 모든 서비스에 대한 것이라는 점을 이해하고 있다고 하더라도 코딩 작업을 시작하기 전에 여러 가지 사항을 결정해야 한다. 무엇보다도 먼저 클라우드 컴퓨팅에 필요한 플랫폼을 선택해야 한다.


Amazon, Google 및 Microsoft®의 오퍼링과 AppNexus 및 GoGrid와 같은 몇 가지 일회용 솔루션이 있으며 이들은 각각 고유한 특징을 가지고 있다. 즉, 이러한 오퍼링은 단순 비교가 불가능하다. 실제로 다양한 기능 세트를 정리하는 작업은 매우 복잡하고 큰 미로를 탐색하는 것과 같다. 그렇지만 신중한 주의를 기울이면 사용자의 특정 애플리케이션 요구 사항에 따라 결정을 내릴 수 있다.





주요 오퍼링


다양한 프레임워크를 살펴보기 전에 먼저 현실적으로 선택할 수 있는 오퍼링에 대한 기본적인 내용을 이해해야 한다. 이 기사에서는 매우 간략하게 설명하지만
참고자료에서 이러한 선택 사항에 대한 정보를 보완할 수 있다.


Amazon EC2


Amazon EC2는 Amazon Elastic Compute Cloud를 의미한다. "Elastic Compute Cloud"는 쉬운 이름은 아니지만 Amazon의 오퍼링은 매우 유용하다. 본질적으로 웹 서비스인 EC2에서는 클라우드의 수많은 리소스(즉, Amazon에서 호스팅하는 리소스)를 요청하고 사용할 수 있다. 서버에서 프로그래밍 환경에 이르는 모든 것을 사용할 수 있다.


Amazon의 오퍼링은 유연성이 뛰어나고 자유로운 구성이 가능하다. 원하는 서비스를 요청하고 필요에 따라 구성하고 정적 IP 주소를 설정한 후 고유한 보안 및 네트워크를 명시적으로 설정할 수 있다. 다시 말해서, 사용자가 많은 부분을 제어할 수 있다. Amazon의 명성과 사용량에 따라 비용을 지불하는 뛰어난 모델에 힘 입어 EC2는 클라우드 컴퓨팅 분야에서 확고한 입지를 차지하고 있다.




Google App Engine


Google의 App Engine은 상당히 다른 오퍼링임에도 불구하고 기술적으로 Amazon EC2에 필적하는 경쟁 상대이다. Amazon의 장점이 유연성과 제어 가능성(이 기사에서 자세히 설명함)이라면 Google의 장점은 사용하기 쉽고 자동 구성 기능이 뛰어나다는 점이다. App Engine에서는 코드를 작성하고 애플리케이션을 업로드하기만 하면 나머지 모든 작업이 자동으로 처리된다.

Amazon과 마찬가지로 Google 또한 브랜드 인지도가 높다. 하지만 Amazon과는 달리 Google은 초기 일정 수준까지는 무료로 사용할 수 있고 트래픽 용량이 늘어나면서 상당량의 컴퓨팅 리소스를 사용하게 되는 시점부터만 비용이 청구된다. Amazon과의 또 다른 차이점은 Python 중심 아키텍처 및 엔진을 사용한다는 것이다. Google App Engine을 사용하려면 Python을 사용할 줄 알아야 한다. 이는 제한이 되는 것일 수도 있지만 하나의 유용한 작은 조건 정도일 수도 있다.



Windows Azure


Microsoft는 완전히 다른 방식으로 클라우드 컴퓨팅에 접근하고 있다. 과거에 "PC와 Mac을 차별화"했던 것처럼 이번에도 Microsoft는 여러 가지 기능을 갖춘 전문적인 하이엔드 컴퓨팅 환경을 제공하는 데 목표를 두고 있다. Amazon EC2와 Google은 vi에서 Python을 사용하면서 네트워크 프로토콜을 자유자재로 다루는 개발자를 위해 개발된 반면 Microsoft의 Azure 제품은 오직 Microsoft 개발자만을 대상으로 하고 있다. C# 및 SQL Server를 자주 사용하는 개발자라면 Visual Studio에서 개발되어 비주얼 도구 및 비주얼 환경을 제공하는 Azure를 쉽게 사용할 수 있다.


Amazon EC2가 Google App Engine과 다른 것처럼 Windows Azure는 두 오퍼링 모두와 다르다. 무엇보다도 이러한 차이의 핵심은 Azure가 Windows®라는 것이다. Windows 기반 제품인 Azure는 Windows 사용자를 위한 것이며, C#, SQL Server, .NET 및 Visual Studio와 불가분의 관계를 맺고 있다. 게다가 SharePoint와 약간의 CRM 기능도 포함되어 있다. 이쯤 되면 Azure의 모습을 충분히 상상할 수 있을 것이다. Azure를 선택한다는 것은 기능보다는 자신에게 익숙한 플랫폼을 선택하는 것이며 이에 대해서는 잠시 후에 살펴볼 것이다.




기타 오퍼링


지금까지는 EC2, App Engine 및 Azure가 클라우드 컴퓨팅의 "Big 3"로 자리잡고 있다. 그렇지만 클라우드 컴퓨팅 분야에 세 가지 오퍼링 있다고 생각하면 오산이다. 이들 외에도 GoGrid 및 AppNexus와 같은 여러 가지 오퍼링이 존재한다. 이러한 도구들을 아직 모르고 있다고 하더라도 크게 걱정할 필요는 없다. 실제로 Google, Amazon 및 Microsoft에서 오퍼링을 제공하고 있기는 하지만 클라우드 컴퓨팅에 관심이 있는 "일반적인" 개발자라면 더 많은 오퍼링을 살펴보고 자신에게 적합한 오퍼링을 선택해서 사용할 수 있을 것이다. Big 3 이외의 오퍼링을 이미 알고 있다면 이 기사를 더 이상 읽지 않아도 될 것이다.



이러한 오퍼링은 Google, Amazon 및 Microsoft와 다를 뿐만 아니라 각각의 오퍼링 간에도 서로 다른 특징을 가지고 있다. 따라서 이 기사의 나머지 부분에서는 플랫폼에서 제공하는 기능보다는 애플리케이션에 필요한 기능에 따라 플랫폼을 선택해야 한다는 점을 강조해서 설명한다.



이 기사의 나머지 부분에서는 사용자의 기술, 선호 사항 및 애플리케이션 니즈에 대한 여러 가지 기본적인 질문이 제시된다. 각 질문에 대한 응답에 따라 특정 클라우드 컴퓨팅 플랫폼 솔루션이 제안된다. 이 방법은 특정 애플리케이션의 기능과 사용자의 스킬을 고려하여 가장 적합한 플랫폼을 제안하기 위한 것이다.



데이터베이스(및 스키마)에 중점을 두고 있는가?



애플리케이션의 궁극적인 역할은 데이터를 처리하는 것이다. 애플리케이션은 데이터를 제공, 검색 및 구성하며 더 나아가 거의 모든 애플리케이션은 결과적으로 데이터를 저장한다. 이미 데이터베이스를 선택했다면 이는 클라우드 컴퓨팅 플랫폼을 결정하는 데 큰 영향을 미친다.


이제 시작이라면 다양한 선택의 기회가 열려 있다



애플리케이션 빌드를 시작하면서 기존의 데이터가 없는 상태라면 모든 것을 원하는 대로 할 수 있다. 데이터 저장 방법을 유연하게 선택할 수 있으며 대용량의 기존 데이터를 가져오지 않아도 된다. 따라서 이 경우에는 아무런 문제가 되지 않는다. 하지만 대용량의 기존 데이터를 가져와야 한다면 이야기가 달라진다.



숙련된 데이터베이스 프로그래머인가?




특정 데이터베이스에 익숙하거나 특정 데이터베이스만을 사용해야 하는 경우에는 클라우드 컴퓨팅을 사용하는 데 몇 가지 문제가 발생할 수 있다. 특히, Google의 App Engine을 사용할 경우에는 Google의 데이터베이스를 사용해야 한다. 그렇다고 Google의 데이터베이스가 나쁘다거나 사용자의 데이터를 손상시킨다거나 SQL을 사용할 수 없다는 뜻이 전혀 아니다. 하지만 데이터베이스 서버에 대한 미세 조정을 원하고 주로 사용하는 버전의 MySQL 또는 PostgreSQL과 관련된 여러 가지 SQL을 활용하려는 사용자라면 Google이 마음에 들지 않을 것이다.



IBM 및 Amazon Web Services



IBM과 AWS는 공조를 통해 가상 컴퓨팅 환경에서 IBM 미들웨어에 액세스할 수 있는 기능을 제공한다. Amazon EC2 환경에서는 소프트웨어를 사용자의 시스템에 설치하지 않고도 평가 및 사용할 수 있다. 용량을 즉각적으로 조정하여 엔터프라이즈급 애플리케이션을 신뢰할 수 있는 고성능 환경에 구축할 수 있으며 사용한 용량과 시간에 따라서만 비용을 지불하면 된다. EC2에 포함된 미들웨어 오퍼링은 다음과 같다.


  • DB2 Express-C 9.5
  • Informix Dynamic Server Developer Edition 11.5
  • WebSphere® Portal Server 및 Lotus Web Content Management Standard Edition
  • WebSphere sMash

이 서비스는 모든 기능과 옵션을 사용할 수 있는 제품 레벨 코드이다. developerWorks Amazon EC2 cloud computing 페이지에서 이들 제품에 대한 자세한 정보를 확인하고 Amazon Machine Images를 다운로드할 수 있다.


developerWorks의
Cloud computing space에서 여러 가지 클라우드 컴퓨팅 리소스를 볼 수 있다.




이와 관련해서는 Amazon EC2가 큰 장점을 가지고 있다. Amazon 사용자는 기본적으로 자신에게 루트 권한이 있다는 느낌을 받는다. 원하는 모든 것을 설치할 수 있을 뿐 아니라 Amazon S3(Simple Storage Service)에 데이터를 저장할 수도 있고 데이터와 관련된 모든 기능이 제공된다. 명령행 액세스가 제공되므로 원하는 모든 작업을 수행할 수 있다. 이는 곧 데이터베이스 프로그래밍을 수행할 때 사용하던 환경과 거의 비슷한 환경을 구축할 수 있다는 것을 의미한다. 명령행에서 SQL 명령을 테스트하고 터미널 형태의 응답을 받고 데이터 저장소를 기본적으로 운용할 수 있다. 간단한 데이터 작업만을 수행할 경우에는 이러한 기능의 가치가 크게 느껴지지 않겠지만 많은 시간을 들여서 데이터베이스를 배우고 그 작동 방법을 익힌 데이터 전문가에게는 매우 큰 매력이 될 것이다.


대용량 데이터를 가져와야 합니까?


Google의 경우에는 사용 편의성이 강조되기 때문에 명령행에서 간단하게 수행할 수 있는 작업이 App Engine에서는 까다로운 작업이 되기도 한다. Google의 데이터베이스로 데이터를 가져올 경우에는 사용자가 쉽게 해결할 수 없는 오류가 발생할 수 있는 위험성이 있다. 그에 반해 Amazon EC2의 경우에는 명령행 액세스가 지원되므로 여기에서도 다시 한번 장점이 드러난다. 가져오기를 일괄 처리 작업으로 수행한 후 오류를 제거할 수 있으며 이는 권장되는 방법이기도 하다.


그림 1에서는 기본적인 의사 결정 트리를 보여 준다.




그림 1. 현재 데이터베이스에 따른 선택


데이터 유연성이 높은 Amazon EC2 




Python 사용자인가 아닌가?



Python 문제 또한 클라우드 컴퓨팅 플랫폼을 결정하기 위해 응답해야 하는 질문 중 하나이다. 간단히 말해서, Google에서는 Python만 사용할 수 있으며 Google의 모든 기능은 Python을 기반으로 하지만 Amazon은 그렇지 않다. Amazon에서도 Python 또는 기타 언어를 사용할 수 있기는 하지만 실제로는 Google App Engine에서도 Python을 효과적으로 사용할 수 있다. 따라서 간편한 Python 솔루션을 원한다면 Google App Engine이 가장 좋은 선택이 될 것이다.



하지만 그렇지 않고...


UNIX에 익숙한 사용자라면


앞에서 몇 번 언급했듯이 제어 기능과 명령행을 사용하기를 원하고 프로그램 컴파일 및 실행 이외의 모든 Python 도구까지도 사용하려면 Amazon EC2를 선택하는 것이 좋다. Amazon의 경우에는 명령행에서 Python 코드를 실행할 수 있다. 이는 EC2의 장점이자 약점이다. 텍스트를 파일로 저장한 후 Python에 전달하는 작업과 시스템 오류를 디버깅하고 명령행을 사용하는 데 익숙하다면 Amazon의 매력에 빠지게 되겠지만 Amazon과는 달리 과도한 "도움"을 제공하려는 Google의 경우에는 적응하기가 쉽지 않을 것이다.


C 언어 확장을 사용하고 있다면


"C 언어 확장"을 사용하고 있지 않거나 또는 C 언어 사용에 부담을 느낀다면 다음 섹션으로 이동하자. 하지만 Python에서 C 코드를 자주 사용하는 사용자라면 Google에서 이러한 확장이 지원되지 않는다는 고려해야 한다. Google에서는 Python 표준 라이브러리의 사용도 크게 제한된다. Google의 데이터 저장소, 페치 및 메일 서비스를 위한 API가 제공되기는 하지만 표준 라이브러리의 많은 기능이 지원되지 않는다. (예외적으로 Django는 지원된다.) 다시 한번 제어 기능을 살펴보자. 숙련된 Python 전문가라면 Amazon이 가장 적합할 것이다. 웹 서비스를 처음 시작하고 Python을 사용할 줄 알지만 언어에 대한 관심이 많지 않다면 Google을 선택하는 것이 좋다.

그림 2에서는 이 모든 사항을 고려하여 결정하는 과정을 보여 준다.


그림 2. Python 사용자인가? 어느 정도의 "추가 기능"을 원하는가?


Python을 쉽게 사용할 수 있지만 몇 가지 제한 사항이 있는 Google



Microsoft 사용자라면 Azure를 선택하자



간단한 질문에 답해보자. 주요 플랫폼으로서의 Microsoft를 사용하여 시작 및/또는 끝나는가? 만일 그렇다면 Azure를 선택하는 것이 좋다. 이제 Microsoft를 사용하여 "시작"하고 "끝난다"는 말의 실제 의미를 살펴보자.



Microsoft가 출발 지점인가?



하드코어 Microsoft 개발자인가? 프로그래밍 작업의 2/3 이상을 Visual Studio의 Visual Basic, Visual C# 또는 Silverlight 등과 관련된 기술을 사용하여 수행하는가? 만일 그렇다면 Windows Azure가 가장 적합한 오퍼링이다. Microsoft 제품을 전체 개발 프레임워크로 사용하고 있으므로 Azure를 편하게 사용할 수 있을 것이다. 그 보다 더 중요한 점은 Amazon/Google을 사용하기 위해서는 Microsoft 제품이 아닌 여러 가지 다른 언어와 기술을 배우거나 익혀야 한다는 것이다.



Microsoft가 목표 지점인가?



이 질문은 중복되는 질문이 될 수도 있을 것이다. Microsoft의 VB/C#/및 기타 언어를 주로 사용하는 대부분의 개발자는 Microsoft 플랫폼을 목표로 한다. 기존 Microsoft 사용자만을 목표로 삼고 있고 상호 호환성을 심각하게 고려하지 않는다면 Windows Azure가 최적의 솔루션이 될 것이다. Azure는 Microsoft 플랫폼과의 호환성이 뛰어나므로 Azure를 통해 호스팅되는 클라우드 애플리케이션과 기존 Microsoft 애플리케이션을 효과적으로 통합할 수 있다. 일반적인 Microsoft 사용자의 경우, 기존 Word, Internet Explorer 및 기타 데스크탑 기반 애플리케이션과 비슷한 느낌을 주고 호환성도 갖춘 클라우드 기반 애플리케이션에 많은 가치를 부여한다.


Azure에는 제한 사항이 많다고 오해하고 있지는 않는가?


Azure에 대한 오해를 피하기 위해 분명히 짚고 넘어가야 할 부분이 있다. 즉, Azure는 출발 지점이나 목표 지점으로서의 Windows 플랫폼으로 제한되지 않는다는 점을 알아야 한다. 모든 플랫폼에서 Azure 기반 애플리케이션에 액세스할 수 있으며 C# 이외의 언어(예: Python 및 Perl)로도 개발할 수 있다. 클라우드 컴퓨팅의 장점은 언어 및 서버 기술 또한 클라우드에 있다는 것이다. 다시 말해서, 대부분의 사용자에게 적합하다.

Mac OS X 시스템을 대상으로 하는 Python 개발자가 Windows Azure를 사용한다고 하면 조금 우스울 것이다. 현실성이나 실용성을 따져보아도 결코 현명한 방법이 아니다. 완성된 Azure의 성능과 알려지지 않은 몇 가지 새로운 기술을 비교해보면 Azure의 순수 전문가 주의로 인해 Microsoft 중심적 클라우드 기반 환경에서 비Microsoft 기술을 사용하려는 마음이 들 수도 있을 것이다. 그러나 이는 잘못된 비교이다. 동등하게 발전한(공평하게 말해서, 발전하고 있는) Google 및 Amazon의 오퍼링과 Azure를 비교해야 한다. 이렇게 비교하게 되면 많은 부분에서 동등한 성능을 제공하는 플랫폼을 사용할 수 있다는 것을 확신할 수 있을 것이며 Google 및 Amazon의 오퍼링이 여러 플랫폼과 비Microsoft 기술에 더 적합한 특성을 지녔다는 것도 알게 될 것이다. 그림 3에서는 이 내용을 시각적으로 보여 준다.


그림 3. PC를 사용하는가? Azure가 적합하다


Microsoft를 대상으로 하는 개발에 적합한 Azure



그러나 나는 Azure를 사용하고 싶지 않다.



반대의 경우도 마찬가지로 성립한다. Microsoft 플랫폼을 대상으로 하는 Microsoft 개발자는 Azure를 사용하지 않아도 된다. Amazon EC2의 유연성과 성능 또는 Google App Engine의 "사용 편의성"을 쉽게 활용할 수 있다. 앞에서 언급한 대로 Amazon과 Google은 둘 다 상당히 인상 깊은 기능을 제공한다. 여기에서 "왜?"라는 질문이 나온다. 새로운 기술을 배운다는 것이 분명 재미 있고 충분한 가치를 지니고 있는 일이다. 그러나 새로운 기술을 배우기 위한 것이 아니라면 사용하기 편리한 Microsoft 클라우드가 이미 존재하는 상황에서 모든 Microsoft 솔루션을 빌드하여 비Microsoft 클라우드에 배치해야 할 합당한 이유를 찾기가 어렵다. 이는 작업량을 늘리는 결과만 초래할 것이므로 그보다는 애플리케이션을 다듬거나 다른 애플리케이션을 빌드하는 것이 더 나을 것이다.






얼마나 많은 리소스가 필요한가? 자금은 얼마나 가지고 있는가?



Google App Engine은 초기 몇 달 동안 다음과 같은 두 가지 면에서 Amazon EC2와 구별되었다.


  1. Google App Engine은 플랫폼을 무료로 사용할 수 있었지만 Amazon EC2는 그렇지 않았다.
  2. Google App Engine에는 용량 제한이 있었지만 Amazon EC2에는 없었다(적어도, 실질적인 차원에서).

지난 2월에 Google은 초기 사용량에 대한 무료 정책을 그대로 유지하면서도 무료 리소스 크기를 초과할 경우 비용을 부과하는 기능을 추가했다. 이는 Google에게 큰 수익을 가져다 주었으며 실제로 리소스-제한(resource-limited)에서 리소스-관심(resource-interesting)으로의 전환이 이루어졌다.



리소스-관심이란 무엇인가?





Amazon과 Google의 비용 비교

Google App Engine과 Amazon EC2에 대한 실질적인 비용 분석은 쉬운 작업이 아니다. 먼저 Google의 경우에는 일정 수준의 사용량까지 무료로 사용할 수 있다. 그런 다음 발신 및 수신 대역폭, CPU 시간, 데이터 저장 용량 및 이메일 발신 수에 따라 애플리케이션의 사용량에 대한 비용이 청구된다. Amazon의 경우에는 비슷한 리소스와 IP 리맵핑에 대한 비용이 처음부터 청구된다.

굳이 계산기를 사용하지 않더라도 Amazon이나 Google을 선택하는 데 있어서 비용이 중요한 요소가 되지 못한다라는 점은 명확하게 드러난다. 시간이 지나면 Google의 무료 사용량 수준에 머물러 있지 않는 한 두 플랫폼 모두 일반적인 애플리케이션에 대해 비슷한 수준의 비용이 청구된다.


이 기사에서 사용하고 있는 "리소스-관심"이라는 용어는 일정 수준까지는 무료로 제공된 후 초과분에 대해 비용이 청구되는 Google과 같은 모델을 의미한다. 먼저 Google App Engine은 처음 시작할 때 무료로 사용할 수 있다. 이는 비용 한푼 들이지 않고도 App Engine을 사용해서 여러 가지 작업을 실행하고 애플리케이션을 공개적으로 전개해 볼 수 있다는 것을 뜻한다. 바로 이 점이 "무료 시작" 방법의 큰 장점이다.



하지만 이 모델의 경우에는 관심이 높아지면서 대역폭 사용량도 늘어난다. 그런 다음 무료 사용량 이상의 용량으로 애플리케이션을 확장할 수 있다. Amazon EC2에서도 필요에 따라 리소스를 확장할 수 있다. 따라서 사용량에 따른 비용 지불 모델을 사용하는 한 Amazon의 오퍼링과 Google의 오퍼링 사이에는 비용 차이가 많이 발생하지 않는다.






사용량에 따라 비용이 청구될 경우 Google의 장점은 무엇인가?



Google의 무료 시작 방법은 Amazon에 비해 한 가지 좋은 장점이 있다. 비용을 지불하기 전에 약간의 조정 작업과 리소스 정리 작업을 수행할 수 있다. 신중한 프로그래머라면 초기 버전의 애플리케이션에 일반적으로 다음과 같은 두 종류의 문제가 있다는 것을 알고 있다.

  1. 기능 버그. 기능이 작동하지 않거나 올바르게 작동하지 않기 때문에 수정이 필요하다.
  2. 리소스 버그. 연결이 닫히지 않거나 풀링이 사용되지 않거나 애플리케이션을 지속적으로 방해하기 때문에 수정이 필요한 문제가 발생할 수 있다.

Google 방법의 장점은 문자 그대로 실수에 대한 비용 지불을 시작하기 전에 이러한 종류의 리소스 버그를 추적할 수 있다는 것이다.

지금까지의 결론은 Google이 약간 더 우세한 편이지만 결정을 내리는 데 영향을 주지는 않을 것이다.


Windows Azure의 과금 체계



App Engine 및 EC2와 마찬가지로 Azure도 사용량에 따라 비용이 청구된다. Azure 서비스를 사용하는 사람이 많을수록 비용도 늘어난다. 또한 App Engine 및 EC2와 동일하게 Azure도 계산 시간(CPU 사용량), 대역폭(송신 및 수신) 및 저장 용량을 기준으로 가격이 결정된다. 트랜잭션(예: GET 및 PUT)에 따라서도 비용이 부과된다.



물론 이 가격은 아직까지 발표되지 않은 내용이므로(2009년 3월 기준) 정확한 비용을 알려면 조금 더 기다려야 한다. 필자의 예상으로는 Google App Engine 및 Amazon EC2보다 약간 더 높게 책정되겠지만 큰 차이를 보이지는 않을 것이다. Google 또는 Amazon과 마찬가지로 Windows Azure의 경우에도 가격이 결정을 내리는 데 중요한 요소로 작용하지는 않을 것이다.




결론: 단순하게 그러나 너무 단순하지는 않게



이제 간단하게 결론을 내려보자. 예를 들어, Python을 좋아하는 초보자라면 Google을 선택하고, 전문가라면 Amazon EC2를 선택하고, Microsoft 사용자라면 Azure를 사용하는 것이 좋다. 이 간단한 문장에는 여러 가지 의미가 들어 있다. 결과적으로 결정을 내리는 데 필요한 정보가 이것뿐이었다면 실망할 수도 있을 것이다. Amazon은 강력한 기능을 제공하지만 솔루션을 빠르게 얻으려면 Google을 선택하는 것이 좋다. 소요 시간도 짧고 오류도 많이 발생하지 않는다.



Amazon을 사용하려면 수행하고 있는 작업이 무엇인지 알아야 한다. 몇 권의 책을 들춰보거나 얄궂게도 Google(App Engine이 아닌 검색 엔진)을 사용하여 필요한 정보를 검색해야 할 수도 있다. 그러나 추가 작업을 수행하고 나면 더욱 향상된 기능과 거의 무제한에 가까운 리소스를 사용할 수 있다.


간단히 말해서, Azure는 Windows 플랫폼을 위한 최고의 선택이다. 일부 완전하지 않은 부분이 있기는 하지만 Microsoft 프로그래머에게 익숙한 환경을 제공할 뿐만 아니라 애플리케이션 사용자의 플랫폼과 동일한 플랫폼에서 편안하게 작업할 수 있다.
 

그렇다면 무엇을 해야 할까? 좋은 프로그래머가 항상 하는 것처럼 배울 수 있는 모든 도구를 배운 후 필요한 시기에 적절한 도구를 사용한다. 이렇게 하면 항상 준비된 자세를 갖출 수 있다. Google App Engine부터 시작한 후 어느 정도 익숙해지면 동일한 애플리케이션을 Amazon EC2에도 전개해보자. Visual Studio를 열고 C#으로 수행할 수 있는 작업을 알아본 후 애플리케이션을 Azure에 전개하자. 세 가지 주요 플랫폼 모두를 경험한 후에는 특정 애플리케이션의 특정 니즈를 충족해야 할 때 효과적으로 대응할 수 있다.




참고자료

교육

제품 및 기술 얻기

  • Google의 App Engine 홈 페이지에서 App Engine 키를 등록하고, SDK를 다운로드한 후 App Engine 작업을 수행할 수 있다.

  • Amazon Web services 웹 사이트에서 Amazon EC2(Elastic Compute Cloud)에 등록할 수 있다.

  • Windows Azure는 Microsoft에서 개발한 클라우드 컴퓨팅 오퍼링이며 확장성이 높고 관리하기가 쉬운 잘 만들어진 Microsoft의 설명서도 제공된다.

토론

필자소개

Brett McLaughlin의 사진

Brett McLaughlin은 논픽션 부문의 훌륭한 베스트셀러 작가이다. 컴퓨터 프로그래밍, 홈 씨어터, 분석 및 설계 등에 대한 책을 저술하였으며 100,000부 이상의 판매고를 올렸다. 거의 10년 동안 기술 서적에 대한 저술, 교정 및 출판 활동을 하고 있으며 워드 프로세서를 이용한 저술 작업 이외의 시간에는 기타를 연주하거나 자녀들과 술래잡기를 하거나 부인과 함께 Arrested Development를 보면서 즐거운 일상을 보낸다. 최근 저서인 Head First Objent Oriented Analysis and Design은 2007 Jolt Technical Book 상을 수상했다. 오래 전에 집필한 Java and XML은 Java 언어에서 XML 기술을 사용하는 방법을 잘 설명한 책 중 하나로 남아 있다.

728x90