cloud computing에 대한 생각
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(아직은 데스크탑 환경 수준에 많이 못 미치지만) 등이 있습니다.

제가 관심을 가지는 부분은 서버 부분입니다. 브라우저에서 수행되는 포토샵, 워드, 엑셀, MP3 플레이어등 기존의 데스크탑 환경에서 수행되는 모든 프로그램을 웹 기반 만들어야 한다고 생각해보세요. 그럼 어떤 운영환경을 구성할까요? 웹서버, 애플리케이션 서버(Tomcat, IIS), DB(Oracel, MySQL 등), 파일시스템(NAS, SAN 등), 개발언어(JAVA, .NET, PHP 등) 등 많은 고려 사항이 있습니다.
개발이 완료된 다음 사용자에게 delivery는 어떻게 할까요? 웹 기반이니까 사용자 디바이스에 직접 설치할 필요는 없지만 서버 측에 많은 컴퓨팅 자원이 필요하게 됩니다. 오피스 계열의 프로그램의 경우 전세계 모든 PC 사용자를 대상으로 서비스 해야 하는 상황도 발생하게 됩니다. 어떤 경우는 몇몇 사용자들만 대상으로 할 수 있겠죠. 여기서 cloud computing의 필요성이 나타나게 됩니다.

다음 그림은 제가 생각하는 앞으로 다가올 컴퓨팅 플랫폼에 대한 예상입니다.


너무 이상적인 모습인가요? 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 김형준