Web Application 개발을 위한 PaaS 들
Goole App Engine을 비롯하여 새로나온 Cloud Foundry까지 Web Application 개발을 위한 여러 PaaS가 있다. 이중에 나에게 맞는 PaaS는 무엇인지 고민을 살짝 해보게 되었는데 그 고민의 결과로 얻은 약간의 지식을 블로그에 공유해 보고자 한다. 여러분들에게도 자신에게 알맞은 PaaS 선택에 도움이 되었으면 좋겠다. (무료로 사용 가능한 PaaS 만을 살펴보도록 하자!)
1. Google - Google App Engine
Google App Engine은 아마도 가장 널리 알려진 PaaS 일거다. Java와 Python 개발환경을 지원한다. 데이터 저장소는 MySQL과 같은 데이터베이스를 별도로 지원하지는 않고 Google App Engine 만의 데이터 저장소를 제공한다. 이 점이 Google App Engine에서 개발된 어플리케이션을 다른 곳으로 이전하기 힘들게 하는 문제점이 되기도 하는 것 같다.
Java의 경우 Eclipse IDE 개발 환경을 제공하며 개발 중에는 서버 필요 없이 클라이언트에서 테스트할 수 있다. 각종 서비스 API를 지원하고 있어 어플리케이션 개발을 좀 더 수월하게 할 수 있다.
Python의 경우는 Eclipse IDE와 연동은 되어 있지 않고 클라이언트에서 사용할 수 있는 Google App Engine Launcher라는 툴을 제공한다. Django와 같은 널리 사용되는 Python Web Framework도 활용 가능하며 구글이 자체적으로 개발한 webapp이라는 간단한 Framework도 제공한다.
최근 Google이 만든 Go 언어도 새로이 추가되었다. 아직은 실험 단계로 제공되고 있는 것 같다.
현재 무료로 생성가능한 어플리케이션의 최대 개수는 10개로 제한되어 있다.
2. VMware - Cloud Foundry
Cloud Foundry는 VMware의 vSphere cloud 플랫폼 위에서 제공되는 PaaS로 Java Spring, Ruby on Rails, Ruby Sinatra, Grails 등의 개발 플랫폼을 지원한다. 데이터베이스로는 MySQL, MongoDB, Redis 등을 제공한다. 아직은 사용할 수 없지만 Micro Cloud라는 개인 개발용 VMware 이미지를 제공하여 자신의 개발 환경에 cloud 플랫폼을 구축하여 사용할 수 있도록 지원할 예정이라고 한다.
클라이언트 개발 환경은 vmc라는 command line 환경으로 되어있다. vmc로 로그인을 한 후 vmc가 제공하는 각종 명령을 이용하여 어플리케이션을 새로 생성한다거나 사용자의 패스워드를 변경한다거나 등등 여러가지 작업을 수행할 수 있다.
가상화의 1인자가 제공하는 PaaS 답게 어플리케이션을 생성 시 새로이 만들어지는 가상머신의 메모리 등을 지정할 수 있는 옵션도 제공한다. 어플리케이션 이름만으로 URL이 결정되므로 먼저 이름을 선점하는 것이 좋다. (물론, URL이 별도로 있으면 DNS 설정으로 연결만 해두면 되겠지만)
3. Red Hat - OpenShift
OpenShift는 Express, Flex, Power의 3가지 버전으로 PaaS를 제공한다. 무료로 사용할 수 있는 Express 버전의 경우 Python, Ruby, PHP를 이용하여 어플리케이션을 개발 할 수 있다.
클라이언트 개발 환경은 Linux, Mac, Windows를 모두 지원하며 IDE에 통합된 개발환경 보다는 Ruby On Rails의 command 기반의 환경과 유사한 개발 도구를 제공한다.
위 시작하는 법 문서에 설명되어 있는 순서대로 따라하면 큰 어려움 없이 첫번째 웹 어플리케이션을 만들어 볼 수 있다. 한가지 주의할 점은 도메인 이름을 결정할 때 신중을 기해야 한다는 것! 일단 한번 만들고 나서 어떻게 변경할 수 있는지 아직 방법을 찾지 못했다. 도메인 이름을 결정하면 해당 도메인에 여러 어플리케이션을 만들 수 있다. 실제 site의 URL 이름은 <어플리케이션 이름>-<도메인 이름>.rhcloud.com 으로 만들어진다.
클라이언트에서 개발한 코드를 서버에 적용하는 방법은 git을 이용한다. OpenShift Express 버전에서는 128MB까지 MySQL, PDO (PHP Data Object) 및 Amazon-RDS 데이터 공간을 사용할 수 있다.
개발 환경, SDK 지원 및 문서화 등을 놓고 보면 Google App Engine이 가장 좋은 환경을 제공하는 것으로 보인다. 단, PHP, Ruby 등의 다른 개발 언어를 지원하지 않고 또한, MySQL 등과 같은 널리 사용되는 데이터베이스를 지원하지 않는 점이 아쉽다.
References:
1. Google - Google App Engine
Google App Engine은 아마도 가장 널리 알려진 PaaS 일거다. Java와 Python 개발환경을 지원한다. 데이터 저장소는 MySQL과 같은 데이터베이스를 별도로 지원하지는 않고 Google App Engine 만의 데이터 저장소를 제공한다. 이 점이 Google App Engine에서 개발된 어플리케이션을 다른 곳으로 이전하기 힘들게 하는 문제점이 되기도 하는 것 같다.
- Google App Engine 어플리케이션 생성: https://appengine.google.com/start
Java의 경우 Eclipse IDE 개발 환경을 제공하며 개발 중에는 서버 필요 없이 클라이언트에서 테스트할 수 있다. 각종 서비스 API를 지원하고 있어 어플리케이션 개발을 좀 더 수월하게 할 수 있다.
Python의 경우는 Eclipse IDE와 연동은 되어 있지 않고 클라이언트에서 사용할 수 있는 Google App Engine Launcher라는 툴을 제공한다. Django와 같은 널리 사용되는 Python Web Framework도 활용 가능하며 구글이 자체적으로 개발한 webapp이라는 간단한 Framework도 제공한다.
최근 Google이 만든 Go 언어도 새로이 추가되었다. 아직은 실험 단계로 제공되고 있는 것 같다.
현재 무료로 생성가능한 어플리케이션의 최대 개수는 10개로 제한되어 있다.
2. VMware - Cloud Foundry
Cloud Foundry는 VMware의 vSphere cloud 플랫폼 위에서 제공되는 PaaS로 Java Spring, Ruby on Rails, Ruby Sinatra, Grails 등의 개발 플랫폼을 지원한다. 데이터베이스로는 MySQL, MongoDB, Redis 등을 제공한다. 아직은 사용할 수 없지만 Micro Cloud라는 개인 개발용 VMware 이미지를 제공하여 자신의 개발 환경에 cloud 플랫폼을 구축하여 사용할 수 있도록 지원할 예정이라고 한다.
클라이언트 개발 환경은 vmc라는 command line 환경으로 되어있다. vmc로 로그인을 한 후 vmc가 제공하는 각종 명령을 이용하여 어플리케이션을 새로 생성한다거나 사용자의 패스워드를 변경한다거나 등등 여러가지 작업을 수행할 수 있다.
- Ruby Sinatra 어플리케이션 생성 예: http://hello_wonil.cloudfoundry.com/
가상화의 1인자가 제공하는 PaaS 답게 어플리케이션을 생성 시 새로이 만들어지는 가상머신의 메모리 등을 지정할 수 있는 옵션도 제공한다. 어플리케이션 이름만으로 URL이 결정되므로 먼저 이름을 선점하는 것이 좋다. (물론, URL이 별도로 있으면 DNS 설정으로 연결만 해두면 되겠지만)
- vmc runtimes 명령어로 출력해 본 Cloud Foundry가 현재 지원하는 런타임 종류
+--------+-------------+-----------+| Name | Description | Version |+--------+-------------+-----------+| node | Node.js | 0.4.5 || java | Java 6 | 1.6 || ruby18 | Ruby 1.8 | 1.8.7 || ruby19 | Ruby 1.9 | 1.9.2p180 |+--------+-------------+-----------+
3. Red Hat - OpenShift
OpenShift는 Express, Flex, Power의 3가지 버전으로 PaaS를 제공한다. 무료로 사용할 수 있는 Express 버전의 경우 Python, Ruby, PHP를 이용하여 어플리케이션을 개발 할 수 있다.
클라이언트 개발 환경은 Linux, Mac, Windows를 모두 지원하며 IDE에 통합된 개발환경 보다는 Ruby On Rails의 command 기반의 환경과 유사한 개발 도구를 제공한다.
- 계정 생성: https://openshift.redhat.com/app/user/new/express
- 시작하는 법: https://openshift.redhat.com/app/getting_started/express
위 시작하는 법 문서에 설명되어 있는 순서대로 따라하면 큰 어려움 없이 첫번째 웹 어플리케이션을 만들어 볼 수 있다. 한가지 주의할 점은 도메인 이름을 결정할 때 신중을 기해야 한다는 것! 일단 한번 만들고 나서 어떻게 변경할 수 있는지 아직 방법을 찾지 못했다. 도메인 이름을 결정하면 해당 도메인에 여러 어플리케이션을 만들 수 있다. 실제 site의 URL 이름은 <어플리케이션 이름>-<도메인 이름>.rhcloud.com 으로 만들어진다.
- PHP 어플리케이션 생성 예: http://lang-stackstatics.rhcloud.com/
클라이언트에서 개발한 코드를 서버에 적용하는 방법은 git을 이용한다. OpenShift Express 버전에서는 128MB까지 MySQL, PDO (PHP Data Object) 및 Amazon-RDS 데이터 공간을 사용할 수 있다.
개발 환경, SDK 지원 및 문서화 등을 놓고 보면 Google App Engine이 가장 좋은 환경을 제공하는 것으로 보인다. 단, PHP, Ruby 등의 다른 개발 언어를 지원하지 않고 또한, MySQL 등과 같은 널리 사용되는 데이터베이스를 지원하지 않는 점이 아쉽다.
References:
- Google IO 2011에서 소개된 Google App Engine 세션들
- App Engine Backends
- App Engine MapReduce
- Building Enterprise Application on App Engine
- Coding For The Cloud: How We Write Enterprise Apps for Google on App Engine
- Full Text Search
- Life in App Engine Production
- Under the covers of the High Replication Database
- Large-scale Data Analysis Using The App Engine Pipeline API
- Querying Freebase: Get More From MQL
- Scaling App Engine Applications
- Smart App Design
- Storing Your Application's Data in the Google Cloud
댓글
댓글 쓰기