아키텍트2009. 10. 9. 15:51
오늘은 마이크로소프트의 클라우드 컴퓨팅 전략에 대해 살펴보려고 합니다.

클라우드 컴퓨팅은 메인프레임 컴퓨팅, 클라이언트/서버 컴퓨팅, 웹 시대를 넘어서 3 Screens (웹, 데스크탑, 모바일, TV, 기타 장치)을 아우르는 컴퓨팅을 의미한다고 할 수 있습니다. 3 Screen & 클라우드를 함께 이해해야 한다는 의미지요.
또한, 애플리케이션을 코드와 데이터로 나누었을 때 전통적인 방식 On-Premise, 호스팅, 클라우드, 즉 3가지 형태 중에 어딘가에 코드와 데이터를 배포할 것인가, 즉 선택권이 많아진 것으로 이해해야 합니다. 코드는 클라우드, 데이터는 On-Premise, 반대로 코드는 On-Premise, 데이터는 클라우드로 갈수도 있겠죠. 코드, 데이터 (2가지), On-Premise, 호스팅, 클라우드 (3가지)가 혼합되면 총 6가지 정도의 조합이 나올 수 있겠네요.
요지는 고객의 비즈니스 상황, 필요에 따라 그 위치가 달라진다는 것입니다.

이렇게 되면 재무, 인사 등의 Critical한 데이터 및 시스템은 On-Premise, 개발 및 테스트 환경은 호스팅, CRM 및 이메일시스템은 SaaS 형태로 사용할 수 있게 되는 것입니다. 굉장히 유연한 시스템이 되는 것이죠.

이렇게 다양한 시스템이 연계되는 데 꼭 필요한 것이 무엇일까요? 인증시스템의 연동/통합이 필요합니다. 분산환경에서의 Federated Identity, 이를 위해 제공되는 것이 분산 인프라인데, 클라우드 플랫폼에서 제공할 수 있습니다. 예를들면, 마이크로소프트의 .NET 서비스가 되는 것이죠.
위에서 설명한 데이터의 저장은 Windows Azure의 Storage, DBMS는 SQL Azure가 되는 것이죠. 3 Screen간의 데이터 동기화, 애플리케이션 동기화 서비스는 Live 서비스 (Live Mesh)가 제공합니다.

그런데, 클라우드 서비스를 제공하는 회사가 마이크로소프트 하나 일까요? 그렇지 않습니다. 많은 벤더가 제공하고 있죠. 각 벤더의 클라우드 서비스는 서로 연동될 수 있어야 합니다. 즉, 상호운용성이 제공되어야 하고, 결국 오픈 스탠다드 기술로 이루어져야 한다는 것이죠. XML, SOAP, REST 등으로 이루어진 이유입니다.

굉장히 유연하고 좋은 것은 알겠는데, 클라우드 상에 애플리케이션을 개발하기 위해 전혀 새로운 언어, Framework을 사용해야 한다면, 즉 진입장벽이 높다면 많은 개발자들이 참여하기 어려울 것입니다. 따라서, 쉽게 진입할 수 있도록 하기 위해 일단 언어의 장벽을 낮췄습니다. C# 이외에 PHP, Ruby, Java, Python 등의 언어를 사용하여 개발할 수 있게 된 것이죠. (C#, PHP는 이미 지원, 나머지 언어는 추가 예정)
자, 그러면 어떤 형태로 이루어지는지 궁금하시죠? 이게 참 재미있습니다. 저는 개발을 손 놓은지 오래된 사람입니다. 제가 매뉴얼을 가지고 30분도 안돼서 http://davidshin.cloudapp.net 이 사이트를 만들었습니다. 물론 아무것도 들어가 있는게 없는, 텍스트와 이미지만 들어간 사이트이지만, 이 사이트를 기존 방식 그래도 만들어서, 로컬 환경에서 클라우드와 똑같이 애뮬레이션 한 후, 게시 절차를 통해 마이크로소프트의 데이터센터로 이관하는 것이 서비스 포탈을 통해 아주 직관적으로 이루어지게 되는 것이죠.

결국, 개발서버, 테스트서버, 개발환경을 위한 프레임웍 제공, 즉 아무것도 필요없이 개발도구 하나 (Visual Web Developer, Express Edition은 무료)만 가지고 클라우드 애플리케이션을 만들어서 서비스가 가능해지는 것이죠. 정말 패러다임의 변혁이라고 할 수 있는 것이죠.

바로 이것이 마이크로소프트의 클라우드 컴퓨팅 전략의 흐름입니다.


Posted by 조이트리