'클라우드'에 해당되는 글 1건
- 2010.07.14 :: cloud computing에 대한 생각 2
2007년 인터넷의 핵심 키워드는 웹2.0이라 할 수 있습니다. 그럼 2008년의 핵심 키워드는 무엇이 될까요? 현재까지는 cloud computing이라고 생각합니다. 구글의 CEO인 에릭 슈미츠는 연초부터 구글 플랫폼을 중심으로 하는 cloud computing에 대해 자주 언급하고 있습니다.
그럼 cloud computing은 무엇일까요? 웹2.0이라는 용어가 처음 나왔을 때에도 RIA, 집단지성 등 수많은 정의와 모호함이 있었습니다. cloud computing도 마찬가지 입니다. wikipedia에는 cloud computing을 다음과 같이 정의하고 있습니다.
Grid computing, Utility computing, Distributed computing, SaaS(Software as a service), Network computing, 가상화 등에서 설명하고 있는 개념과도 비슷합니다. 그럼 cloud computing 이라는 용어가 이런 과거의 기술을 또 다른 미사어로 포장한 마케팅적인 단어일까요? 제 생각은 그렇지 않습니다. 앞에서 설명한 모든 개념을 포함하지만 조금은 다른 차원에서 접근이 필요한 단어라고 생각합니다.
이번 칼럼에서 cloud computing을 플랫폼적인 관점에서 분석해보겠습니다. 플랫폼이라고 하는 것은 사용자 애플리케이션이 수행되는 하드웨어 구성과, 소프트웨어 아키텍처를 의미합니다. 우리가 가장 많이 사용하고 있는 플랫폼이 마이크로소프트의 윈도우 플랫폼입니다. 오피스 프로그램이나 포토샵 프로그램 실행을 위해 인텔 또는 AMD CPU가 장착된 x86 계열의 하드웨어가 필요하고 그 위에 Windows라는 소프트웨어 플랫폼이 필요합니다. 아래와 같은 그림이 되겠죠.
플랫폼이 틀려지면 애플리케이션도 다르게 만들어야 합니다. 예로 Windows환경에서 수행되는 프로그램을 수정하지 않고 Linux나 MacOS에서는 수행시킬 수는 없습니다.
최근 몇년 동안 또 다른 개념의 플랫폼이 등장하고 있습니다. 구글은 몇년전부터 지속적으로 웹브라우저를 사용자 애플리케이션이 수행되는 플랫폼으로 만들려는 시도를 계속하고 있습니다. 이미 몇개의 필수 프로그램은 웹브라우저 플랫폼 상에서 실행되고 있습니다. MS의 핵심 애플리케이션에 대응하는 gmail, Word, Excel등과 같은 google office(아직은 데스크탑 환경 수준에 많이 못 미치지만) 등이 있습니다.
cloud computing은 웹브라우저를 플랫폼으로 사용하고자 하는 시도의 연장선상에 있다고 생각합니다. 다만 사용자 애플리케이션이 실행되는 환경이 웹브라우저만 아니라 모든 디바이스로 확장될 뿐입니다. Network computing, ubiquitous computing 개념과 비슷합니다. 프로그램을 사용하는 최종 사용자 입장에서 프로그램이 실행되는 플랫폼은 웹브라우저 또는 다른 디바이스에서 제공하는 실행 환경이 됩니다. 하지만 그 프로그램을 만드는 개발자 입장에서는 어떨까요? 웹 프로그램과 마찬가지고 두 군데로 나누어집니다. 서버단에서 수행되는 부분과 사용자의 디바이스에서 수행되는 부분입니다. 사용자 디바이스에서의 플랫폼은 사용자 디바이스별로 제 각각일 것입니다. 물론 표준화된 브라우저를 탑재하면 동일한 플랫폼이 될 수도 있겠죠.
제가 관심을 가지는 부분은 서버 부분입니다. 브라우저에서 수행되는 포토샵, 워드, 엑셀, MP3 플레이어등 기존의 데스크탑 환경에서 수행되는 모든 프로그램을 웹 기반 만들어야 한다고 생각해보세요. 그럼 어떤 운영환경을 구성할까요? 웹서버, 애플리케이션 서버(Tomcat, IIS), DB(Oracel, MySQL 등), 파일시스템(NAS, SAN 등), 개발언어(JAVA, .NET, PHP 등) 등 많은 고려 사항이 있습니다.
개발이 완료된 다음 사용자에게 delivery는 어떻게 할까요? 웹 기반이니까 사용자 디바이스에 직접 설치할 필요는 없지만 서버 측에 많은 컴퓨팅 자원이 필요하게 됩니다. 오피스 계열의 프로그램의 경우 전세계 모든 PC 사용자를 대상으로 서비스 해야 하는 상황도 발생하게 됩니다. 어떤 경우는 몇몇 사용자들만 대상으로 할 수 있겠죠. 여기서 cloud computing의 필요성이 나타나게 됩니다.
데스크탑 기반의 애플리케이션이 아닌 웹 기반(서버에서 수행되는) 애플리케이션을 수행하기 위한 운영 플랫폼을 cloud computing이라고 볼 수 있습니다. 앞에서 설명한 웹 기반 오피스와 같은 제품을 사용자에게 delivery하기 위해서는 엄청나게 많은 스토리지와 컴퓨팅 자원이 필요하게 됩니다. 전 세계의 모든 회사원, 학생들로부터 문서 저장에 대한 요구와 철자검사 등과 같은 요청이 초당 수만/수십만 이상으로 발생하게 됩니다. 대부분의 회사에서 구축되어 있는 컴퓨팅 자원으로는 불가능한 일입니다. cloud computing을 주장하는 회사들을 보면 이런 규모의 컴퓨팅을 능력을 보유하고 있는 회사들입니다. MS, Google, Amazon, IBM 등입니다. 그 중에 Google이 가장 우수한 환경을 구성하고 있다고 생각합니다. Google은 이미 백만대 정도의 서버를 운영하고 있으며 전세계를 대상으로 하는 많은 서비스를 보유하고 있으며 사용하는 사용자 또는 최대 규모라 할 수 있습니다.
다음 그림은 제가 생각하는 앞으로 다가올 컴퓨팅 플랫폼에 대한 예상입니다.
cloud computing은 위의 그림에서와 같이 수많은 컴퓨터를 이용하여 거대한 스토리지와 컴퓨팅 자원을 제공하는 역할을 수행하게 됩니다. Google의 경우 Google File System, Bigtable, Chubby, Map&Reduce 등을 통해 이런 인프라를 이미 구성하였으며 수십만 ~ 수백만대의 서버를 운영하는 노하우도 이미 축적된 상태입니다. 이런 것들이 바로 MS가 가장 무서워하는 것입니다. 현재 MS와 Google은 서로 비즈니스 영역이 틀리지만 싸우고, 견제하는 것도 이런 이유때문입니다. MS가 Yahoo를 인수할려는 최근의 움직임도 최근 Yahoo가 Hadoop을 포함한 Google 인프라에 필적할 만한 것을 만들어 가고 있는 것도 하나의 이유일 것입니다. wikipedia의 cloud computing에 대한 내용중 "See Also" 부분에는 다음과 같은 목록이 있습니다.
그러면 기업의 컴퓨팅 환경을 생각해 봅시다. Google 오피스를 사용하고 gmail을 이용하여 회사내의 기밀 문서를 보관, 전송할 수 있을까요? 물론 작은 기업은 충분히 그럴수 있지만 어느 정도 규모가 있는 회사는 절대로 인터넷 기반 애플리케이션을 사용하지 않을 겁니다. 그럼 기업 시장은 여전히 테스크탑 기반으로 남아 있을까요? 제 생각에는 인터넷 기반 컴퓨팅 플랫폼이 기업내 인트라넷의 핵심 플랫폼으로 구성되고 그 위에 이미 인터넷에서 실행되도록 만들어진 다양한 응용 프로그램들이 탑재되는 형태가 될 것입니다. 말 그대로 기업 내부적으로 소규모 환경이 구성되는 것입니다. 기업은 자신들이 주로 사용하는 응용 애플리케이션이 최적으로 돌아갈 수 있는 플랫폼을 선택하게 됩니다. 이것은 물론 일반 사용자도 동일합니다. 지금도 Linux 보다 Windows가 더 많이 사용되는 것도 같은 이유 때문이죠. 그렇게 되면 어떤 플랫폼이 더 많은 응용 애플리케이션을 제공하느냐가 기업의 선택 조건이 됩니다. Google 플랫폼이나 미래의 MS가 내놓을 인터넷 컴퓨팅 플랫폼 중에서 고민하겠죠.
너무 이상적인 모습인가요? Google 오피스가 현재의 데스크탑 오피스 수준의 기능을 제공하고 구글이 오피스를 만드는데 사용된 많은 컴포넌트를 SDK 형태로 제공하고 Google 내의 기본 서비스들을 쉽게 다른 응용 애플리케이션에서 사용할 수 있는 API를 제공하는 그 순간이 바로 이런 컴퓨팅 환경이 일반화 되는 시기일 것입니다. Google은 이미 Android, Search API, Chart API, Gadget API, Calendar API, Map API , Web Toolkit, Album API 등 많은 API를 오픈하여 제공하고 있습니다.
미래의 컴퓨팅 플랫폼 시장을 장악하는 회사가 결국은 살아남게 될 것이고 그 가운데 cloud computing 이라는 개념이 핵심 기술로 사용될 것이며 결국 MS와 Google의 양분하는 형태로 갈 것이라는 예상을 해 봅니다.
또 한번의 중요한 변화의 시기에 우리는 과거와 같이 아무런 준비를 하고 있지 않습니다. 그저 변화가 끝난 다음에 그 변화에 적응할려는 모습만 있습니다. 소프트웨어 산업의 변방에서 중심으로 이동하기 위해서는 이런 변화에 적극적으로 참여하여 변화를 주도해야 합니다.
오랜만에 쓰는 긴 칼럼이라서 무척 힘드네요. 몇번 정리한다고 마음만 먹고 못하고 있었는데 제대로 정리했는지 모르겠습니다. 앞에서 언급했듯이 cloud computing이라는 것이 아직 정의가 제대로 되지 않았기 때문에 많은 다른 의견이 존재할 것입니다. 새로운 의견 많이 제시해 주세요.
Posted by 김형준
'클라우드' 카테고리의 다른 글
Cloud Computing, SaaS, SOA, 유틸리티 컴퓨팅의 진정성 (5) | 2010.07.14 |
---|