클라우드 이해와 개발환경의 변화
몇 해전부터 클라우드는 미래를 주도할 IT 기술중 하나로 빠지지 않고 등장하고 있습니다. IDC에 따르면 클라우드 서비스 시장은 2009년 174억 달러에서 2013년에는 442억달러 (원화로 약 50조)에 달할 것으로 전망합니다. 클라우드 시장이 커지는만큼 클라우드 컴퓨팅을 구현하기 위한 기술과 서비스들도 다양해지고 세분화되고 있습니다.
클라우드라는 용어에 포함된 개념들이 많다보니 클라우드를 바라보는 시각은 보는 관점에 따라 달라서 혼란스럽기도 합니다. 이는 클라우드가 하나의 실체라기보다는 탄력적이고 측정가능한 서비스, 온디맨드 서비스, 유비쿼터스 네트워크, 가상화된 자원 풀, 플랫폼 등의 특징을 갖는 서비스와 솔루션을 모두 포함하는 개념으로 볼 수 있기 때문입니다.
클라우드 서비스는 SaaS, Paas, Iaas로 크게 구분할 수 있습니다. SW 서비스 지향적인 SaaS는 응용 어플리케이션과 솔루션을 제공함으로 바로 사용할 수 있는 특징을, PaaS는 개발환경, 데이터 연산 및 매시업을 할 수 있는 플랫폼(인프라)적 환경을 제공하고, IaaS는 서버, 저장공간, 네트워크와 같은 IT자원을 제공하여 호스팅 서비스를 제공하는 특징을 지니고 있습니다.
아마존, 구글, MS, 애플과 같은 글로벌 플레이어들이 클라우드 플랫폼과 서비스 개발에 열을 올리고 있는 것은 모바일 시대에 클라우드가 서비스의 중심으로 등장하기 때문입니다. OS플랫폼을 통하여 구축된 생태계에서 콘텐츠와 서비스들을 고착화(Lock-in)시키기 위해서는 클라우드 플랫폼의 역할이 중요합니다. 사용자에게 보유하고 있는 여러 단말에서 개인화된 N스크린 서비스를 제공해주고, 개발자에게는 단말간의 동기화, 인증, 통신 서비스를 제공하여 강력하고 다양한 어플리케이션을 만들어 낼 수 있는 환경을 제공하기 때문입니다.
그동안 전형적인 웹기반 어플리케이션 개발 아키텍쳐가 어플리케이션과 웹서버, 데이터베이스, OS로 이루어졌다면 클라우드 기반 개발에서는 미들웨어와 개발환경은 PaaS가 데이타베이스와 OS와 같은 인프라는 IaaS가 담당하기 때문에 개발자는 어플리케이션 개발에 집중하면 됩니다. 수많은 오픈된 API 서비스가 존재하기 때문에 다양한 서비스를 불러다 매시업을 통해 새로운 어플리케이션도 간단하게 만들어낼 수 있습니다. 또한 모바일은 고정된 데스크탑에서 자유로운 이동성과 유비쿼터스한 온라인 접속을 제공함으로써 장소와 시간라는 컨텍스트(context)에 따라 어플리케이션의 가치가 달라질 수 있는 새로운 환경을 제공하고 있습니다. 개발자는 컴퓨터와 인터넷만 사용할 수 있다면 글로벌한 클라우드 모바일 서비스를 바로 만들고 운영할 수 있는 개발환경을 갖게 된 것입니다.
클라우드 기반에서 개발하기 위해 알아야 할 것은
클라우드 기반 개발에서는 IT 자원, 개발, 테스트, 운영 환경이 제공되기 때문에 개발자에게 time to market에게 보다 유리해집니다. 클라우드 개발 플랫폼을 통해 소스관리와 빌드, 배치를 직접 할 수 있으며 오픈소스도구들을 통하여 대규모 부하 테스트도 수행해볼 수 있습니다. 소규모로 스타트하는 기업들에게는 IT 인프라와 개발도구에 대한 투자없이 이러한 개발환경을 갖는다는 것은 매력적일 수 밖에 없습니다.
현재 SW 플랫폼 기반 클라우드 서비스에서 두각을 나타내고 있는 기업들은 구글, 애플, 마이크로 소프트가 있습니다. 아마존은 SW 플랫폼이 아닌 IaaS에서 PaaS로 서비스를 확장하고 있습니다. 온라인이 아닌 패키지 SW로 막대한 돈을 벌던 마이크로소프트에게 클라우드는 비지니스 모델의 변화를 의미합니다. 모바일에서 구글과 애플에게 밀리고 있는 마이크로소프트는 클라우드 기술과 인프라 투자에는 가장 많은 돈을 쓰고 있습니다. 그럼에도 MS는 리눅스와 오픈소스를 지원하지 않았던 탓에 시장에서 큰 각광을 받아오지 못하였던 것이 사실이고 모바일 태블릿을 주도할 원도우 8과 애저, 오피스365를 내세워 클라우드 시장에서 도약을 꿈꾸고 있습니다. 구글 앱 엔진을 통하여 PaaS 시장을 주도하고 있는 구글은 파이썬과 자바 기반의 클리우드 서비스를 구축하고 구글의 방대한 인프라와 웹기반 서비스를 통하여 쉽고 빠르게 앱을 개발할 수 있는 개발환경을 제공합니다. 애플은 아직까지는 iCloud를 중심으로 개인화된 스토리지 서비스에 치중하고 있습니다. 그러나 아이튠과 앱스토어를 중심으로 가장 강력한 앱 시장을 보유하고 있으며 향후 애플 TV를 선보이며 애플 디바이스간에 동기화를 통해 차별화된 UX와 서비스를 만들어낼 수 있는 경쟁력을 갖추고 있습니다.
일반적으로 SW 플랫폼 기반 클라우가 제공하는 서비스들은 6가지 정도로 요약해 볼 수 있습니다. 현재까지 클라우드 서비스의 주된 서비스 용도는 1.가상 저장공간와 2.컴퓨팅 클라우드, 3. 데이터 스트리밍과 메시징 통합관리 서비스라고 서비스라고 할 수 있습니다. 점차 클라우드 개발 환경이 보편화된다면 4,5,6번의 서비스들의 활용이 높아질 것으로 기대됩니다. 특히 오픈 API를 통하여 매시업 서비스를 잘 개발한다면 서버 사이드 기술에 대한 이해없이도 훌륭한 클라우드 서비스를 개발해낼 수 있습니다. DB, File sharing, Logging, email, Security, Error management와 같은 인프라 서비스뿐만 아니라 모바일을 위한 국내외 오픈 API가 많이 존재합니다. 스마트 모바일 앱개발센타에는 모바일을 위한 API가 잘 정리되어 있습니다.
클라우드 기반 애플리케이션의 성공 사례나 서비스가 수없이 많이 존재하고 있습니다. 3천만명 이상의 사용자를 보유하고 있는 에버노트(Evernote)는 얼마전 7천만 달러의 펀딩에 성공하며 1조원 이상의 기업가치를 인정받은 상태입니다. 에버노트 이전에 2009년까지많은 사용자들에게 사랑을 받았던 노트 앱으로 백승찬씨가 만든 어썸노트(Awesome Note)가 있었습니다. 아이폰에서 환상적인 UI를 제공하며 앱스토어 1위 앱으로 각광을 받았지만 유비쿼터스 메모리를 지향하며 클라우드 서비스를 통해 다양한 디바이스에서의 동기화를 제공하는 에버노트에게 밀려난 상태입니다. 기존에는 한 두명의 개발자가 에버노트와 같은 대용량 스토리지와 사용자 인증, 동기화, 검색 엔진 기능을 제공한다는 것은 상상할 수 없는 일이었습니다. 그러나 클라우드 개발 환경이라면 가능합니다. 수십기가 바이트의 무료 스토리지를 제공하는 여러 클라우드 서비스들의 오픈 API와 플랫폼에서 제공하는 기반 서비스를 잘 활용한다면 말입니다.
클라우드 개발환경은 개발자에게 멋진 밥상을 차려주었습니다. 개발자는 잘 차려놓은 밥상에서 그저 맛있게 먹고 기막힌 서비스를 사용자들에게 제공하면 됩니다. 그러나 어떤 영화든지 현실과의 차이가 있게 마련이고, 모든 배우들이 다 상을 타는 것도 아닙니다. 아직 클라우드 기반 서비스에는 기술적인 제약사항들과 안정성에 문제가 있습니다. 그리고 개발자에게 분산 개발과 플랫폼에 대한 공부가 필수적입니다. 기존 웹 어플리케이션을 그냥 클라우드에 얹어 놓으면 클라우드의 장점을 놓치고 실망하기 쉽습니다. 클라우드는 마술이 아닙니다. 다만 잘만 활용한다면 분명 마술을 부릴 수 있는 탄탄한 기반은 되어줄 수 있습니다.
글: 황순삼
출처: http://swprocess.egloos.com/2873555