Journal of the Korea Academia-Industrial cooperation Society Vol. 14, No. 2 pp. 868-877, 2013 http://dx.doi.org/10.5762/kais.2013.14.2.868 김철진 1* 1 인하공업전문대학컴퓨터시스템과 A Integration Research of Cloud Component based on PaaS for Enhancing Software Reusability Chul-Jin Kim 1* 1 Dept. of Computer Systems and Engineering, Inha Technical College 요약본논문은클라우드컴퓨팅환경에서개발재사용성을향상시켜줄수있는 PaaS 기반의클라우드서비스를제공하는것이다. PaaS 기반의클라우드서비스는개발측면에서제공될수있는플랫폼클라우드서비스로서기존의개발도구나관리도구서비스의수준을넘어서재사용프레임워크서비스를제공한다. 이러한재사용프레임워크서비스는다양하게분산되어있는서비스를활용하여개발의재사용성을향상시켜줄수있을것이다. Abstract This paper will provide the cloud service based on PaaS that can enhance reusability of development in the cloud computing environment. The cloud service based on PaaS is the cloud service of platform in the side of development, which provide the reusable framework service that is beyond the existing development tool or management tool service. This reusable framework service will be enhanced reusability using a variety of distributed services. Key Words : Cloud Computing, PaaS(Platform as a Service), Reusability, Reusable Framework 1. 서론 현재클라우드컴퓨팅서비스의주요현안은스토리지기반의데이터공유서비스로국한된다는것과개인정보보호및데이터안정성에대한이슈일것이다. 구글, 애플, 마이크로소프트, 아마존, AT&T, 등의기업들이제공하는클라우드컴퓨팅서비스는대부분데이터를공유하기서비스가주류를이룬다. 물론인프라서비스를제공하지만, 자체서비스로활용하는경우가대부분이다. 이와같이현재클라우드컴퓨팅서비스모델측면에서 SaaS(Software as a Service) 나 IaaS(Infrastructure as a Service) 모델형태의서비스을제공하고있으나, PaaS(Platform as a Service) 모델형태의서비스제공은 미약한상황이다 [1,2,3]. 개발자에게제공되는 PaaS 형태의클라우드서비스는현재소프트웨어개발도구, 어플리케이션배치, 실행, 관리할수있는서비스를제공한다. 개발측면에서의기본적인서비스를제공할뿐, 생산성측면에서개발효율을향상시킬수있는 PaaS기반클라우드서비스아키텍쳐연구가요구되고있다. 기업의소프트웨어개발은촉박한개발일정으로인해업무요구사항에집중하며, 향후재사용성및유지보수에대한고려를하지못하는실정이다. 이에따라 [4] 에서와같이소프트웨어유지보수로인하비용이기하급수적으로증가하고있다. 본논문에서는업무요구사항외에품질요구사항을고려하여개발할수있는개발플랫폼서비스를제공하므로소프트웨어의생산성을향상시켜줄 이논문은 2012학년도인하공업전문대학교내연구비지원에의하여연구되었음. * Corresponding Author : Chul-Jin Kim (Inha Technical College) Tel: +82-10-6398-7471 email: cjkim@inhatc.ac.kr Received January 21, 2013 Revised February 5, 2013 Accepted February 6, 2013 868
것이다. 본논문의 2장에서는관련연구로클라우드컴퓨팅기술과기존클라우드컴퓨팅아키텍쳐에대해살펴보고, 3 장에서는재사용기반 PaaS 클라우드컴포넌트구조및개발프로세스를제시한다. 4장에서는제시한 PaaS 기반클라우드개발플랫폼컴포넌트에대한사례연구를통해적합성을검증한다. 2. 관련연구 의용이성을위한 SOA(Service Oriented Architecture), 공급자와사용자간의질적보장을위한 SLA(Service Level Agreement) 등이체계를이루어클라우드서비스를제공할수있다. 미국국립기술표준원 NIST(National Institute of Standard Technology) 에서는클라우드컴퓨팅의특징에대해 Fig. 1에서와같이 5가지의핵심적인특성 (Essential Characteristics) 과 4가지배치모델 (Deployment Model), 그리고 3가지서비스모델 (Service Model) 로정의하고있다 [6]. 2.1 클라우드컴퓨팅기술 클라우드컴퓨팅은컴퓨팅자원의공유, 다양한서비스의연동, 등을통해사용자에게서비스를효율적으로제공하기위한컴퓨팅체계라고할수있다 [5]. 가상공간에서모든정보들이공유되어소프트웨어, 플랫폼, 인프라환경등을사용자의요구에따라활용하게함으로써정보의통제와관리, 검색, 조정이혁신적인수준으로발전할수있게한다. 클라우드컴퓨팅의주요기술은 Table 1과같이대규모정보인프라의필요성과다양한서비스연결, 그리고사용자편의를위한제공하기위한기술들로구성된다. [Table 1] Core Technology of Cloud Service Technology Grid Computing Utility Computing Virtualization Technology SOA SLA Security and Privacy Core Technology Distribution Technology Usage Measurement, Billing, User Account Resource Pool, Hypervisor, Virtual I/O, Partition Mobility OpenAPI, WebService Service Level Mgt. Firewall, Intrusion Prevention, Access Control 그리드컴퓨팅 (Grid Computing) 은분산환경에서공유를통한컴퓨팅유휴자원의상호활용을위한기술이며, 유틸리티컴퓨팅 (Utility Computing) 은사용자가컴퓨터를직접구매하지않고사용한만큼의비용을지불하기위한기술이다. 가상화기술은서버의수를빠른시간에확대배치할수있게할수있으므로컴퓨팅자원의구축과활용방식이보다새로운체계로변형시킬수있다. 사용자접근성이강조된웹서비스기술과서비스연계 [Fig. 1] Features of Cloud Service(NIST) 서비스모델에서 SaaS는기업이나다수의개인사용자에게공통으로필요한소프트웨어서비스를제공하는형태이다. 제공되는서비스의종류는온라인검색서비스, 지도서비스, 블로그, 위키, 웹메일등이있다. PaaS 는개발자에게어플리케이션이나어플리케이션서비스를편리하게개발할수있도록소프트웨어개발도구, 어플리케이션배치, 실행, 관리할수있는서비스를제공한다. 본연구에서는서비스모델중에 PaaS를기반으로하고있다. IaaS는컴퓨팅자원을구축하지않고필요한컴퓨팅자원의일부또는전부를서비스받을수있도록제공하는모델이다. 일반적으로가상화기술을바탕으로사용한자원을자동계측하여과금하는유틸리티컴퓨팅방식에따라서비스를제공한다. 배치모델에서 Private Cloud는기관이나기업내부의제한된사용자만을위하여구축되는클라우드서비스를말하며, Public Cloud는모든사용자가이용할수있도록공개하는서비스를의미한다. Community Cloud는특정사용자만의접근을통해서비스를제공하는형태이며, Hybrid Cloud는 2가지이상의배치모델을조합하여서비스를제공하는형태를말한다. 869
한국산학기술학회논문지제 14 권제 2 호, 2013 2.2 클라우드컴퓨팅아키텍쳐클라우드컴퓨팅의핵심기술을기반으로계층적아키텍쳐는 Fig. 2와같다. 클라우드인프라계층에서서버, 스토리지, 네트워크가가상화기술의대상이된다. 분산컴퓨팅에서는독립적인파일시스템및데이터베이스를단일시스템으로인지하고접근할수있도록하며대용량데이터들에대한빠른처리속도를제공해줄수있다. 구글이제공하는 Hadoop[7] 가대표적인기술이다. 클라우드컴퓨팅에서자원관리는이용자들에게 SLA 기반의사용자가상컴퓨팅환경을제공하고, 제공된가상시스템을모니터링하며, 사용자서비스별자원활용도에따라동적자원할당및동적스케쥴링을제공해준다. 할수있도록허용한다. 자원관리기능은개발사용자의가상컴퓨팅자원을모니터링하며, 고가용성을보장해준다. 서비스주문기능은클라이언트에클라우드서비스를제공하기위해용이한사용자인터페이스를제공한다. 사용자인증기능은사용자인증인터페이스를제공하여사용자의데이터접근에대한신뢰성을제공할수있도록한다. 2.3 PaaS 기반클라우드서비스 Google App Engine[8] 은 PaaS 기반클라우드서비스로서 2008년부터 Google 인프라상에서사용자가웹서비스를개발할수있도록다양한 API를서비스하고있다. Python Runtime API : 응용프로그램이실행되는 Python 환경제공 (CGI, Sandbox, caching, logging) Data Repository API : 확장가능한데이터저장소및효율적인사용방법제공 Image API : 이미지데이터조작서비스제공 Mail API : 응용프로그램으로이메일전송기능제공 Memcache API : 분산메모리캐시 URL loading API : 응용프로그램에서다른인터넷호스트에접근기능제공 User API : 사용자응용프로그램을 Google 계정과통합하기위한기능제공 [Fig. 2] Cloud Computing Architecture 클라우드플랫폼계층에서는사용자들이클라우드컴퓨팅에사용자고유의응용또는인터넷서비스를구축하기위한인터페이스를제공한다. 프로그래밍언어의인터프리터환경등과같은소프트웨어개발환경들과서비스들의 API를제공한다. 또한보안및프라이버시, 자원유틸리티 ( 과금 ), 사용자인증등의기능을제공한다. 클라우드컴퓨팅에서제공하는주요기능은백업기능, 동기화기능, 자원관리기능, 서비스주문기능, 인증기능을제공한다. 백업기능은사용자의문서, 멀티미디어자료등의모든정보자원들을저장할수있으며, 사용자디바이스에복원해야할때, 사용자의과거정보자원을복원할수있다. 동기화기능은사용자의데이터에대해언제어디서나다양한디바이스에서해당데이터를접근 VANADIS SaaS Platoform[9] 은 NTT 그룹 (NTT Data) 에서제공하는 PaaS 기반어플리케이션개발환경클라우드서비스로서개발및운영환경, 금융기관결제제휴, 싱글사인온등의개발 API를서비스한다. Fig. 3에서 NTT 는 Open API를활용하여 SaaS용클라우드서비스를개발할수있다. 인증, 파일관리, 백업등의기능을제공하여개발자는개발시스템구축에대한투자없이클라우드서비스개발이가능하다. Cloud Center[10] 는 Fig. 4에서와같이 PaaS와 IaaS 를동시에제공하는하이브리드형태의서비스로서개발자자신의개발요구사항에맞추어 CPU, RAM, HDD 등하드웨어시스템및 OS를포함하여 OS Type, 소프트웨어개발환경을선택이가능하다. 또한 Cloud Center에서는 Uploader를이용하여기존에개발된웹스크립트소스를특정구조에맞추어개발후 Zip 형태의압축파일로전송하면 Cloud Center는 IaaS 환경의 PaaS 플랫폼에업로드하여가상의클라우드머신에서바로웹어플리케이션서비스를제공할수있다. Cloud Center 연구는단순개발환경서비스를제공하며본연구에서제안하는재사용성향상을위한서비스와차이를보인다. 870
[Fig. 3] NTT Cloud Service [Fig. 4] Cloud Center Architecture 3. 재사용기반 PaaS 클라우드컴포넌트 재사용을위한 PaaS 기반클라우드컴포넌트의구조와설정서비스및커스터마이제이션서비스를제공하기위한구조를제시한다. 플랫폼을기반으로플랫폼서비스 API, 설정서비스 API, 커스터마이제이션서비스 API를제공하여컴포넌트를변경할수있도록제공한다. 3.1 재사용 PaaS 클라우드컴포넌트구조재사용 PaaS 클라우드컴포넌트는개발을위한서비스를제공해야하므로개발플랫폼및개발클라우드서비스를제공해야한다. Fig. 5에서와같이개발플랫폼 (Platform) 을중심으로플랫폼을제공하기위한플랫폼관리자 (Platform Manager), 그리고플랫폼을개발자환경에설치하기위한배포자 (Deployer), 그리고가변적인부분을제공할수있도록커스터마이제이션프레임워크 (Customization Framework) 으로구성된다. 이러한개발 [Fig. 5] Layer Architecture of Reusable PaaS Cloud Component 871
한국산학기술학회논문지제 14 권제 2 호, 2013 Fig. 6에서와같이개발플랫폼을중심으로플랫폼관리자와플랫폼배포자, 그리고커스터마이제이션프레임워크를이용하여어플리케이션개발이이용될수있도록개발플랫폼서비스를제공할수있다. 커스터마이제이션서비스와설정서비스는개발자환경에제공되어서비스될수있도록패키징 (Packaging) 되어서비스되어야한다. Fig. 8에서와같이 'PlatformManager' 클래스는플랫폼을생성하여배포하기위한서비스를제공한다. 이때배포는각웹서버에서제공하는배포방식을활용할수있다. 본논문에서는아파치톰켓 (Apach Tomcat) 웹서버의배포도구를활용한다. 설정서비스와커스터마이제이션서비스는 RESTful (Representational State Transfer) 서비스방식으로제공한다. [Fig. 6] Factors of Reusable PaaS Cloud Component 개발플랫폼서비스를제공하기위한커스터마이제이션서비스와설정서비스를제공하기위한클래스다이어그램은 Fig. 7과같다. 커스터마이제이션서비스와설정서비스는모두 CustomizationFramework 클래스를이용하여서비스를설정한후에변경할수있다. VariabilityManager' 클래스는설정시클래스정보와함수정보를설정하거나호출할수있는기능을제공하며, 'MetaInfoManager' 클래스는설정된클래스정보와함수정보를메타정보로저장하여관리하는역할을담당한다. 이렇게저장된서비스들은 ClassRunner' 클래스를통해호출되어실행될수있다. [Fig. 8] Class Diagram for Platform Deployment Service 설정서비스를제공하기위한 API는 Fig. 9에서와같이정의한다. 설정서비스명은 ConfigurationService' 이며, 서블릿으로정의한다. 서비스홈폴더인 PlatformA' 는개발플랫폼명이된다. 플랫폼명은배포시생성해야하며배포파일도동일하게정의한다. 전달되는데이터는가변성식별자 ('VAR_ID'), 변경하고자하는클래스명 ( CLASS ), 그리고함수명 ('METHOD') 으로구성된다. [Fig. 9] Configuration Service API [Fig. 7] Class Diagram of Customization Service and Configuration Service 커스터마이제이션서비스 API는 Fig. 10과같이정의한다. 커스터마이제이션서비스명은 CustomizationService' 이며, 전달되는데이터는서비스받고자하는클래스명 ( CLASS ), 함수명 ( METHOD ), 입력데이터 ( PARAM ), 가변성식별자 ( VAR_ID ) 로구성된다. 설정서비스와커스터마이제이션서비스의차이는운영하기위한서비스를정의하는것이설정서비스이며, 정의된서비스를가변성식별자를지정하여변경하는것이커스터마이제이션서비스이다. 872
PaaS 기반의개발플랫폼서비스를제공하기위한프레임워크를구성하여패키징하는단계이다. 엔진클래스및설정서비스를위한 UI를패키징한다. [Fig. 10] Customization Service API 플랫폼서비스 API는 Fig. 11과같이정의한다. 플랫폼을정의하여패키징된플랫폼을배포할수있다. 서비스명은 PlatformService' 이며, 전달되는데이터는접근정보 ('ID', 'PW') 와플랫폼명 ( PlatformName ) 으로구성된다. 각개발자마다유일한플랫폼명을정의하여개발자환경에배포하여설치후이용할수있다. 플랫폼서비스 API에서정의된플랫폼명이설정서비스 (Fig. 9) 나커스터마이제이션서비스 (Fig. 10) 를호출할때사용되는폴더명이다. [Fig. 11] Platform Service API 3.2 PaaS 클라우드컴포넌트개발프로세스 PaaS 클라우드컴포넌트개발프로세스는 Fig. 12에서와같이재사용프레임워크구성한후어플리케이션컴포넌트가포함된개발플랫폼을구성한다. 이렇게구성된개발플랫폼을배포하여재사용어플리케이션을개발하며, 기존어플리케이션을설정및커스터마이제이션한다. [Fig. 12] Development Process of PaaS Cloud Component (1) 재사용프레임워크구성 (Composing Reusable Framework) (2) 개발플랫폼구성 (Composing Development Platform) 플랫폼배포파일을생성하는단계이다. 재사용프레임워크와재사용컴포넌트를패키징한다. 이단계에서패키징되는컴포넌트는재사용될수있는배포단계의서비스컴포너트이다. 이컴포넌트는개발자에의해커스터마이제이션될수있다. (3) 개발플랫폼생성및배포 (Developing and Deploying Development Platform) 개발플랫폼접근권한과플랫폼명을생성한후, 생성된개발플랫폼배포파일을배포한다. 본논문에서는아파치톰켓웹서버의배포도구를이용한다. 플랫폼생성서비스를호출하면 Fig. 13과같이 PlatformManager' 클래스의 'createplatform()' 함수를호출하여접근권한를체크한후개발플랫폼내의개발플랫폼을위한 CustomizationFramework' 클래스등의내부클래스에대한객체를생성한다. 이때각개발자별로플랫폼객체가생성된다. (4) 재사용어플리케이션개발 (Developing Reusable Application) 가변적으로처리될수있도록어플리케이션을개발한다. 'CustomizationFramework' 클래스를이용하여어플리케이션을개발한다. 배포된재사용컴포넌트를이용하여커스터마이제이션 API를이용하여개발한다. (5) 설정및커스터마이제이션 (Configuration and Customization) 배포된플랫폼을기반으로서비스를설정하거나서비스를호출할수있다. 설정서비스 API와커스터마이제이션 API를이용하여호출할수있다. 가변성설정서비스는 Fig. 14와같이 Configuration -Service' API를이용하여배포된개발플랫폼내의클래스를호출한다. 'CustomizationFramework' 클래스, 'VariabilityManager' 클래스, MetaInfoManager' 클래스는설정서비스를제공하기위한기능을제공한다. 커스터마이제이션서비스는 Fig. 15와같이 CustomizationService' API를이용하여배포된플랫폼내의클래스를이용하여변경할수있다. 가변성 ID를식별하여요구하는서비스를가변적으로변경하여제공할수있다. 873
한국산학기술학회논문지제 14 권제 2 호, 2013 [Fig. 13] Service Flow of Platform Creation [Fig. 14] Service Flow of Variation's Configuration [Fig. 15] Service Flow of Customization 874
4. 실험및평가 사례연구에서는본논문에서제시한 PaaS 클라우드컴포넌트구조를개발프로세스에따라구현하여서비스의적합성을검증한다. 본사례연구는 J2EE 기반의아파치톰켓웹서버기반에서구축하는것을전제로한다. (1) 재사용프레임워크구성재사용프레임워크패키지를구성하기위해 Fig. 16과같이엔진클래스 'paas.cloud.framework.*' 와 UI 클래스 ( 서블릿 ) 'paas.cloud.ui.*' 를 jar로패키지하여 'framework.jar' 를구성한다. 수있도록서블릿을등록한다. - 'web.xml' 파일을.../test/WEB-INF 폴더에복사한다. - 플랫폼배포파일 'test.war' 을생성한다. (3) 개발플랫폼생성및배포플랫폼서비스 API(Fig. 13) 를이용하여 Fig. 17과같이플랫폼접근권한 (ID, 암호 ) 와플랫폼명을입력하여플랫폼을생성한다. 플랫폼명은플랫폼파일명과동일하게생성하여생성된폴더로식별가능하게한다. [Fig. 17] Creation Service of Development Platform [Fig. 16] Reusable Framework's Organization (2) 개발플랫폼구성 - 개발플랫폼배포파일을생성하기위해어플리케이션컴포넌트파일은.../test/WEB-INF/classes' 폴더에복사한다. - 재사용프레임워크패키지인 'framework.jar' 는 '.../test/web-inf/lib' 폴더에복사한다. - 아파치톰켓서버의설정정보파일인 web.xml 에는설정 UI를통해설정및커스터마이제이션을할 플랫폼의기본정보가생성되면아파치톰켓웹서버의 'Web Application Manager' Fig. 18를이용하여개발플랫폼패키지인 'test.war' 를배포한다. 배포파일을형태로폴더가생성되므로배포파일명이 test' 가플랫폼명이된다. [Fig. 18] Web Application Manager of Apach Tomcat [Fig. 19] Developed Application applying Variation 875
한국산학기술학회논문지제 14 권제 2 호, 2013 (4) 재사용어플리케이션개발가변적으로처리될수있도록어플리케이션 'ClassA' 를개발한다. Fig. 19와같이 'CustomizationFramework' 클래스의 'variabilityservicecall()' 함수를이용하여가변적으로서비스를호출한다. 서비스를호출할때가변성식별자를입력하여서비스가가변적으로변경될수있도록호출할수있다. Fig. 22는 'var_id' 가변성 ID에입력데이터가있는 method_3' 함수로변경한다. 개발자가 'var_id' 가변성 ID 를사용하여개발할경우최종적으로변경된클래스와함수가적용되어서비스된다. (5) 설정및커스터마이제이션가변성이포함된서비스를호출하거나커스터마아제이션서비스를호출하여변경할수있다. 서비스호출은 http://../test/hello.jsp 와같이플랫폼명이포함된 API를호출한다. Fig. 20에서와같이새로운서비스를등록하고자할경우가변성 ID와클래스명함수명을입력한후서비스를호출하면등록된다. [Fig. 22] Customization Web Service(2) 개발자에게모바일서비스를통해서도커스터마이제이션서비스를제공할수있음을증명하기위해 Fig. 23 과같이안드로이드기반모바일환경에서적용하였다. [Fig. 20] Configuration Web Service of Variability Fig. 21에서와같이설정서비스에서등록한가변성 ID을통해다른서비스로변경할수있다. 'ClassC' 클래스의입력데이터가없는 'method_3' 함수로설정하여 'var_id' 가변성 ID를이용하여개발자가서비스를이용할수있다. [Fig. 23] Customization Mobile Service [Fig. 21] Customization Web Service(1) 개발자에게웹서비스와모바일서비스를통해설정및커스터마이제이션서비스를제공할수있는개발플랫폼을제공하여기존컴포넌트가개발자에의해변경될수있음을실험하였다. 본사례연구를통해본논문에서제시한 PaaS 기반의개발플랫폼컴포넌트를구축할수있음을파악하였으며, 개발플랫폼을개발자에게제공하여커스터마이제이션할수있음을증명하였다. 따라서본논문에서제시한 PaaS 876
개발플랫폼클라우드컴포넌트가구현적합함을증명하였다. environment on Cloud System, Korean Society for Internet Information, 2010 Conference Proceeding, p:247-250, 2010. 5. 결론및향후연구과제 PaaS 기반의개발플랫폼은개발환경을서비스하므로개발환경구축으로인한비용절감및개발생산성을향상시켜줄수있을뿐만아니라개발의통합관리가가능하게할수있다. 본논문에서는 PaaS 기반의개발플랫폼컴포넌트구조와설정서비스및커스터마이제이션서비스 API를제공하여웹및모바일상에서서비스할수있음을증명하였다. 향후연구과제로는 PaaS 기반의개발플랫폼서비스를통해개발된서비스들의재사용성을측정할수있는메트릭을연구하여재사용성을정량적으로평가할수있는방안을제시한다. 김철진 (Chul-Jin Kim) [ 종신회원 ] 2004 년 2 월 : 숭실대학교대학원컴퓨터학과 ( 공학박사 ) 2004 년 4 월 : 가톨릭대학교컴퓨터정보공학부강의전담교수 2004 년 3 월 ~ 2009 년 2 월 : 삼성전자책임연구원 2009 년 3 월 ~ 현재 : 인하공전컴퓨터시스템과조교수 < 관심분야 > 컴포넌트기반개발방법론, 컴포넌트커스터마이제이션, 모바일서비스, 클라우드컴퓨팅 References [1] ITU-T FG Cloud, http://www.itu.int/en/itu-t/focusgroups/ cloud. [2] Marco Carugi, Jamil Chawk, Kangchan Lee, Draft deliverable on Introduction to the cloud ecosystem: definitions, taxonomies, use cases, high level requirements and capabilities, ITU-T FG Cloud 6#, 2011. 7. [3] Lee K. C., W3C DAP(Device API and Policy) Standardization Trends, IT Standard Weekly, 2009. 12. [4] Boehm, B.W. et al., Some Experience with Automated Aids to the Design of Large-Scale Reliable Software, IEEE Trans. On Software Engineering, 1975. DOI: http://dx.doi.org/10.1109/tse.1975.6312826 [5] Kim H. G., Lee Y. S., Trends and Future Prospects of Cloud Computing Service, THE JOURNAL OF KOREA INFORMATION AND COMMUNICATIONS SOCIETY, p:31-34, 2010 [6] Peter Mell and Tim Grance, "The NIST Definition of Cloud Computing", Version 15, 10-7-09, 2010. [7] Dhruba Borthakur, "The Hadoop Distributed File System: Architecture and Design", The Apache Software Foundation, 2007. [8] Google App Engine, http://code.google.com/intl/ko-kr/ appengine. [9] NTT VANADIA SaaS Platform, http://www.ntt.co.jp/ saas/index.html. [10] Lee J. H., Park J. Y., and Huh E. N., PaaS 877