Home > 열린마당 > 공개SW 소식

공개SW 소식

2012년 02월 13일 (월)

-  출처 : http://www.imaso.co.kr

ⓒ 월간 마이크로소프트웨어


이번 시간에는 개발자가 사용할 수 있는 다양한 클라우드 서비스를 구체적으로 살펴본다. 주요 구현 기술에 대한 이해와 컴퓨트, 스토리지 서비스의 종류와 사용 방법 그리고 각종 응용 서비스 사례를 알아본다. 또 개발자에게 도래한 새로운 클라우드 시대에 대한 전망과 현황도 함께 살펴본다. 


최재규 magicsoft7@gmail.com

스마트TV, 스마트칩, 스마트폰 그리고 하이브리드 플랫폼을 거쳐 클라우드 기반 PaaS 시스템을 개발하고 있다. 최신 소프트웨어 관련 기술에 관심이 많고 자료 정리 및 공유를 좋아한다. 요즘은 다양한 주제에 대해 사람들과 의견을 공유할 수 있는 SNS 활동에 관심이 많으며, 여행과 나지막한 산에 오르는 것을 즐기는 개발자다. 현재, GTUG 서울 운영자로 활동하고 있다.


IaaS, PaaS 등 클라우드 구현에 필요한 기술은 상당히 다양하며 그 구현 방식 역시 복잡하다. 그렇지만 개발자 입장에서 클라우드 기반 구현 기술은 상대적으로 간단하다. 왜냐하면 특정 WAS(Web Application Server)에 접속해 값을 조회한 다음 사용할 클라우드 자원을 가져오기 때문이다.


클라우드 기반 구현 기술
개발자들에게 공개된 클라우드 기술은 대부분 Open API를 사용해 특정값을 조회하고, 해당 특정값을 서버에 업데이트하는 형태로 제한된다. Open API는 주로 SOAP, XML, JSON, Javascript 등의 웹 기술에 기반을 둔 프로그래밍 명세서로 REST, XML-RPC, SOAP 등으로 구현된다. 

서로 다른 영역의 Open API를 결합해 특정 서비스를 구현하는 방법을 매시업(Mash Up)이라고 부른다. 매시업 구현에 필요한 기술로는 RIA, Ajax, Web Protocol(SOAP, REST), RSS, ATOM 등이 사용된다. 

개발자에게 클라우드 플랫폼은 다음 세 가지 기회를 제공한다.

 - 컴퓨트 서비스 : 컴퓨터
 - 스토리지 서비스 : 하드디스크
 - 각종 SaaS 서비스 : 네트워크

컴퓨트 서비스는 가상의 서버를 제공하는 기술로 IaaS와 PaaS 솔루션이 결합된 형태를 가지고 있다. 대표적인 컴퓨트 서비스로 아마존의 EC2와 마이크로소프트의 윈도우 애저(Windows Azure)를 얘기할 수 있다. 아마존 EC2는 IaaS에 가까운 가상 서버를, 윈도우 애저는 PaaS에 가까운 가상 서버를 제공한다. 

컴퓨트 서비스는 컴퓨터 또는 서버를 개발자가 사용할 수 있는 환경으로 제공하는 기술이다. 버추얼 박스(Virtual Box)나 VM웨어를 사용하면 개인 컴퓨터에 윈도우, 리눅스 등 다른 운영체제를 설치해 사용할 수도 있다. 다시 말해 컴퓨트 서비스는 이러한 사용 패턴을 클라우드 영역으로 확장한 형태이며, 클라우드 환경에 설치된 버추얼 박스라고 생각하면 이해하기 쉽다. 그리고 컴퓨트 서비스 영역에 사용되는 기술은 거의 모든 프로그래밍 기술들이다. 

스토리지 서비스는 개인 컴퓨터에 설치된 하드디스크라고 생각하면 된다. 예를 들어 100GB 용량을 갖는 하드디스크가 탑재된 컴퓨터를 쓰다 보면 스토리지 용량을 늘려야 할 경우가 발생한다. 이때 새로운 하드디스크를 구매해 컴퓨터에 직접 연결하거나 별도의 외장 하드디스크를 연결해 부족한 저장 공간을 보완한다. 

아마존은 이와 유사한 서비스를 클라우드상에서 제공한다. 예를 들어 아마존 EC2에 설치된 100GB 저장 공간을 갖춘 윈도우 서버에서 작업을 하다가 스토리지가 부족하면 EBS(Elastic Block Store)를 사용해 새로운 하드디스크를 추가한다. 만약 대용량 데이터를 저장하거나 다양한 영역에 저장된 정보를 쉽게 갖다 쓰고 싶다면 아마존 S3(Simple Storage Service)을 사용하면 된다. S3은 마치 외장 하드디스크처럼 대용량 정보를 보다 싸고 쉽게 여러 곳에 연결해 사용할 수 있게 해준다. 

<그림 1> 컴퓨터 구조와(좌)와 클라우드 개념(우)

컴퓨트 서비스를 우리가 일반적으로 사용하는 컴퓨터 구조와 비교해 살펴보자. 컴퓨터에는  CPU, 메모리, 하드디스크가 들어있다. 컴퓨터 운영체제는 CPU, 메모리, 하드디스크를 사용해 특정 작업을 수행한다. 만약 추가적인 하드디스크가 필요하면 외장 하드디스크를 연결해 데이터를 저장하는 구조다. 

이제 클라우드를 생각해보자. 클라우드는 컴퓨터들의 집합이다. 클라우드용으로 사용되는 서버는 개인용 컴퓨터보다 훨씬 강력한 CPU와 대용량 고속 메모리, HDD를 탑재하고 있다. 이런 서버들은 가상 환경으로 통합돼 서버 내 스토리지의 운영체제 이미지가 탑재돼 작동한다. 

예를 들어 20GB 크기의 스토리지와 4GB 용량의 메모리 그리고 2코어의 CPU가 할당된 리눅스 이미지를 KVM(Kernel-based Virtual Machine) 같은 가상화 환경에서 구동한다고 가정하자. 만약 고속 스토리지 100GB가 필요하다면 SAN 같은 장비에서 필요한 영역을 추가로 받아 마운트한 다음 사용한다. 

또 대용량 데이터를 저장하고 싶을 경우에는 Swift 같은 장비에서 영역을 추가로 확보해 데이터를 기록하면 된다. 이 내용을 아마존으로 비유하면 서버에 할당받은 리눅스 이미지를 아마존에서는 AMI(Amazon Machine Image)라고 하며, 고속 스토리지 100 GB는 EBS(Elastic Block Store), 대용량 저속 스토리지는 S3(Simple Storage Service)이라고 부른다.

클라우드는 수많은 SaaS 서비스를 제공한다. 지도나 사진, 동영상 스트리밍을 제공하며 페이스북, 트위터 등의 각종 SNS 서비스도 제공된다. 이러한 SaaS 서비스는 주로 Open API 형태로 제공되며 네트워크를 기반으로 한 다양한 통신 프로토콜로도 제공된다. 개발자는 SaaS에서 제공되는 각종 Open API를 조합해 새로운 서비스를 만들 수 있다.
지금부터 대표적인 컴퓨트, 스토리지, SaaS, SNS 서비스 제공 업체와 기술을 살펴보자.

컴퓨트 서비스
컴퓨트 서비스는 최근 들어 가장 주목받고 있는 클라우드 기술이다. 과거엔 특정 인터넷 서비스를 구축하려면 직접 서버를 구매해 운영하거나 IDC 호스팅 서비스를 받아야 했다. 이 경우 초기 세팅이나 운영비용에 어려움이 수반됐다. 컴퓨트 서비스는 가상화 기술과 쓰는 만큼 요금을 지불하는 유틸리티 기능을 기반으로 저비용 고효율 구조를 제공한다.

아마존 서비스
현시점에 가장 대표적인 컴퓨트 서비스 제공 업체는 아마존의 AWS다. <그림 2>는 AWS가 제공하는 제품 및 서비스다. 아마존은 컴퓨트 서비스, CDN, DB, 스토리지, 메시징 등 다양한 클라우드 서비스를 제공한다. 

<그림 2> 아마존 컴퓨트 서비스

컴퓨트 서비스는 EC2와 MapReduce, Auto Scaling 기능이 제공된다. EC2는 AMI(Amazon Machine Image)를 이용해 컴퓨트 서비스를 처리한다. EC2의 컴퓨트 서비스가 어떻게 실행되는지 이해를 돕기 위해 먼저 버추얼 박스를 살펴보자.

<그림 3> 버추얼 박스 vmdk

버추얼 박스는 가상의 운영체제를 실행하기 위해 <그림 3>과 같은 관리 화면을 제공한다. 만약 윈도우 운영체제를 하나 더 띄우고 싶다면 윈도우가 설치된 vmdk 파일을 만들어 처리하면 된다. vmdk 파일로는 컴퓨터에서 제공되는 모든 기능을 설정할 수 있다. 

아마존도 버추얼 박스와 마찬가지로 AMI에 가상 컴퓨터의 환경을 세팅해 운영체제를 구동한다. AMI 파일에 대해서는 관련 홈페이지(http://aws.amazon.com/amis)를 참고하자(<그림 4> 참조). 아마존은 현재 윈도우, 리눅스, 유닉스 등의 다양한 운영체제 이미지를 지원한다. 

<그림 4> AMI

개발자 입장에서 보면 아마존은 클라우드 업계 중 가장 주목받는 컴퓨트 서비스를 제공한다. 그 이유는 아마존이 제공하는 강력한 개발자 도구 때문이다. 아마존 개발자 도구 홈페이지(aws.amazon.com/code)를 방문하면 아마존이 제공하는 각종 서비스의 SDK를 확인할 수 있다.

<그림 5> 아마존 SDK

현 시점에 아마존이 제공하는 SDK는 안드로이드와 iOS를 위한 스마트폰 플랫폼과 Java, .NET, PHP, Ruby 등의 프로그램 언어 등 상당히 다양하다(참고 http://aws.amazon.com/documentation/).

윈도우 애저 서비스
윈도우 애저는 PaaS 기반의 클라우드 플랫폼이다. 클라우드 인프라와 서비스 개발을 위한 플랫폼을 같이 제공한다. 물론 아마존이 제공하는 서비스와 형태가 비슷하지만 개발자에게 보다 친숙하고 다양한 기능을 제공한다. 윈도우 애저가 제공하는 서비스는 Compute, Storage, Fabric Controller, CDN, Connect로 구분된다. 

<그림 6> 윈도우 애저 구성

<그림 7> 컴퓨트 서비스

윈도우 애저의 가상 머신 이미지는 인스턴스라고 불리며, 이들 인스턴스는 Web Role, Worker Role, VM Role로 구분된다. Web Role 인스턴스는 인터넷 정보 서비스(IIS)로 된 웹서비스 개발 기능을 제공하는 반면, Worker Role은 웹서비스 이 외의 개발 기능을 제공하는 인스턴스다. VM Role은 아마존과 유사한 서버 호스팅 머신을 제공하는 기능이다. 

윈도우 애저 플랫폼도 개발자에게 다양한 SDK를 제공한다. .NET, Node.js, Java, PHP 형태의 프로그램 API를 제공한다. 특히 NET 기반 SDK는 비주얼 스튜디오와 결합돼 있어 개발자가 쉽게 사용할 수 있다. SDK에 대한 자세한 정보는 윈도우 애저 개발자 센터(www.windowsazure.com/en-us/develop/ overview/)에서 확인할 수 있다(<그림 8> 참조).

<그림 8> 윈도우 애저 개발자 센터

스토리지 서비스
스토리지 서비스는 일반인들이 가장 많이 활용하는 클라우드 요소다. 2012년 현시점에 클라우드는 일반인들에게 아직은 스토리지 서비스로 인식되고 있다. 국내외 많은 업체에서 스토리지 서비스를 제공한다. 해외 업체로는 Dropbox, Box.net, SugarSync 등이 스토리지 서비스에 특화된 기능을 제공하고 있다. 국내에서는 다음, 네이버 등의 포털 업체와 SKT, KT 등 통신사들 주도로 서비스가 제공된다. 

그 중 대표적인 서비스 업체인 Dropbox와 Box.net에 대해 알아보자.

Dropbox 스토리지 서비스Dropbox는 동기화 기능을 갖춘 대표적인 클라우드 스토리지 업체다. iOS, 안드로이드, Python, Ruby, Java용 SDK를 공식적으로 제공한다. 이 외에도 .NET, Node.js, PHP 등의 비공식 SDK도 사용할 수 있다. 

<그림 9> Dropbox(좌)와 Box.net(우) 개발자 사이트

Dropbox는 현시점에 가장 다양한 플랫폼을 지원하는 SDK를 제공한다. Dropbox는 앱 폴더라는 개념을 도입했는데, Dropbox가 제공하는 API를 이용하면 프로그램 내부에서 Dropbox 스토리지 영역에 데이터를 업로드, 다운로드, 공유할 수 있다. 또 Open API가 제공하는 기능은 인증, 계정 정보, 파일 및 메타데이터 처리, 파일 제어 기능이다. 보다 자세한 정보는 Dropbox 개발자 홈페이지(www.dropbox.com/developers)에서 얻을 수 있다.

Box.net 스토리지 서비스Box.net API는 파일 관리, 공유, 협업 기능을 제공한다. Box.net은 파일 업로드, 다운로드, 파일 공유, 파일 버전 관리와 다양한 파일을 열어볼 수 있는 링크 기능을 제공한다.

Box.net 솔루션은 Dropbox와 달리 외부 업체에 판매를 한다. Box.net 솔루션은 일종의 SaaS 서비스로, 아마존 S3 등의 스토리지와 EC2의 컴퓨트 서비스상에서 작동되는 형태로 개발돼 있다. 특히 파일 관리, 파일 공유, 계정 관리, 파일 싱크, 타 모듈과의 인터페이스, 메타데이터 관리 등 다양한 서비스 기능을 제공한다. Box.net에서 제공하는 기능들은 Box.net 개발자 사이트(http://developers.box.com)에서 확인할 수 있다. 

SaaS
컴퓨트와 스토리지 서비스 업체 이 외에 지도, 이미지, 동영상, 문서, 메일 등 다양한 서비스를 제공하는 SaaS 업체들도 많다. 이들 업체는 REST 기반의 Open API와 다양한 플랫폼 그리고 개발 언어를 지원하는 SDK를 배포한다. 국내 업체인 다음이나 네이버도 자사 서비스를 개발자가 이용할 수 있도록 다양한 형태의 Open API를 제공 중이다. 

다음 DNA는 검색, 지도, 블로그 등의 데이터 플랫폼을 외부에 공개해 개발자들이 다양한 서비스 및 애플리케이션을 개발할 수 있게 지원한다. 제공되는 API 서비스는 지도형, 데이터형, 인증형, 기타로 구분되며, 자세한 내용은 다음 API 사이트(http:// dna.daum.net/apis)에서 참고하자. 

<그림 10> 다음 Open API(좌)와 구글 Open API(우)

구글이 제공하는 다양한 Open API를 확인하고 싶다면 구글 API 사이트(http://code.google.com/more/)를 방문하자. 전 세계에서 가장 큰 인터넷 서비스인 구글은 그 규모에 걸맞게 방대한 API를 제공하고 있다. 

만약 구글 지도 서비스를 이용해 모바일 응용프로그램을 개발하고 싶다면, 홈페이지(http://code.google.com/apis/earth /documentation/)에서 API 지원 형태와 사용법을 확인한 후 개발에 활용하면 된다.

SNS

최근 들어 애플리케이션과 소셜 네트워크 서비스(SNS)를 연동하는 다양한 기능들이 대거 추가되고 있다. 특히 페이스북과 트위터를 연동시키는 경우가 많은데, 이들 업체의 영향력과 제공되는 강력한 Open API 때문이다. 페이스북과 트위터에서 제공되는 Open API를 사용하면 쉽고 간편하게 SNS와 연계된 서비스를 개발할 수 있다. 

<그림 11> 트위터(좌)와 페이스북(우) Open API

페이스북은 웹사이트, 모바일 앱, 특정 애플리케이션 내부에서 페이스북이 제공하는 각종 서비스에 접근해 사용할 수 있도록 다양한 Open API를 제공한다. 트위터 역시 REST 기반의 Open API를 제공한다. 제공되는 서비스에 대한 자세한 내용은 아래 주소를 참고하자.

페이스북 개발자 사이트 : http://developers.facebook.com
트위터 개발자 사이트 : https://dev.twitter.com/docs

클라우드의 현황과 전망
현재 클라우드 관련 기술은 개화기를 지나 급속한 성장기를 지나고 있다. 빠르게 발전하는 기술로 인해 수많은 업체와 기술이 혼재돼 있는 상태다. 그렇지만 이런 흐름도 어느 정도 정리되는 듯하다. 

<그림 12> 다양한 클라우드 서비스

정리 양상을 요약하면 애플, 구글, 마이크로소프트 등 소프트웨어 절대 강자들이 제공하는 컴퓨터, 스마트폰, 스마트TV용 클라우드 서비스와 전통적인 서버 강자인 HP, 오라클 등이 제공하는 인프라 기반 서비스 그리고 각종 서비스와 솔루션 기반의 클라우드 업체로 구분할 수 있다. 이들은 클라우드와 연관된 기술을 지속 개발해 끊임없이 경쟁하고 있다. 

다시 말해 클라우드 관련 기술은 급속히 발전 중이며 마치 수십 년 전 인터넷 열풍이 불어 많은 서비스가 탄생했던 그 시절과 많이 비슷하다. 초고속 인터넷에 기반을 둔 인터넷 열풍은 웹프로그램 전성시대를 이끌었으며, 이를 통해 수많은 포털, 전자 메일, 쇼핑몰, 전자 정부 등이 탄생했다. 현재는 초고속 인터넷 인프라와 LTE 등 초고속 무선 인터넷 인프라가 결합해 시너지 효과를 내고 있으며, 각종 스마트폰 플랫폼과 클라우드 기반 프로그램 기술이 꽃피고 있다. 

2차원 평면에 한정됐던 각종 서비스가 스마트폰 기술과 클라우드를 바탕으로 한 3차원 현실로 등장하고 있으며, 클라우드를 기반으로 한 지역화와 현지화가 빠르게 진행되고 있다. 이러한 시점에서 개발자는 어떤 준비를 하고 또 어떻게 대응해야 할까? 

우선 변화된 환경에 대한 정확한 이해가 필요하다. 즉 스마트폰 플랫폼에 대한 이해, HTML5, 각종 서버 사이드 기술, 클라우드의 이해, 서비스 응용력, 컨버전스 기술의 활용 등에 대한 폭넓은 이해가 필요하다. 결국 현 시점의 기술 변화와 트렌드를 모두 알아야 한다. 

이런 폭넓은 이해를 바탕으로 특정 서비스 개발을 위한 아키텍처 설계 능력과 알고리즘 구현 능력 그리고 데이터 모델 설계와 실제 프로그램 코딩 능력을 갖춘 T자형 인재로 거듭나야 한다. 

기존에 가지고 있던 개발자 역량에 스마트폰 프로그램(Java, C#, C)과 웹프로그래밍(HTML5, JavaScript, Server side program) 중심의 프로그래밍 능력에 대한 체질 개선이 요구된다. 이런 기술 능력을 어떻게 현실 세계에 적합한 서비스 개발로 이끌어낼지 끊임없이 고민해야 한다. LBS, 증강현실, 각종 센서 및 디바이스 연결, 클라우드 스토리지 연결, 각종 Open API 서비스 연계에 대한 이해와 활용 능력도 요구된다.

시장 성장 예상치와 정부 정책 방향의 시사점클라우드 컴퓨팅은 IT 자원의 효율적 활용을 위해 등장한 기술로 최근 국내외 투자가 급장하고 있다. 가트너의 전망치에 따르면 클라우드 컴퓨팅의 국내외 시장 규모는 급격히 성장하고 있다.  

<그림 13> 클라우드 컴퓨팅 국내 시장 규모(좌)와 세계 시장 규모(우) (출처 : Gatner)

클라우드 기술은 최근 스마트폰 플랫폼 제조사 중심으로 급속히 기술 발전이 이뤄지고 있다. 애플, 구글, MS가 주도하는 클라우드 기술을 정리하면 <표 1>과 같다. 

<표 1> 애플, 구글, MS의 클라우드 기술

<그림 14> 정부 주도 스마트미디어 활성화 방안(출처 : 지식경제부)

이러한 3대 스마트폰 플랫폼 업체의 주도와 HP, 아마존, VM웨어 등의 IaaS 중심 업체, 통신사들이 집중적인 클라우드 투자로 인해 클라우드 기술은 과열 양상을 보이고 있다. 최근 정부도 스마트미디어 활성화 방안과 클라우드 컴퓨팅 활용에 대한 내용을 발표하고 있다. 지금까지 기술 중심의 발전이었다면 이제부터는 산업 전반에 관련 기술을 응용할 수 있는 형태로 발전되고 있는 것이다. 개발자 입장에서의 클라우드는 새로운 산업 태동의 밑거름이며 개발자는 이를 최대한 활용할 수 있는 기회가 어디에 있는지 고심할 필요가 있다.

클라우드 환경에서 우리 삶의 변화
지금까지 2회에 걸쳐 클라우드 기술에 대한 전반적인 소개와 이를 이용해 어떻게 프로그램을 개발할 수 있으며 또 관련 기술은 어디에서 정보를 얻어야 할지 살펴봤다. 최근 기술의 발전 방향은 예전과 비교할 수 없을 정도로 빠르게 진행되고 있다. 그렇지만 이런 기술의 흐름은 보다 편한 삶을 위한 서비스 구현에 맞춰져 있다는 사실을 기억할 필요가 있다. 

머지않아 클라우드 기반의 다양한 서비스가 등장해 일반인들의 삶에 큰 변화를 줄 것으로 예상된다. 언제 어디서나 클라우드 가상공간에 저장된 데이터를 활용할 수 있고 음악, 게임, 사무 등의 다양한 서비스를 클라우드 환경에서 사용하게 될 것이다. 또한 저렴한 초기 도입 비용이나 운영비용의 절감은 수많은 서비스 업체의 시장 참여를 증가시킬 기폭제가 될 것으로 보인다.


참고자료1. 아이클라우드 : www.apple.com/kr/icloud/what-is.html
2. 구글 앱 엔진 : http://code.google.com/intl/ko-KR/appengine/
3. 마이크로소프트 윈도우 애저 : www.microsoft.com/azure/
4. 아마존 EC2 : http://aws.amazon.com/ec2/
5. Dropbox : www.dropbox.com/developers/reference/api
6. Facebook : http://developers.facebook.com


※ 본 내용은 (주)마소인터렉티브(http://www.imaso.co.kr)의 저작권 동의에 의해 공유되고 있습니다.

맨 위로
맨 위로