**클라우드 컴퓨팅**은 사용자의 직접적인 활발한 관리 없이 특히, 데이터 스토리지(클라우드 스토리지)와 컴퓨팅 파워와 같은 컴퓨터 시스템 리소스를 필요시 바로 제공(on-demand availability)하는 것을 말한다. 일반적으로는 인터넷 기반 컴퓨팅의 일종으로 정보를 자신의 컴퓨터가 아닌 클라우드에 연결된 다른 컴퓨터로 처리하는 기술을 의미한다. 공유 컴퓨터 처리 자원과 데이터를 컴퓨터와 다른 장치들에 요청 시 제공해준다. 구성 가능한 컴퓨팅 자원에 대해 어디서나 접근할 수 있는, 주문형 접근(on-demand availability of computer system resources)을 가능케하는 모델이며 도시를 거쳐 전 세계로까지 위치해 있을 수 있다. 클라우드 컴퓨팅은 전기망을 통한 전력망과 비슷한 일관성 및 규모의 경제를 달성하기 위해 자원의 공유에 의존한다.

지지자들은 클라우드 컴퓨팅을 통해 기업들이 선행 투자 인프라스트럭처 비용(예: 서버 구매)을 없앨 수 있다고 주장한다. 그뿐 아니라, 단체들이 컴퓨터 인프라스트럭처에 시간과 비용을 들이는 대신 핵심 사업에 집중할 수 있게 한다.

2009년에 고용량 네트워크, 저비용 컴퓨터 및 스토리지 장치를 이용할 수 있게 되었을 뿐 아니라 하드웨어 가상화, 서비스 지향 아키텍처, 자율 및 유틸리티 컴퓨팅이 널리 채택됨에 따라 클라우드 컴퓨팅의 성장으로 이어졌다.

## 역사

### 용어의 기원
"클라우드 컴퓨팅"이라는 용어의 개념은 분명하지 않다. "클라우드"라는 낱말은 일반적으로 과학에서 구름처럼 먼 거리에서 시각적으로 보이는 물건들의 커다란 집합체를 기술하기 위해 사용되며 주어진 문맥에서 세세한 부분이 더 이상 관찰되지 않는 물건들의 집합을 기술한다.의 컴퓨팅 장비망을 표현하기 위해 사용되었으며 둘 다 인터넷의 선구자이다.

클라우드(cloud)라는 용어는 분산 컴퓨팅을 위한 플랫폼을 가리키는 데 사용되고 있다.

현대적 의미의 "클라우드 컴퓨팅"에 대한 참조는 컴팩 내부 문서의 초기 언급과 함께 1996년에 등장하였다.
이 용어가 대중화된 것은 아마존닷컴이 일래스틱 컴퓨트 클라우드를 선보였던 2006년으로 거슬러 올라간다. 일시적으로 애저는 TOP500 슈퍼컴퓨터 목록에 등재되었다가 제거되었다.

## 개념
클라우드 컴퓨팅의 개념은 1965년 미국의 컴퓨터 학자인 존 매카시가 "컴퓨팅 환경은 공공 시설을 쓰는 것과도 같을 것"이라는 개념을 제시한데에서 유래하였다. 1993년부터는 이미 클라우드라는 용어가 거대한 규모의 ATM을 지칭하는 데 쓰였다. General Magic라는 회사는 1995년 3월부터 AT&T와 다른 여러 통신사들과 제휴를 맺고 클라우드 컴퓨팅 서비스를 최초로 시작했다. 하지만 이 시기는 소비자 중심의 웹 기반이 형성되기 전의 일이었기 때문에 클라우드 컴퓨팅 사업은 당연히 실패했다. 그러나 10년이 지난 2005년에서야 클라우드 컴퓨팅이라는 단어가 널리 퍼지기 시작했다. 하지만 2005년 당시 클라우드 컴퓨팅의 대부분의 내용들은 SaaS에 집중되어 있었다. 2007년까지는 SaaS에 집중되어 있었지만 2008년부터는 더 이상 SaaS에만 집중되어 있지 않으며, IaaS, PaaS로 그 영역을 넓혀가게 되었다.

### 비슷한 개념
클라우드 컴퓨팅은 기존 기술들과 패러다임들의 발전 및 채택의 결과물이다. 클라우드 컴퓨팅의 목표는 사용자들이 각각의 기술에 대한 전문 지식이나 심도 있는 지식 없이도 이러한 기술들을 이용할 수 있도록 하는 것이다. 클라우드는 비용 절감을 목적으로 하며, IT 방해물들에 의해 지연되는 일 없이 핵심 사업에 집중할 수 있도록 도움을 준다. 사용자들은 어려운 비즈니스 문제들을 일상적으로 마주친다. 클라우드 컴퓨팅은 서비스 지향 아키텍처(SOA)의 개념을 채택하고 있으며 사용자가 이러한 문제들을 여러 서비스들로 분리시켜 이들을 하나의 솔루션으로 제공하기 위해 통합할 수 있도록 도움을 줄 수 있다. 클라우드 컴퓨팅은 모든 리소스들을 서비스로 제공하며 잘 정립된 표준과 SOA 분야에서 얻은 관행을 이용함으로써 표준화된 방법으로 클라우드 서비스에 대한 전역적이면서도 쉬운 접근을 할 수 있게 한다.

클라우드 컴퓨팅은 또한 유틸리티 컴퓨팅의 개념을 활용하여, 사용 중인 서비스들의 메트릭을 제공한다. 이러한 메트릭들은 공개형 클라우드 종량제 모델의 핵심에 위치해 있다. 또한, 측정된 장치들은 자율 컴퓨팅의 피드백 루프(feedback loop)의 필수적인 부분이며, 이를 통해 요청을 받으면 서비스들이 규모를 바꿀 수 있고 자동 재해 복구를 수행할 수 있게 한다. 클라우드 컴퓨팅은 일종의 그리드 컴퓨팅인데, QoS(서비스 품질), 신뢰성 문제로 인해 전개되었다. 클라우드 컴퓨팅은 데이터/연산 집약의 병렬 애플리케이션들을 빌드하기 위한 도구들과 기술들을 전통적인 병렬 컴퓨팅 기술 대비 훨씬 더 합당한 가격에 제공한다.

클라우드 컴퓨팅은 다음과 같은 특징을 공유한다:

## 특징
클라우드 컴퓨팅의 정의는 개인이 가진 단말기를 통해서는 주로 입/출력 작업만 이루어지고, 정보분석 및 처리, 저장, 관리, 유통 등의 작업은 클라우드라고 불리는 제3의 공간에서 이루어지는 컴퓨팅 시스템 형태라고 할 수 있다.

클라우드 컴퓨팅은 다음의 주요 특징들을 보여준다:

### 모식도
컴퓨터 네트워크 구성도에서 인터넷을 구름으로 표현한다. 이때 구름은 숨겨진 복잡한 인프라 구조를 의미한다. 사용자는 이러한 복잡한 인프라 구조를 알지 못해도 클라우드 컴퓨팅을 이용할 수 있다. 이용자들의 입장에서 제공자의 서비스들을 표현하는 네트워크 요소들은 마치 구름에 가려진 것처럼 눈에 보이지 않는다.

## 서비스 모델
서비스 지향 아키텍처가 "모든 것을 서비스로"를 지지하지만
 이들은 서로 관련될 필요는 없다. 이를테면 기반이 되는 PaaS나 IaaS 계층을 사용하지 않고 SaaS를 물리 머신(베어 메탈)에 구현할 수 있으며, 역으로 IaaS에서 프로그램을 실행하여 이것을 SaaS로 래핑(wrapping)하지 않고 직접 접근할 수 있다.

### 서비스형 인프라스트럭처 (IaaS)
국제 인터넷 표준화 기구(IETF)에 따르면 가장 기본적인 클라우드 서비스 모델은 컴퓨팅 인프라스트럭처, 즉 가상 머신과 기타 자원들을 구독자에 대한 서비스로 제공하는 제공자들의 모델이다. IaaS는 물리적 컴퓨팅 자원, 위치, 데이터 파티셔닝, 확장, 보안, 백업과 같은 인프라스트럭처의 세세한 부분으로부터 사용자를 이끌어내는 온라인 서비스들을 가리킨다.
젠, 버추얼박스, 오라클 VM, KVM, VM웨어 ESX/ESXi, 하이퍼-V와 같은 하이퍼바이저는 게스트로 가상 머신을 실행한다. 클라우드 운영 체제 내의 하이퍼바이저 풀들은 많은 수의 가상 머신들 및 고객의 다양한 요구에 맞는 서비스의 확장/축소 기능을 지원할 수 있다. 리눅스 컨테이너들은 물리 하드웨어 상에서 직접 구동되는 단일 리눅스 커널의 격리된 파티션에서 실행된다. 리눅스 cgroups와 이름공간들은 컨테이너의 격리, 보안, 관리에 사용되는 기반 리눅스 커널 기술들이다. 컨테이너화는 가상화 보다 더 높은 성능을 제공하는데, 그 이유는 하이퍼바이저 부하가 없기 때문이다. 또, 컨테이너 용량은 컴퓨터 부하와 함께 동적으로 규모를 조절하므로 과도한 공급 문제를 해결하고 사용률 기반의 과금을 가능케 한다. IaaS 클라우드는 가상 머신 디스크 이미지 라이브러리, 로우(raw) 블록 스토리지, 파일 또는 오브젝트 스토리지, 방화벽, 로드 밸런서, IP 주소, 가상 근거리 통신망, 소프트웨어 번들과 같은 추가적인 자원들을 종종 제공한다. PaaS의 소비자들은 네트워크, 서버, 운영 체제, 스토리지를 포함한 기반 클라우드 인프라스트럭처를 관리하거나 통제하지 않지만 배치된 응용 프로그램이라든지, 응용 프로그램 호스팅 환경을 위한 구성 설정을 제어할 수 있다.

최근의 전문화된 PaaS로 **BaaS**(서비스형 블록체인)이 있으며, 마이크로소프트 애저와 같은 일부 벤더들은 이미 자신들의 PaaS에 포함시켜 놓고 있다.

사용자(개발자)가 소프트웨어 개발을 할 수 있는 환경을 제공해 주는 PaaS의 예로, 구글의 APP 엔진, Heroku 등이 대표적인 예다.

### 서비스형 소프트웨어 (SaaS)
SaaS 모델에서 사용자들은 응용 소프트웨어와 데이터베이스에 대한 접근 권한을 가진다. 클라우드 제공자들은 응용 프로그램을 실행하는 인프라스트럭처와 플랫폼을 관리한다. SaaS는 "주문형 소프트웨어"(on-demand software)를 가리키기도 하며 가격 정책은 일반적으로 종량제(pay-per-use) 기반이거나 구독 비용 기반이다. SaaS 모델에서 클라우드 제공자들은 클라우드에 응용 소프트웨어를 설치, 운영하며 클라우드 사용자들은 클라우드 클라이언트의 소프트웨어를 접근한다. 클라우드 사용자들은 이러한 응용 프로그램들이 실행하는 클라우드 인프라스트럭처와 플랫폼을 관리하지 않는다. 이로 말미암아 클라우드 사용자 자신의 컴퓨터에 응용 프로그램을 설치하고 실행할 필요가 없으므로 유지보수와 지원이 단순하게 된다.
클라우드 응용 프로그램들은 확장성 관점에서 다른 응용 프로그램들과 차이가 있는데, 확장성은 변화하는 작업 수요를 충족하기 위해 런타임 중에 태스크들을 여러 개의 가상 머신으로 복제함으로써 수행할 수 있다.

### 서버리스 컴퓨팅
서버리스 컴퓨팅은 클라우드 컴퓨팅 코드 실행 모델의 하나로, 클라우드 제공자가 서비스 요청의 필요에 따라 가상 머신을 시작하고 중단하는 일을 온전히 관리하며 시간 당, 가상 머신 당 개념이 아닌 요청 충족에 필요한 자원의 추상적인 측정에 의해 과금된다. 서버리스 컴퓨팅이라는 이름이 붙여진 이유는 시스템을 소유하는 사업체나 사람이 백엔드 코드를 실행하기 위해 서버나 가상 머신을 구매, 임대, 예비할 필요가 없기 때문이다.

## 클라우드 클라이언트
사용자들은 데스크톱 컴퓨터, 랩톱, 태블릿, 스마트폰 및 홈 오토메이션 가젯 등의 이더넷 장치와 같은 네트워크화된 클라이언트 장치들을 이용하여 클라우드 컴퓨팅에 접근한다. 클라우드 클라이언트라는 장치들 가운데 일부는 자신들의 응용 프로그램의 전부 또는 대부분을 위해 클라우드 컴퓨팅에 의존하는데 이것이 필수불가결이기 때문이다. 신 클라이언트와 브라우저 기반 크롬북이 그 예이다. 수많은 클라우드 애플리케이션들은 클라이언트에 특정 소프트웨어를 요구하지 않으며 그 대신 웹 브라우저를 사용하여 클라우드 애플리케이션과 상호 작용한다. Ajax와 HTML5를 사용하여 이 웹 사용자 인터페이스들은 네이티브 애플리케이션에 견주어 비슷하거나 훨씬 더 좋은 룩 앤드 필을 달성할 수 있다. 그러나 일부 클라우드 애플리케이션들은 이러한 애플리케이션들을 전문으로 하는 특정 클라이언트 소프트웨어를 지원한다. (예: 가상 데스크톱 클라이언트 및 대부분의 이메일 클라이언트) 일부 레거시 애플리케이션들(현재까지 신 클라이언트 컴퓨팅에 일반화된 일련의 비즈니스 애플리케이션)은 화면 공유 기술을 통해 배포된다.

## 배치 모델

### 폐쇄형 클라우드
**폐쇄형 클라우드**는 오직 하나의 단체를 위해서만 운영되는 클라우드 인프라스트럭처의 하나로, 내부적으로나 서드파티에 의해 관리를 받거나 내외부적으로 호스팅된다. 폐쇄형 클라우드 프로젝트를 떠맡을 경우 어느 정도 수준의 비즈니스 환경 가상화가 수반될 필요가 있으며 단체가 기존 자원에 대한 결정사항들을 재평가할 필요가 있다. 잘 마쳤을 때 비즈니스를 개선할 수 있지만 프로젝트의 모든 단계가 심각한 취약점 예방을 해야 하는 보안 문제를 일으킨다. 자체 운영 데이터 센터

### 공개형 클라우드
**공개형 클라우드**는 공개적 이용을 위해 열린 네트워크를 통해 렌더링되는 클라우드이다. 공개형 클라우드 서비스들은 무료일 수 있다. 기술적으로 공개형과 폐쇄형 클라우드 아키텍처 간 차이가 거의 없거나 아예 없을 수 있으나, 통신이 신뢰되지 않은 네트워크 상에서 영향을 받으면서 대중을 위해 서비스 제공자에 의해 이용 가능하게 된 서비스들마다 보안적으로 고려할 사항이 본질적으로 다를 수 있다. 일반적으로, 네이버클라우드플랫폼, 아마존 웹 서비스(AWS), 마이크로소프트, 구글과 같은 공개형 클라우드 서비스 제공자들은 자신들의 데이터 센터를 소유, 운영하고 있으며 접근은 일반적으로 인터넷을 통한다. AWS와 마이크로소프트는 각각 "AWS Direct Connect"와 "Azure ExpressRoute"라는 직접 연결 서비스들을 제공하며, 이러한 연결은 클라우드 제공자가 제공하는 피어링 포인트에 대한 폐쇄형 연결의 구매나 임대를 고객에게 요구한다.

### 혼합형 클라우드
**혼합형 클라우드**는 뚜렷한 실체는 유지하지만 함께 묶여있는 둘 이상의 클라우드의 조합으로, 여러 개의 배치 모델들의 이점을 제공한다. 혼합형 클라우드는 병설(collocation), 매니지드 및 데디케이티드 서비스를 클라우드 자원과 연결하는 기능을 의미할 수도 있다. 가트너는 혼합형 클라우드를 다른 서비스 제공자들로부터 제공되는 폐쇄형, 공개형, 커뮤니티 클라우드 서비스들이 어느 정도 복합된 하나의 클라우드 컴퓨팅 서비스로 정의한다. 혼합형 클라우드 서비스는 격리 부분과 제공자 간 경계를 교차하므로 단순히 폐쇄형, 공개형, 커뮤니티 클라우드 서비스 중 하나의 분류에 집어넣을 수 없다. 다른 클라우드 서비스와의 애그리게이션, 연동, 커스터마이즈를 통해 클라우드 서비스의 용적의 확장을 허용한다

### 기타

#### 커뮤니티 클라우드
커뮤니티 클라우드는 공통 관심사를 가진 특정 커뮤니티의 여러 조직들 간에 인프라스트럭처를 공유하며, 내부적으로 또는 서드파티에 의해 관리되거나
내외부적으로 호스팅된다. 공개형 클라우드 보다 더 적은 (그러나 폐쇄형 클라우드 보다는 더 많은) 수의 사용자들에게 비용이 전가되므로 클라우드 컴퓨팅에 잠재적인 비용 절감 중 일부분만 실현된다.

#### 분산형 클라우드
클라우드 컴퓨팅 플랫폼은 각기 다른 위치의 분산된 집합의 머신들로부터 조합되어 하나의 네트워크나 허브 서비스로 연결된다. 두 종류의 분산형 클라우드로 구별이 가능하다: 퍼블릭 리소스 컴퓨팅, 볼런티어 클라우드.

#### 인터클라우드
인터클라우드

#### 멀티클라우드
멀티클라우드는 단일 벤더에 대한 의존성을 줄이고 선택을 통한 유연성을 향상시키고 장애에 대한 불편을 줄이는 등을 하기 위해 하나의 이기종 아키텍처 안에서 여러 개의 클라우드 컴퓨팅 서비스의 이용을 뜻한다. 여러 개의 배치 모드가 아닌 여러 개의 클라우드 서비스를 가리킨다는 점에서 복합형 클라우드와는 차이가 있다.

## 아키텍처
클라우드 컴퓨팅 배포를 수반하는 소프트웨어 시스템의 시스템 아키텍처인 **클라우드 아키텍처**는 메시징 큐와 같은 소결합(loose coupling) 매커니즘 상에 서로 통신하는 보통 복수의 클라우드 구성 요소를 동반한다. 일래스틱 프로비전은 이러한 매커니즘들에 적용될 때 소결합이나 밀결합(tight coupling)을 사용하는 지능을 암시한다.

### 클라우드 엔지니어링
**클라우드 엔지니어링**은 클라우드 컴퓨팅에 대한 공학적 응용이다. 클라우드 컴퓨팅 시스템의 구상, 개발, 운영, 유지보수를 할 때 상용화, 표준화, 관리에 대해 표면적으로 걱정하는 부분들에 대한 체계적인 접근을 가져다준다. 시스템, 소프트웨어, 웹, 성능공학, 정보, 보안, 플랫폼, 위험, 품질 공학과 같은 다양한 분야의 기여를 아우르는 종합적인 방식이다.

## 보안과 프라이버시
클라우드 서비스는 기존의 기술과 완전히 다른 새로운 것은 아니다. 사업적 필요에 따라 서버 가상화 기술과 분산처리 기술이 조합된 것이다. ‘클라우드’란 말 때문에 데이터가 공중을 떠다니는 것처럼 오해하기도 하지만, 클라우드 서비스를 통해 취급하는 데이터도 어딘가 있는 물리적 서버에 저장된다. 따라서 서버 가상화와 분산처리 기술에 의해 탄력적으로 처리될 뿐이다. 따라서 클라우드 보안은 기본적인 정보보안 방법론을 그대로 따른다. 즉 암호화+웹 보안+인증 보안 그리고 클라우드 환경의 특수성에 대응하는 기능이 추가된 것이 클라우드 보안이다.

클라우드 컴퓨팅은 서비스 제공자가 클라우드 안에 위치한 데이터를 언제든지 접근할 수 있기 때문에 프라이버시 문제를 노출한다. 우연히 또는 고의적으로 정보를 변조, 심지어는 삭제할 수도 있다.

클라우드 시큐리티 얼라이언스에 따르면, 클라우드 최고의 3가지 위협들은 "안전하지 않은 인터페이스와 API", "데이터 손실 및 유출", "하드웨어 고장"으로, 모든 클라우드 보안 문제 가운데 각각 29%, 25%, 10%를 차지한다. 이와 더불어 이것들은 공유된 기술 취약성을 형성한다. 다른 사용자들이 공유하는 클라우드 제공자 플랫폼에서 다른 고객에 속한 정보가 동일한 데이터 서버에 상주할 가능성이 있다. 그러므로 한 고객의 정보가 다른 고객에게 제공될 때 실수에 의하여 정보 유출이 일어날 수 있다. 드롭박스는 2014년 10월 침입을 받아 7,000,000 건 이상의 사용자 암호들이 도난을 당했는데, 이는 해커들이 BTC(비트코인)으로 금전적 이윤을 취하려는 가운데 이루어졌다. 이러한 암호를 보유함으로써 개인 데이터를 읽을 수 있을뿐 아니라 이 데이터를 검색 엔진에 의해 색인화시킬 수 있다. (정보를 공개함으로써)

데이터의 법적인 소유권의 문제가 있다. (사용자가 데이터 일부를 클라우드에 저장하면 클라우드 제공자가 그로부터 이윤을 취할 수 있는지에 대한) 수많은 서비스 동의 조항들은 소유권 질문에 침묵한다.

## 제한 및 단점
브루스 슈나이어에 따르면 "단점으로는 제한된 커스터마이즈 옵션을 갖게 된다는 점이다. 클라우드 컴퓨팅은 규모의 경제로 인해 값이 더 싸며 - 다른 모든 위탁 업무처럼 - 당신이 얻으려는 것을 얻는 경향이 있다. 제한된 메뉴의 식당은 어떠한 요리라도 조리할 수 있는 개인 요리사 보다 값이 더 싸다. 훨씬 더 싼 가격에 더 적은 옵션: 이것은 기능이지, 버그는 아니다."라고 언급했다. 또, 그는 "클라우드 제공자는 당신의 법적인 요구에 충족하지 못할 수 있으며" 이러한 위험에 대항하여 사업체들은 클라우드 컴퓨팅의 이점을 저울질할 필요가 있다고 넌지시 이야기한다. 클라우드 컴퓨팅 서비스 발전을 통해 분명한 것은 최고기술책임자(CTO)가 클라우드 채택에 대한 주된 추진력이라는 점이다.