클라우드 컴퓨팅
클라우드 컴퓨팅()은 인터넷 기반 컴퓨팅의 일종으로 정보를 자신의 컴퓨터가 아닌 인터넷에 연결된 다른 컴퓨터로 처리하는 기술을 의미한다. 공유 컴퓨터 처리 자원과 데이터를 컴퓨터와 다른 장치들에 요청 시 제공해준다. 구성 가능한 컴퓨팅 자원(예: 컴퓨터 네트워크, 서버, 스토리지, 애플리케이션, 서비스)에 대해 어디서나 접근이 가능한, 주문형 접근을 가능케하는 모델이며 최소한의 관리 노력으로 빠르게 예비 및 릴리스를 가능케 한다. 클라우드 컴퓨팅과 스토리지 솔루션들은 사용자와 기업들에게 개인 소유나 타사 데이터 센터의 데이터를 저장, 가공하는 다양한 기능을 제공하며 도시를 거쳐 전 세계로까지 위치해 있을 수 있다. 클라우드 컴퓨팅은 전기망을 통한 전력망과 비슷한 일관성 및 규모의 경제를 달성하기 위해 자원의 공유에 의존한다.
지지자들은 클라우드 컴퓨팅을 통해 기업들이 선행 투자 인프라스트럭처 비용(예: 서버 구매)을 없앨 수 있다고 주장한다. 그뿐 아니라, 단체들이 컴퓨터 인프라스트럭처에 시간과 비용을 들이는 대신 핵심 사업에 집중할 수 있게 한다. 또, 클라우드 컴퓨팅을 통해 기업들이 자신들의 응용 프로그램의 기동 및 실행 속도를 더 빠르게 할 수 있게 하여 취급 용이성을 개선시키고 유지보수를 줄여줄 수 있게 도와주며 정보기술(IT) 팀들이 유동적이고 예측 불가능한 사업 수요를 충족시키기 위해 자원을 더 빠르게 조절할 수 있게 한다. 클라우드 제공자들은 일반적으로 종량제(pay as you go) 모델을 사용한다. 관리자들이 클라우드 가격 모델에 적응하지 않을 경우 예상 밖으로 높은 비용을 지불할 수 있다.
2009년에 고용량 네트워크, 저비용 컴퓨터 및 스토리지 장치를 이용할 수 있게 되었을뿐 아니라 하드웨어 가상화, 서비스 지향 아키텍처, 자율 및 유틸리티 컴퓨팅이 널리 채택됨에 따라 클라우드 컴퓨팅의 성장으로 이어졌다. 기업들은 컴퓨팅의 수요가 증가함에 따라 규모를 키울 수 있고, 수요가 줄어들면 규모를 낮출 수 있다. 2013년, 클라우드 컴퓨팅은 높은 컴퓨팅 파워, 값싼 서비스 비용, 고성능, 확장성, 접근성, 이용성의 이점으로 인해 매우 수요가 높은 서비스나 유틸리티가 되었다. 일부 클라우드 업체들은 매년 50%의 성장률을 경험하고 있으나, 초기 단계이기 때문에 클라우드 컴퓨팅 서비스를 더 신뢰할만하고 사용자 친화적으로 만들어야 할 필요가 있다.
클라우드 서비스란 인터넷 상에 자료를 저장해 두고, 사용자가 필요한 자료나 프로그램을 자신의 컴퓨터에 설치하지 않고도 인터넷 접속을 통해 언제 어디서나 이용할 수 있는 서비스를 말한다. 클라우드 서비스를 통해 인터넷 상에 저장된 자료들은 간단한 조작 및 클릭으로 쉽게 공유하고 전달할 수 있다. 인터넷 상의 서버에 단순히 자료를 저장하는 것뿐만 아니라, 따로 프로그램을 설치하지 않아도 웹에서 제공하는 응용 프로그램의 기능을 이용하여 원하는 작업을 수행할 수 있으며, 여러 사람이 동시에 문서를 공유하면서 작업을 진행할 수도 있다.
"클라우드 컴퓨팅"이라는 용어의 개념은 분명하지 않다. "클라우드"라는 낱말은 일반적으로 과학에서 구름처럼 먼 거리에서 시각적으로 보이는 물건들의 커다란 집합체를 기술하기 위해 사용되며 주어진 문맥에서 세세한 부분이 더 이상 관찰되지 않는 물건들의 집합을 기술한다. 또 다른 설명으로는, 네트워크 도식들을 그려낸 오래된 프로그램들이 서버 아이콘을 원으로 둘러쌌으며 네트워크 도식 안의 서버 클러스터가 여러 겹치는 원들을 가지면서 클라우드(구름)와 닮게 되었다는 것이다. 위의 용례와 비슷하게 클라우드라는 낱말은 인터넷의 비유로서 사용되었으며 구름과 같은 표준화된 모양은 전화 도식망을 나타내기 위해 사용되었다. 나중에 컴퓨터 네트워크 다이어그램에 인터넷을 기술하기 위해 사용되었다. 클라우드 심볼은 이미 1977년의 오리지널 ARPANET 및 1981년의 CSNET의 컴퓨팅 장비망을 표현하기 위해 사용되었으며 둘 다 인터넷의 선구자이다.
클라우드(cloud)라는 용어는 분산 컴퓨팅을 위한 플랫폼을 가리키는데 사용되고 있다.
현대적 의미의 "클라우드 컴퓨팅"에 대한 참조는 컴팩 내부 문서의 초기 언급과 함께 1996년에 등장하였다.
이 용어가 대중화된 것은 아마존닷컴이 일래스틱 컴퓨트 클라우드를 선보였던 2006년으로 거슬러 올라간다.
1960년대 동안 시분할의 초기 개념이 RJE(원격 작업 입력)를 통해 대중화되었다. 이 용어는 IBM과 DEC와 같은 대형 업체들과 대부분 연계된다. 완전한 시분할 솔루션들은 1970년대 초에 멀틱스(GE 하드웨어), 케임브리지 CTSS와 최초 유닉스 포트(DEC 하드웨어)와 같은 플랫폼에서 이용이 가능하게 되었다. 그러나 사용자들이 IBM 메인프레임에서 작업을 오퍼레이터에 제출, 수행하는 "데이터 센터" 모델은 압도적으로 우월하였다.
1990년대에 주로 전용 P2P 데이터 회로를 제공했던 통신 회사들이 필적할만한 서비스 품질에 낮은 가격대로 가상 사설망(VPN) 서비스들을 제공하기 시작했다. 구름 모양의 기호를 사용하여 제공자가 책임져야 하는 것과 사용자가 책임져야 하는 경계점을 표시하기 시작했다. 클라우드 컴퓨팅은 이 경계를 확장하여 모든 서버뿐 아니라 네트워크 인프라스트럭처까지 적용하였다. 컴퓨터들이 더 확산되면서 과학자들과 기술자들은 시분할을 통해 대형 컴퓨팅 파워를 더 많은 사용자들에게 이용하는 방법을 탐구하였다. 그들은 CPU의 우선 순위를 변경하고 최종 사용자의 효율성을 증가시킬 목적으로 인프라스트럭처, 플랫폼, 응용 프로그램들을 최적화하기 위한 알고리즘을 실험하였다.
2000년 이후로 클라우드 컴퓨팅은 실체를 드러내기 시작했다. 2008년 초, 유럽연합 집행위원회의 투자를 받는 프로젝트 RESERVOIR에서 개량된 NASA의 오픈네뷸라(OpenNebula)는 폐쇄형 클라우드와 혼합형 클라우드를 배치시키고 클라우드들을 연합시키는 최초의 오픈 소스 소프트웨어가 되었다. 같은 해에 유럽연합 집행위원회의 투자를 받는 프로젝트 IRMOS의 프레임워크에서 클라우드 기반 인프라스트럭처에 서비스 품질 보증을 제공하는 노력이 집중되면서 실시간 클라우드 환경이 탄생하였다.
2006년 8월 아마존은 일래스틱 컴퓨트 클라우드를 선보였다. 마이크로소프트 애저는 "애저"(Azure)라는 이름으로 2008년 10월 발표되었고 2010년 2월 1일 "윈도우 애저"(Windows Azure)라는 이름으로 출시되었으며 2014년 3월 25일 마이크로소프트 애저로 이름이 변경되었다. 일시적으로 애저는 TOP500 슈퍼컴퓨터 목록에 등재되었다가 제거되었다. 2010년 7월 랙스페이스 호스팅과 NASA는 공동으로 오픈 소스 클라우드 소프트웨어 이니셔티브에 착수하였는데, 그 이름이 오픈스택이다. 오픈스택 프로젝트는 여러 단체들이 표준 하드웨어에서 구동되는 클라우드 컴퓨팅 서비스들의 제공을 돕기 위해 고안되었다. 초기 코드는 NASA의 네뷸라 플랫폼 및 랙스페이스 클라우드 파일 플랫폼에서 기인한다. 2011년 3월 1일 IBM은 스마터 플래닛을 지원하기 위해 IBM 스마트클라우드 프레임워크를 발표하였다. 스마트 컴퓨팅 파운데이션의 여러 구성 요소들 가운데 클라우드 컴퓨팅은 지극히 중요한 부분이다. 2012년 6월 7일 오라클은 오라클 클라우드를 발표하였다. 오라클 클라우드의 여러 측면들이 현재 개발 중이지만, 이 클라우드는 사용자들에게 응용 프로그램(SaaS), 플랫폼(PaaS), 인프라스트럭처(IaaS) 계층을 포함하여 통합된 IT 솔루션 집합에 최초로 접근할 수 있도록 태세를 갖추고 있다.
클라우드 컴퓨팅의 개념은 1965년 미국의 컴퓨터 학자인 존 매카시가 "컴퓨팅 환경은 공공 시설을 쓰는 것과도 같을 것" 이라는 개념을 제시한데에서 유래하였다. 1993년부터는 이미 클라우드라는 용어가 거대한 규모의 ATM을 지칭하는 데 쓰였다. General Magic라는 회사는 1995년 3월부터 AT&T와 다른 여러 통신사들과 제휴를 맺고 클라우드 컴퓨팅 서비스를 최초로 시작했다. 하지만 이 시기는 소비자 중심의 웹 기반이 형성되기 전의 일이었기 때문에 클라우드 컴퓨팅 사업은 당연히 실패했다. 그러나 10년이 지난 2005년에서야 클라우드 컴퓨팅이라는 단어가 널리 퍼지기 시작했다. 하지만 2005년 당시 클라우드 컴퓨팅의 대부분의 내용들은 SaaS에 집중되어 있었다. 2007년까지는 SaaS에 집중되어 있었지만 2008년부터는 더 이상 SaaS에만 집중되어 있지 않으며, IaaS, PaaS로 그 영역을 넓혀가게 되었다.
클라우드 컴퓨팅은 기존 기술들과 패러다임들의 발전 및 채택의 결과물이다. 클라우드 컴퓨팅의 목표는 사용자들이 각각의 기술에 대한 전문 지식이나 심도 있는 지식 없이도 이러한 기술들을 이용할 수 있도록 하는 것이다. 클라우드는 비용 절감을 목적으로 하며, IT 방해물들에 의해 지연되는 일 없이 핵심 사업에 집중할 수 있도록 도움을 준다. 클라우드 컴퓨팅의 주된 기술은 가상화이다. 가상화 소프트웨어는 물리적인 컴퓨팅 장치를 하나 이상의 가상 장치로 분리시키는 것으로, 컴퓨팅 작업들을 수행하기 위해 각 장치들을 쉽게 사용, 관리할 수 있다. 여러 독립적인 컴퓨팅 장치들의 규모 제어가 가능한 시스템을 만드는데 필수적인 운영 체제 수준 가상화와 함께 유휴 컴퓨팅 리소스들을 더 효율적으로 할당, 사용할 수 있다. 가상화는 IT 운영 속도를 높이는데 필요한 민첩성을 제공하며 인프라스트럭처 활용을 증가시킴으로써 비용을 줄여준다. 자율 컴퓨팅은 프로세스를 자동화하며, 이를 통해 사용자는 리소스 온 디맨드를 준비할 수 있다. 사용자가 수반되는 일을 최소화함으로써 자동화는 프로세스의 속도를 높이며 노동 비용을 낮추고 사람의 실수 가능성을 줄여준다. 사용자들은 어려운 비즈니스 문제들을 일상적으로 마주친다. 클라우드 컴퓨팅은 서비스 지향 아키텍처(SOA)의 개념을 채택하고 있으며 사용자가 이러한 문제들을 여러 서비스들로 분리시켜 이들을 하나의 솔루션으로 제공하기 위해 통합할 수 있도록 도움을 줄 수 있다. 클라우드 컴퓨팅은 모든 리소스들을 서비스로 제공하며 잘 정립된 표준과 SOA 분야에서 얻은 관행을 이용함으로써 표준화된 방법으로 클라우드 서비스에 대한 전역적이면서도 쉬운 접근을 할 수 있게 한다.
클라우드 컴퓨팅은 또한 유틸리티 컴퓨팅의 개념을 활용하여, 사용 중인 서비스들의 메트릭을 제공한다. 이러한 메트릭들은 공개형 클라우드 종량제 모델의 핵심에 위치해 있다. 또한, 측정된 장치들은 자율 컴퓨팅의 피드백 루프(feedback loop)의 필수적인 부분이며, 이를 통해 요청을 받으면 서비스들이 규모를 바꿀 수 있고 자동 재해 복구를 수행할 수 있게 한다. 클라우드 컴퓨팅은 일종의 그리드 컴퓨팅인데, QoS(서비스 품질), 신뢰성 문제로 인해 전개되었다. 클라우드 컴퓨팅은 데이터/연산 집약의 병렬 애플리케이션들을 빌드하기 위한 도구들과 기술들을 전통적인 병렬 컴퓨팅 기술 대비 훨씬 더 합당한 가격에 제공한다.
클라우드 컴퓨팅은 다음과 특징을 공유한다:
클라우드 컴퓨팅의 정의는 개인이 가진 단말기를 통해서는 주로 입/출력 작업만 이루어지고, 정보분석 및 처리, 저장, 관리, 유통 등의 작업은 클라우드라고 불리는 제3의 공간에서 이루어지는 컴퓨팅 시스템 형태라고 할 수 있다.
클라우드 컴퓨팅은 다음의 주요 특징들을 보여준다:
컴퓨터 네트워크 구성도에서 인터넷을 구름으로 표현한다. 이때 구름은 숨겨진 복잡한 인프라 구조를 의미한다. 사용자는 이러한 복잡한 인프라 구조를 알지 못해도 클라우드 컴퓨팅을 이용할 수 있다. 이용자들의 입장에서 제공자의 서비스들을 표현하는 네트워크 요소들은 마치 구름에 가려진 것처럼 눈에 보이지 않는다.
서비스 지향 아키텍처가 "모든 것을 서비스로"(everything as a service, EaaS, XaaS, aas)를 지지하지만 클라우드 컴퓨팅 제공자들은 각기 다른 모델에 따라 자신들의 서비스들을 제공하며, 이 모델의 세 가지 NIST 표준 모델은 서비스로서의 인프라스트럭처(IaaS), 서비스로서의 플랫폼(PaaS), 서비스로서의 소프트웨어(SaaS)가 있다. 이 모델들은 추상화를 증가시킨다. 이러한 연유로 이들은 종종 스택 내의 계층으로 묘사되지만(인프라스트럭처-, 플랫폼-, 서비스로서의 소프트웨어) 이들은 서로 관련될 필요는 없다. 이를테면 기반이 되는 PaaS나 IaaS 계층을 사용하지 않고 SaaS를 물리 머신(베어 메탈)에 구현할 수 있으며, 역으로 IaaS에서 프로그램을 실행하여 이것을 SaaS로 래핑(wrapping)하지 않고 직접 접근할 수 있다.
국제 인터넷 표준화 기구(IETF)에 따르면 가장 기본적인 클라우드 서비스 모델은 컴퓨팅 인프라스트럭처, 즉 가상 머신과 기타 자원들을 구독자에 대한 서비스로 제공하는 제공자들의 모델이다. IaaS는 물리적 컴퓨팅 자원, 위치, 데이터 파티셔닝, 확장, 보안, 백업과 같은 인프라스트럭처의 세세한 부분으로부터 사용자를 이끌어내는 온라인 서비스들을 가리킨다.
젠, 버추얼박스, 오라클 VM, KVM, VM웨어 ESX/ESXi, 하이퍼-V와 같은 하이퍼바이저는 게스트로 가상 머신을 실행한다. 클라우드 운영 체제 내의 하이퍼바이저 풀들은 많은 수의 가상 머신들 및 고객의 다양한 요구에 맞는 서비스의 확장/축소 기능을 지원할 수 있다. 리눅스 컨테이너들은 물리 하드웨어 상에서 직접 구동되는 단일 리눅스 커널의 격리된 파티션에서 실행된다. 리눅스 cgroups와 이름공간들은 컨테이너의 격리, 보안, 관리에 사용되는 기반 리눅스 커널 기술들이다. 컨테이너화는 가상화 보다 더 높은 성능을 제공하는데, 그 이유는 하이퍼바이저 부하가 없기 때문이다. 또, 컨테이너 용량은 컴퓨터 부하와 함께 동적으로 규모를 조절하므로 과도한 공급 문제를 해결하고 사용률 기반의 과금을 가능케 한다. IaaS 클라우드는 가상 머신 디스크 이미지 라이브러리, 로우(raw) 블록 스토리지, 파일 또는 오브젝트 스토리지, 방화벽, 로드 밸런서, IP 주소, 가상 근거리 통신망, 소프트웨어 번들과 같은 추가적인 자원들을 종종 제공한다.
IaaS 클라우드 제공자들은 요청이 오면 이러한 자원을 데이터 센터에 설치된 수많은 장비를 통해 제공해준다. 광역 연결의 경우 고객들은 인터넷이나 캐리어 클라우드(전용 가상 근거리 통신망) 중 하나를 사용할 수 있다. 응용 프로그램을 배치시키기 위해 클라우드 사용자들은 운영 체제 이미지와 자신들의 응용 소프트웨어를 클라우드 인프라스트럭처에 설치한다. 이 모델에서 클라우드 사용자는 운영 체제와 응용 소프트웨어의 패치 및 유지보수를 수행한다. 클라우드 제공자들은 일반적으로 IaaS 서비스를 유틸리티 컴퓨팅 기반으로 과금한다: 비용은 할당 및 소비된 자원의 양을 반영한다.
AWS에서 제공하는 EC2가 대표적인 예이다. 이는 단순히 서버 등의 자원을 제공해 주면서 사용자가 디바이스에 제약없이 데이터에 접근할 수 있도록 해준다.
PaaS 벤더들은 응용 프로그램 개발자들에게 개발 환경을 제공한다. 제공자는 일반적으로 개발을 위한 툴킷과 표준, 그리고 배포 및 지불을 위한 채널을 개발한다. PaaS 모델에서 클라우드 제공자들은 일반적으로 운영 체제, 프로그래밍 언어 실행 환경, 데이터베이스, 웹 서버를 포함한 컴퓨팅 플랫폼을 배급한다. 응용 프로그램 개발자들은 기반 하드웨어 및 소프트웨어 계층을 구매하고 관리하는 비용이나 복잡성 없이도 자신들의 소프트웨어 솔루션을 클라우드 플랫폼에서 개발, 실행할 수 있다. 마이크로소프트 애저, 구글 앱 엔진과 같은 일부 PaaS에서 기반이 되는 컴퓨터, 스트로지 자원은 응용 프로그램 수요에 맞추기 위해 자동으로 규모를 조정하며 이로써 클라우드 사용자는 자원을 수동으로 할당하지 않아도 된다. 후자는 또한 클라우드 환경에서 실시간으로 편의를 도모하는 것을 목적으로 하는 아키텍처에 의해 제안되고 있다. 훨씬 더 세세한 응용 프로그램 종류가 PaaS를 통해 제공될 수 있는데, 이를테면 bitcodin.com이나 media.io에서 제공하는 미디어 인코딩을 예로 들 수 있다.
일부 연동 및 데이터 관리 제공자들은 데이터 솔루션을 위한 배급 모델로서 PaaS의 특수한 애플리케이션들을 받아들였다. 그 예로 iPaaS(서비스로서의 연동 플랫폼: Integration Platform as a Service), dPaaS(서비스로서의 데이터 플랫폼: Data Platform as a Service)이 있다. iPaaS는 고객들이 연동 플로를 개발, 실행, 관리할 수 있게 한다. iPaaS 연동 모델에서 고객들은 하드웨어나 미들웨어를 설치하거나 관리하지 않고 통합에 대한 개발 및 배치를 추진할 수 있다. dPaaS는 완전 관리가 가능한 서비스로서 통합 및 데이터 관리 제품을 배급한다. dPaaS 모델에서 고객이 아닌 PaaS 제공자는 고객에게 맞추어진 데이터 애플리케이션들을 빌드함으로써 데이터 솔루션의 개발 및 실행을 관리한다. dPaaS 사용자들은 데이터 시각화 도구를 통해 데이터에 대한 투명성 및 통제권을 획득한다. PaaS의 소비자들은 네트워크, 서버, 운영 체제, 스토리지를 포함한 기반 클라우드 인프라스트럭처를 관리하거나 통제하지 않지만 배치된 응용 프로그램이라든지, 응용 프로그램 호스팅 환경을 위한 구성 설정을 제어할 수 있다.
최근의 전문화된 PaaS로 BaaS(서비스로서의 블록체인)이 있으며, 마이크로소프트 애저와 같은 일부 벤더들은 이미 자신들의 PaaS에 포함시켜 놓고 있다.
사용자(개발자)가 소프트웨어 개발을 할 수 있는 환경을 제공해 주는 PaaS의 예로, 구글의 APP 엔진, Heroku 등이 대표적인 예다.
SaaS 모델에서 사용자들은 응용 소프트웨어와 데이터베이스에 대한 접근 권한을 가진다. 클라우드 제공자들은 응용 프로그램을 실행하는 인프라스트럭처와 플랫폼을 관리한다. SaaS는 "주문형 소프트웨어"(on-demand software)를 가리키기도 하며 가격 정책은 일반적으로 종량제(pay-per-use) 기반이거나 구독 비용 기반이다. SaaS 모델에서 클라우드 제공자들은 클라우드에 응용 소프트웨어를 설치, 운영하며 클라우드 사용자들은 클라우드 클라이언트의 소프트웨어를 접근한다. 클라우드 사용자들은 이러한 응용 프로그램들이 실행하는 클라우드 인프라스트럭처와 플랫폼을 관리하지 않는다. 이로 말미암아 클라우드 사용자 자신의 컴퓨터에 응용 프로그램을 설치하고 실행할 필요가 없으므로 유지보수와 지원이 단순하게 된다.
클라우드 응용 프로그램들은 확장성 관점에서 다른 응용 프로그램들과 차이가 있는데, 확장성은 변화하는 작업 수요를 충족하기 위해 런타임 중에 태스크들을 여러 개의 가상 머신으로 복제함으로써 수행할 수 있다. 로드 밸런서들은 가상 머신들의 집합을 통해 작업을 분산시킨다. 이 과정은 오직 하나의 단일 액세스 포인트를 바라보는 클라우드 사용자에게는 투명하게 보인다. 수많은 클라우드 사용자들을 수용하기 위해 클라우드 애플리케이션들은 멀티테넌트일 수 있으며, 즉 어떠한 머신이라도 하나 이상의 클라우드 사용자 조직에 서비스를 제공할 수 있다는 것을 뜻한다.
SaaS 애플리케이션의 가격 정책 모델은 사용자 당 월별, 연별 고정 수수료인 것이 보통이므로 특정 지점에서 사용자가 추가되거나 제거되면 가격은 조정될 수 있다. 지지자들은 SaaS가 하드웨어 및 소프트웨어 유지보수 및 지원을 클라우드 제공자에게 위탁함으로써 비즈니스에 드는 IT 운영 비용을 줄일 가능성을 제공한다고 주장한다. 즉, 다른 목표를 충족하기 위해 비즈니스가 하드웨어/소프트웨어 및 인력에 드는 IT 운용 비용을 재할당할 수 있게 한다. 게다가 중앙 관리되는 애플리케이션들을 통해 사용자가 새로운 소프트웨어를 설치하지 않고도 업데이트를 출시할 수 있다. SaaS의 단점은 사용자 데이터를 클라우드 제공자의 서버에 저장하는 점에서 비롯된다. 그 결과 데이터에 대해 인증되지 않은 접근이 있을 가능성이 있다. 이러한 이유로 사용자들은 인텔리전트 서드파티 키 관리 시스템을 채택하여 자신들의 데이터의 보안을 지원한다.
SaaS의 경우, 네이버에서 제공하는 네이버 클라우드, 드롭박스, 구글 문서 등을 예로 들 수 있다.
서비스 (m) 모델로서의 모바일 백엔드, 즉 서비스로서의 백엔드(backend as a service, BaaS)에서 웹 앱과 모바일 앱 개발자들은 자신들의 애플리케이션들을 자신의 애플리케이션과 커스텀 SDK에 노출되는 API를 갖춘 클라우드 컴퓨팅 서비스와 클라우드 스토리지를 연결하는 방법을 제공받는다. 서비스에는 사용자 관리, 푸시 알림, 소셜 네트워킹 서비스와의 연동 등을 포함한다. 이것은 클라우드 컴퓨팅에서 상대적으로 최근에 나온 모델이며, 대부분의 BaaS 스타트업 컴퍼니는 2011년 이후부터 모습을 드러내기 시작했지만 이러한 서비스들이 기업 소비자들에게 상당한 주류 견인력을 얻고 있는 추세이다.
서버리스 컴퓨팅은 클라우드 컴퓨팅 코드 실행 모델의 하나로, 클라우드 제공자가 서비스 요청의 필요에 따라 가상 머신을 시작하고 중단하는 일을 온전히 관리하며 시간 당, 가상 머신 당 개념이 아닌 요청 충족에 필요한 자원의 추상적인 측정에 의해 과금된다. "서버리스 컴퓨팅"이라는 이름에도 불구하고 실제로 서버 없는 코드의 실행은 수반되지 않는다. 서버리스 컴퓨팅이라는 이름이 붙여진 이유는 시스템을 소유하는 사업체나 사람이 백엔드 코드를 실행하기 위해 서버나 가상 머신을 구매, 임대, 예비할 필요가 없기 때문이다.
사용자들은 데스크톱 컴퓨터, 랩톱, 태블릿, 스마트폰 및 홈 오토메이션 가젯 등의 이더넷 장치와 같은 네트워크화된 클라이언트 장치들을 이용하여 클라우드 컴퓨팅에 접근한다. 클라우드 클라이언트라는 장치들 가운데 일부는 자신들의 응용 프로그램의 전부 또는 대부분을 위해 클라우드 컴퓨팅에 의존하는데 이것이 필수불가결이기 때문이다. 신 클라이언트와 브라우저 기반 크롬북이 그 예이다. 수많은 클라우드 애플리케이션들은 클라이언트에 특정 소프트웨어를 요구하지 않으며 그 대신 웹 브라우저를 사용하여 클라우드 애플리케이션과 상호 작용한다. Ajax와 HTML5를 사용하여 이 웹 사용자 인터페이스들은 네이티브 애플리케이션에 견주어 비슷하거나 훨씬 더 좋은 룩 앤드 필을 달성할 수 있다. 그러나 일부 클라우드 애플리케이션들은 이러한 애플리케이션들을 전문으로 하는 특정 클라이언트 소프트웨어를 지원한다. (예: 가상 데스크톱 클라이언트 및 대부분의 이메일 클라이언트) 일부 레거시 애플리케이션들(현재까지 신 클라이언트 컴퓨팅에 일반화된 일련의 비즈니스 애플리케이션)은 화면 공유 기술을 통해 배포된다.
폐쇄형 클라우드(private cloud, 프라이빗 클라우드)는 오직 하나의 단체를 위해서만 운영되는 클라우드 인프라스트럭처의 하나로, 내부적으로나 서드파티에 의해 관리를 받거나 내외부적으로 호스팅된다. 폐쇄형 클라우드 프로젝트를 떠맡을 경우 어느 정도 수준의 비즈니스 환경 가상화가 수반될 필요가 있으며 단체가 기존 자원에 대한 결정사항들을 재평가할 필요가 있다. 잘 마쳤을 때 비즈니스를 개선할 수 있지만 프로젝트의 모든 단계가 심각한 취약점 예방을 해야 하는 보안 문제를 일으킨다. 자체 운영 데이터 센터들은 일반적으로 자본 집약적이다. 공간, 하드웨어, 환경 제어의 할당이 필요한 중대한 물리적 발자취가 있다. 이러한 자산들은 주기적으로 갱신되어야 하며, 그 결과 추가적인 자본 비용이 소요된다. 사용자들이 여전히 이것들을 구매, 빌드, 관리해야 하므로 직접 챙겨야 하는 관리가 덜하다는 데에서부터 이점을 얻는 것이 아니기 때문에 비평을 받았다. (특히 클라우드 컴퓨팅을 매력적인 개념으로 만드는 환경 모델이 부족하여)
공개형 클라우드(public cloud, 퍼블릭 클라우드)는 공개적 이용을 위해 열린 네트워크를 통해 렌더링되는 클라우드이다. 공개형 클라우드 서비스들은 무료일 수 있다. 기술적으로 공개형과 폐쇄형 클라우드 아키텍처 간 차이가 거의 없거나 아예 없을 수 있으나, 통신이 신뢰되지 않은 네트워크 상에서 영향을 받으면서 대중을 위해 서비스 제공자에 의해 이용 가능하게 된 서비스들마다 보안적으로 고려할 사항이 본질적으로 다를 수 있다. 일반적으로, 아마존 웹 서비스(AWS), 마이크로소프트, 구글과 같은 공개형 클라우드 서비스 제공자들은 자신들의 데이터 센터를 소유, 운영하고 있으며 접근은 일반적으로 인터넷을 통한다. AWS와 마이크로소프트는 각각 "AWS Direct Connect"와 "Azure ExpressRoute"라는 직접 연결 서비스들을 제공하며, 이러한 연결은 클라우드 제공자가 제공하는 피어링 포인트에 대한 폐쇄형 연결의 구매나 임대를 고객에게 요구한다.
혼합형 클라우드(hybrid cloud, 하이브리드 클라우드)는 뚜렷한 실체는 유지하지만 함께 묶여있는 둘 이상의 클라우드(폐쇄형, 커뮤니티, 또는 공개형)의 조합으로, 여러 개의 배치 모델들의 이점을 제공한다. 혼합형 클라우드는 병설(collocation), 매니지드 및 데디케이티드 서비스를 클라우드 자원과 연결하는 기능을 의미할 수도 있다. 가트너는 혼합형 클라우드를 다른 서비스 제공자들로부터 제공되는 폐쇄형, 공개형, 커뮤니티 클라우드 서비스들이 어느 정도 복합된 하나의 클라우드 컴퓨팅 서비스로 정의한다. 혼합형 클라우드 서비스는 격리 부분과 제공자 간 경계를 교차하므로 단순히 폐쇄형, 공개형, 커뮤니티 클라우드 서비스 중 하나의 분류에 집어넣을 수 없다. 다른 클라우드 서비스와의 애그리게이션, 연동, 커스터마이즈를 통해 클라우드 서비스의 용적의 확장을 허용한다.
커뮤니티 클라우드는 공통 관심사(보안, 법 준수, 관할권 등)를 가진 특정 커뮤니티의 여러 조직들 간에 인프라스트럭처를 공유하며, 내부적으로 또는 서드파티에 의해 관리되거나
내외부적으로 호스팅된다. 공개형 클라우드 보다 더 적은 (그러나 폐쇄형 클라우드 보다는 더 많은) 수의 사용자들에게 비용이 전가되므로 클라우드 컴퓨팅에 잠재적인 비용 절감 중 일부분만 실현된다.
클라우드 컴퓨팅 플랫폼은 각기 다른 위치의 분산된 집합의 머신들로부터 조합되어 하나의 네트워크나 허브 서비스로 연결된다. 두 종류의 분산형 클라우드로 구별이 가능하다: 퍼블릭 리소스 컴퓨팅, 볼런티어 클라우드.
인터클라우드는 서로 연결된 글로벌 클라우드의 클라우드이며 기반이 되는 인터넷 네트워크의 네트워크에 대한 확장이다. 공개형 클라우드 서비스 제공자들 간의 직접적인 상호운용성에 초점을 맞추고 있으며, 이는 제공자들과 소비자들 간의 것 보다 더한 편이다. (마치 복합형 클라우드와 멀티클라우드의 사례와 같음)
멀티클라우드는 단일 벤더에 대한 의존성을 줄이고 선택을 통한 유연성을 향상시키고 장애에 대한 불편을 줄이는 등을 하기 위해 하나의 이기종 아키텍처 안에서 여러 개의 클라우드 컴퓨팅 서비스의 이용을 뜻한다. 여러 개의 배치 모드(공개형, 폐쇄형, 레거시)가 아닌 여러 개의 클라우드 서비스를 가리킨다는 점에서 복합형 클라우드와는 차이가 있다.
클라우드 컴퓨팅 배포를 수반하는 소프트웨어 시스템의 시스템 아키텍처인 클라우드 아키텍처는 메시징 큐와 같은 소결합(loose coupling) 매커니즘 상에 서로 통신하는 보통 복수의 클라우드 구성 요소를 동반한다. 일래스틱 프로비전은 이러한 매커니즘들에 적용될 때 소결합이나 밀결합(tight coupling)을 사용하는 지능을 암시한다.
클라우드 엔지니어링은 클라우드 컴퓨팅에 대한 공학적 응용이다. 클라우드 컴퓨팅 시스템의 구상, 개발, 운영, 유지보수를 할 때 상용화, 표준화, 관리에 대해 표면적으로 걱정하는 부분들에 대한 체계적인 접근을 가져다준다. 시스템, 소프트웨어, 웹, 성능공학, 정보, 보안, 플랫폼, 위험, 품질 공학과 같은 다양한 분야의 기여를 아우르는 종합적인 방식이다.
클라우드 컴퓨팅은 서비스 제공자가 클라우드 안에 위치한 데이터를 언제든지 접근할 수 있기 때문에 프라이버시 문제를 노출한다. 우연히 또는 고의적으로 정보를 변조, 심지어는 삭제할 수도 있다. 수많은 클라우드 제공자들은 필요하면 (심지어는 긴급으로) 법적인 이유나 요청으로, 서드 파티들과 정보를 공유할 수 있다. 이것은 사용자가 클라우드 서비스를 이용하기 전 동의해야 할 경우 개인정보 정책에서 허가된다. 프라이버시에 대한 해결책으로는 정책과 법뿐 아니라 어떻게 데이터가 저장되는지에 대한 최종 사용자의 선택을 포함한다. 사용자들은 클라우드 내에 처리, 저장되는 데이터를 암호화하여 인가되지 않은 접근을 막을 수 있다.
클라우드 시큐리티 얼라이언스에 따르면, 클라우드 최고의 3가지 위협들은 "안전하지 않은 인터페이스와 API", "데이터 손실 및 유출", "하드웨어 고장"으로, 모든 클라우드 보안 문제 가운데 각각 29%, 25%, 10%를 차지한다. 이와 더불어 이것들은 공유된 기술 취약성을 형성한다. 다른 사용자들이 공유하는 클라우드 제공자 플랫폼에서 다른 고객에 속한 정보가 동일한 데이터 서버에 상주할 가능성이 있다. 그러므로 한 고객의 정보가 다른 고객에게 제공될 때 실수에 의하여 정보 유출이 일어날 수 있다. 게다가 Emagined Security의 최고기술책임자 유진 슐츠는 해커들이 클라우드에 침투하기 위한 방법을 찾는데 상당한 시간과 노력을 들이고 있다고 말했다. "클라우드 인프라스트럭처에 실제 아킬레스건들이 일부 있는데, 이것들은 나쁜 사람들이 들어갈 수 있게 큰 구멍을 만든다." 수백, 수천 개의 회사들의 데이터가 대형 클라우드 서버들에 저장될 수 있기 때문에 해커들은 이론적으로 한 번의 공격으로 엄청난 양의 정보에 대한 통제권을 얻을 수 있다. 이에 대한 예로는 드롭박스 보안 침입, 아이클라우드 2014 유출 사건을 들 수 있다. 드롭박스는 2014년 10월 침입을 받아 7,000,000 건 이상의 사용자 암호들이 도난을 당했는데, 이는 해커들이 BTC(비트코인)으로 금전적 이윤을 취하려는 가운데 이루어졌다. 이러한 암호를 보유함으로써 개인 데이터를 읽을 수 있을뿐 아니라 이 데이터를 검색 엔진에 의해 색인화시킬 수 있다. (정보를 공개함으로써)
데이터의 법적인 소유권의 문제가 있다. (사용자가 데이터 일부를 클라우드에 저장하면 클라우드 제공자가 그로부터 이윤을 취할 수 있는지에 대한) 수많은 서비스 동의 조항들은 소유권 질문에 침묵한다. 컴퓨터 동등(폐쇄형 클라우드)의 물리적인 통제는 다른 사용자의 통제(공개형 클라우드) 하 및 장비를 외부에 비치시키는 것 보다 더 안전하다. 이는 공개형 클라우드 컴퓨팅 서비스 제공자들이 안전한 서비스의 빌드, 유지보수, 튼튼한 관리를 하도록 강력하게 유도한다. IT 보안에 전문지식이 없는 일부 소형 사업체들은 공개형 클라우드를 사용하는 것이 더 안전하다는 것을 발견할 수 있다. 최종 사용자들이 클라우드 서비스에 로그인할 때 수반되는 문제들을 이해하지 못하는 위험이 있다. (사람들은 수많은 페이지들의 서비스 동의 조항을 읽지 않고 "수락"을 클릭) 클라우드 컴퓨팅이 대중화되고 이룹 서비스들이 동작하게끔 해야한다는 점에서 이것은 매우 중요하다. (예를 들어 지능형 가상 비서처럼) 본질적으로 폐쇄형 클라우드는 소유자의 더 높은 통제권이 있어 더 안전해 보이지만 공개형 클라우드는 더 유연해 보이고 사용자로부터 시간과 돈에 대한 투자가 덜 들어간다.브루스 슈나이어에 따르면 "단점으로는 제한된 커스터마이즈 옵션을 갖게 된다는 점이다. 클라우드 컴퓨팅은 규모의 경제로 인해 값이 더 싸며 - 다른 모든 위탁 업무처럼 - 당신이 얻으려는 것을 얻는 경향이 있다. 제한된 메뉴의 식당은 어떠한 요리라도 조리할 수 있는 개인 요리사 보다 값이 더 싸다. 훨씬 더 싼 가격에 더 적은 옵션: 이것은 기능이지, 버그는 아니다."라고 언급했다. 또, 그는 "클라우드 제공자는 당신의 법적인 요구에 충족하지 못할 수 있으며" 이러한 위험에 대항하여 사업체들은 클라우드 컴퓨팅의 이점을 저울질할 필요가 있다고 넌지시 이야기한다. 클라우드 컴퓨팅에서 백엔드 인프라스트럭처의 제어는 클라우드 벤더만 할 수 있다. 클라우드 제공자들은 종종 클라우드 사용자들이 자신들의 배치와 함께 할 수 있는 것을 조정하는 관리 정책을 결정한다. 클라우드 사용자들은 또한 자신의 애플리케이션, 데이터, 서비스의 제어 및 관리까지로 제한을 받는다. 여기에는 각 고객마다 특정한 양의 대역을 할당하는 클라운드 벤더에 의해 클라우드 사용자에게 부여되는 데이터 캡(계약된 트래픽 상한)을 포함하며 데이터 캡은 종종 다른 클라우드 사용자들과 공유된다.
클라우드 컴퓨팅은 시장 공급적이므로 지금도 연구 주제이다. 클라우드 컴퓨팅 서비스 발전을 통해 분명한 것은 최고기술책임자(CTO)가 클라우드 채택에 대한 주된 추진력이라는 점이다. 주요 클라우드 기술 개발자들은 클라우드 연구개발로 한 해에 10억 달러를 투자한다. 이를테면 2011년에 마이크로소프트는 미국 $9.6bn 연구개발 예산 중 90%를 자사의 클라우드에 사용했다. Centaur Partners는 SaaS 소득이 2011년 US$13.5B에서 2016년 $32.8B로 성장할 것이라고 예측한다. 이러한 설명은 또한 금융 및 회계 SaaS를 포함한다. 게다가 더 많은 산업들이 부하 비용, 다운타임을 줄이고 인프라스트럭처 배치는 자동화하는 기능 때문에 품질 서비스 개선을 위한 효율적인 방법으로서 클라우드 기술로 선회하고 있다.