클라우드 서비스에 대한 정리
Computer Science클라우드 서비스에 대한 좋은 사이트가 있어서 내용 공유합니다.
최근 IBM, MS, Google 등의 거대 기업들이 이 클라우드 컴퓨팅이라는 사업에 주력하고 있고, 열광하고 있다. 근데 정작 나는 소프트웨어 공학을 연구하는 한 사람으로 왜 이게 이렇게 각광을 받아야 하는지 제대로 조사해보지도 않고 있었다. (부끄럽다.)
이에, 클라우드 컴퓨팅이 무엇인지, 앞으로 어떻게 발전할 것인지를 지금에서라도 정리해보려고 한다.
1. 배경
1990년대 초, 웹이 시작되면서 짧다면 짧은 그 시간동안 세상의 많은 것들을 바꾸어 놓았다. 컴퓨팅 속도와 데스크탑의 보급률이 는 매년 기하급수적으로 증가하면서 이를 이용하는 사용자들의 웹으로의 진출이 용이해졌다. 이로인해 웹은 또 다른 사회의 모습이 되어갔고, 웹의 보편화를 가능케 하는 인프라도 복잡 및 다양해졌다.
지금은 이런 복잡한 인프라를 기반으로 사용자들의 요구사항을 충족시키기 위해 웹 기반의 서비스들이 다양하게 제공되고 있으며, 이런 측면에서 이젠 데스크탑은 그저 웹을 접속하기 위한 수단이 되었다. (웹으로의 플랫폼 및 소프트웨어 이동, SaaS - Software as a Service, PaaS - Platform as a Service)
사용자들은 웹에서 제공하는 다양한 서비스들로 인해 서버를 유지할 필요를 느끼지 못하게 되었고, 서버 유지를 대신해줄 인프라서비스도 구축하게 된다. 이를 IaaS (Infrastructure as a Service) 라고 말하고, 사용자가 원하는 방법으로 필요한 만큼 서버를 구축하여 사용한다는 개념을 웹에다 포함시킨다.
2. 정의
"클라우딩 컴퓨팅은 사용자의 환경 밖에서 서비스로서 제공된 확장 가능한 컴퓨팅 자원을 사용한 양에 따라 비용을 지불하고 사용하는 것" [1] 이라고 할 수 있다. 사용자는 사용한 자원에 대한 비용만을 지불하며 클라우드 환경에 있는 모든 자원을 언제 어디서나 인터넷을 통해 액세스 할 수 있다.
3. 클라우드 서비스의 유형
SaaS (Software as a Service)
PaaS (Platform as a Service) [2]
IaaS (Infrastructure as a Service) [1]
즉, 제공되는 범위가
SaaS < PaaS < IaaS 라고 생각할 수 있다.
* 접근 권한에 따라 공용 / 사설 / 혼용(VPN사용) 의 형태로 클라우드 서비스를 제공할 수 있다.
4. PaaS 클라우드 서비스들의 사례
Google App Engine (Google code) [5][6][7]
Google의 인프라에서 웹 애플리케이션을 실행할 수 있다. JVM(Java Virtual Machine) 기반의 애플리케이션을 실행하기 때문에 Java가 아닌 언어로도 애플리케이션을 작성할 수 있다. (JRuby, Scala, Clojure, Groovy, Jython, Beanshell 등)
제한사항
- 사용자는 Python이나, Java 기술을 이용하여 사용할 수 있는 표준 라이브러리의 서브세트만을 사용할 수 있다.
- CPU 요청량, 메모리, 파일의 크기 등에 대한 할당향이 정해진다.
- 애플리케이션에 전달되는 모든 요청은 30초 내에 리턴되어야 한다.
- 사용자는 해당 파일 시스템에 대한 액세스 권한을 가지고 있지 않으며 애플리케이션의 일부로 업로드된 정적 파일만을 읽을 수있다.
- App Engine 환경에서는 사용자가 스레드나 프로세스를 생성할 수 없다.
- App Engine에서 사용된 스토리지 백엔드는 스키마리스 키 값 데이터 저장소인 BigTable이다.
- App Engine은 HTTP 요청에서 트리거되는 코드만 실행할 수 있다.
* 현재 Google App Engine 을 오픈 소스로 구현한 AppScale[3] 도 존재한다. AppScale은 IaaS 클라우드에서 Google App Engine 애플리케이션을 쉽게 실행할 수 있게 하는 클라우드 컴퓨팅 플랫폼이다. AppScale은 Google App Engine 애플리케이션을 로컬에서 테스트하고 디버그할 수 있는 유용한 방식이다. (오픈소스, 실험용으로 유용, 사설 클라우드, App Engine 호환성)
테스트와 스테이징
웹 애플리케이션 전개 환경
스토리지 니즈
대용량 데이터 처리
6. 클라우드 서비스와 웹 서비스의 관계 (Discussion)
클라우드 서비스는 SOAP 과 REST를 사용하여 접근 하며, 서비스 제공자가 제공하는 API (Operation)의 동작원리를 알 필요가 없는 느슨한 결합(Loosely coupled)을 통해 재사용성을 향상시킨다는 점에서 웹 서비스의 일부라고 생각한다. 웹 서비스의 개념을 플랫폼, 인프라로 확대 해석하여 사용자에게 제공해준다는 개념으로, 사용자에게 있어서는 기존 웹 서비스와 같지만, 개발자 입장에선 기존의 개념만으로는 서비스 및 리소스 제공에 불완전한 측면이 많은 듯 하다. 이를 해결하기 위해서 IBM에선 Eucalyptus [1], 산타바바라 대학에서 제공하는 플랫폼인 AppSclae[3] 와 같은 인프라 혹은 플랫폼을 오픈소스 소프트웨어로 제공하기도 한다. 계층 적인 모델링, 리소스에 대한 체계적인 관리가 필요한 분야가 된 것 같다.
하지만, 이는 기존의 CBD(Component-based development), Reliable software, Grid computing 개발 측면에서 고려했던 항목들도 포함되어 있기 때문에, 클라우드 서비스만의 특징을 좀 더 공부 및 연구해 볼 필요가 있다.
* Cloud service's issues [4]
- Privacy
- Compliance
- Legal
- Open source
- Open Standard
- Security
- Availability and performance
- Sustainability and siting
Reference
[1] P. Changanti, 가상 인프라용 클라우드 서비스, Part 1: IaaS(Infrastructure as a Service) 및 Eucalyptus,
http://www.ibm.com/developerworks/kr/library/os-cloud-virtual1/index.html
[2] P. Changanti, 가상 인프라용 클라우드 서비스, Part 2: PaaS(Platform as a Service) 와 AppScale
http://www.ibm.com/developerworks/kr/library/os-cloud-virtual2/index.html
[3] AppScale Project wiki
http://code.google.com/p/appscale/w/list
[4] Wikipedia, Cloud Computing
http://en.wikipedia.org/wiki/Cloud_computing
[5] Google App Engine
http://code.google.com/intl/ko-KR/appengine/
[6] likejazz, 구글 웹 어플리케이션 플랫폼: App Engine
http://www.likejazz.com/archives/280
[7] 한날, Google App Engine으로 "안녕하세요, 여러분" 출력하기
http://www.hannal.net/blog/say_hello-world_on_google-app-engine_service/
[8] J. Han., Cloud Computing
http://webappscon.com/2008/uploads/Program/ws-2-2.pdf
출처: http://seulkom.tistory.com/entry/클라우드-서비스란-Cloud-Service [행복한 프로그래머]
'Computer Science' 카테고리의 다른 글
크로스 플랫폼 개발환경 (0) | 2012.05.03 |
---|---|
소프트웨어 개발론 간단한 정리 (1) | 2010.10.15 |
RAS (Remote Access Service)에 대한 간략한 설명 (0) | 2010.09.30 |
CODE Complete 2주만에 가까스로 읽어보다. (0) | 2010.09.27 |
프로그래머들의 신앙적인 문제들 (1) | 2010.09.26 |