1. 서론
클라우드 컴퓨팅이라는 용어가 IT 분야에서 가장 중요한 화두로 부각된지도 한참되었다. 한동안 가상화가 모든 IT에서 가장 중요한 용어인 동시에 시급히 추진해야할 프로젝트로 대두되더니 언제부터인가 가상화는 곧 클라우드와 동일한 개념처럼 인식되기 시작했고, 최근에 와서는 IT의 모든 관심은 클라우드로 통일되었다고 봐도 무방할 것이다. 가상화, 클라우드, 빅데이터 뿐만 아니라 최근의 해킹 사고와 같은 보안 사고 방지를 위해 망분리를 도입하거나 혹은 클라우드 도입이 필요하다는 이야기부터 어느 날은 클라우드가 해킹이 되어 내 데이터가 안전하지 못하다는 이야기까지 IT는 곧 클라우드고 클라우드가 곧 IT 인듯한 세상인 듯 하다. 뿐만 아니라 모 통신사와 모 포털의 무슨 무슨 클라우드, 무슨 무슨 드라이브 라는 광고로 인해 클라우드라고 하면 모든 데이터는 구름 속에 있고 사용자는 언제든지 그 데이터를 넣었다 뺐다 할 수 있다는 식으로 생각되기도 했고 모든 전화기, 태블릿, PC는 클라우드에 연결되지 않으면 안되는 듯한 세상이 도래한 듯 하다.
그런데 온통 주변이 클라우드라는 용어로 둘러싸여 있음에도 정작 “클라우드가 뭔가요?”라고 물어보면 명확하게 그 내용을 알려주는 곳도 없고, 정작 클라우드에 관련된 일을 하고 있는 많은 IT 전문가들도 자신들만의 클라우드에 대해서만 이야기할 뿐 쉽게 머리속에 들어오는 개념을 정의하기가 쉽지 않은 것도 현실이다. 정작 클라우드는 정말 글자 그대로 “뜬구름”잡는 용어인가? 이 글에서는 이러한 궁금증을 해소하기 위해 “클라우드”에 대한 개념과 이의 기반이 되는 기반 기술, 클라우드 서비스 모델, 구현 사례, 보안 및 클라우드 구현 시 고려해야할 문제 점에 대해서 논해보고자 한다.
2. 클라우드 컴퓨팅 개요
2.1 클라우드 컴퓨팅의 정의
클라우드 컴퓨팅에 대한 개념을 설명하기에 클라우드 컴퓨팅 발전의 앞서 IT 인프라 발전단계를 살펴봄으로써 클라우드 컴퓨팅의 개념을 살펴보도록 하자.
가트너(Gartner Research)에서는 2000년 대 중반에 위의 그림과 같은 IT 인프라의 발전 단계를 5단계로 구분하고 각 단계에서의 IT 관리 능력과 서비스가 구현되어야 다음 단계로 발전할 수 있다고 정의하였다.
각 단계를 살펴보면 먼저 1단계는 우리가 흔히 데이터 센터에 IT 자원을 집중화하는 CONCENTRATED 단계로 중앙 집중화와 IT 인프라의 표준화를 통해 규모의 경제를 구현하는 단계이다. 이 단계는 우리 나라에서도 대부분 1990년 대 말과 2000년 대 초반 데이터 센터 구축과 더불어 완료되었다고 볼 수 있다. 두 번째 단계는 CONSOLIDATED 단계로 중앙 집중화된 IT 장비에 대해서 통합 관리 및 보안 프로세스를 정립하는 단계로 통합화라는 형태로 구현되는 단계이다. 데이터베이스 통합, 웹 서비스 통합 등 서비스 별로 IT 인프라를 통합하고 이에 대한 관리 자동화와 보안 프로세스 정립 등이 수행된 단계로 1단계가 완료된 후 2000년 대 초반에 대부분의 IT 프로젝트로 수행된 “통합화” 프로젝트가 여기에 해당된다.
다음 단계로 VIRTUALIZED라는 가상화 적용단계를 거치게 된다. 중앙 집중화와 통합을 거친 후에는 하드웨어와 소프트웨어의 사용 최적화를 통해 효율성을 극대화하기 위해서는 인프라에 가상화를 적용해야만 다음단계인 자동화(AUTOMATED) 단계와 확산(EXTENDED)이라는 단계로 발전할 수 있다. 가상화가 완료된 후에는 이를 기반으로 IT 인프라를 서비스 형태로 제공하고 비용을 청구할 수 있게 되며 이를 통해 마지막 단계로 비즈니스 프로세스에 따라 정책적으로 어플리케이션과 IT 자원을 전체 업무에 적용할 수 있게 된다.
문제는 2000년 대 중반까지는 CONCENTRATED 단계와 CONSOLIDATED 단게를 거친 후에 가상화 기술이 널리 확산되지 않은 상태로 VIRTUALIZED 단계를 거치지 않고 바로 4단계인 AUTOMATED와 5단계인 EXTENDED로 진행하면서 대부분의 종량제와 유틸리티 컴퓨팅이라고 부르는 IT 프로젝트가 큰 성공을 거두지 못했다는 점이 현실이다. 특히 ITSM 및 데이터센터 Ochestration이라고 부르는 분야는 당시에만 해도 자동화와 확산을 위해 필수적인 요소로 알려졌음에도 불구하고 비용 대비 큰 효과를 보지 못했다는 것이 필자의 생각이다.
그런데, 2000년대 후반부터 가상화의 확산과 더불어 다시 3 단계의 VIRTUALIZED 단계가 어느 정도 현실화되면서 가상화를 기반으로 한 자동화와 확산이 현재 이루어지고 있다. 특히 가상화를 기반으로 할 경우 IT 자원의 표준화야 정책 기반의 관리 및 자동화가 대단히 용이하게 되어 단번에 VIRTIAULIZED 단계에서 AUTOMATED 단계를 거쳐 확산 단계에 도달할 수 있게 된다.
여기서 중요한 점은 IT 인프라 발전 단계에서 가상화를 거쳐 자동화를 이루고 이를 확산한다는 것이 바로 클라우드의 기본 목적인 가상화 및 자동화와 동일한 개념이라는 것을 알 수 있다. 즉 클라우드 컴퓨팅이란 IT 발전 단계를 바탕으로 정의한다면 가상화를 통한 IT 인프라의 자동화 및 확산이라고 봐도 될 것이다.
다음으로 다양한 문헌이나 기관에서 정의한 클라우드 컴퓨팅이란 용어에 대해서 살펴보기로 하자. 그 중에서 몇 가지만 발췌해 보면 다음과 같다.
- 가트너: 인터넷 기술을 활용하여 다수의 고객들로부터 높은 수준의 확장성을 가진 자원들을 서비스로 제공받는 컴퓨팅의 한 형태
- 포레스트 리서치: 표준화된 IT 기반 기능들이 IP 네트워크를 통해 제공되며, 언제나 접근이 허용되고 수요의 변화에 따라 가변적이며 사용량이나 광고에 기반한 과금 모형을 제공하는 웹 또는 프로그램적인 인터페이스를 제공하는 컴퓨팅
- 위키피디아: 인터넷에 기반한 개발과 컴퓨터 기술의 활용을 뜻하는 것으로 인터넷을 통해서 동적으로 규모화 가능한 가상적 자원들이 제공되는 컴퓨팅
- IBM: 웹 기반 어플리케이션을 활용하여 대용량 데이터베이스를 인터넷 가상 공간에서 분산처리하고 이 데이터를 PC, 휴대 전화, 노트북 PC, PDA 등 다양한 단말기에서 불러오거나 가공할 수 있게 하는 환경
위와 같이 다양한 정의에도 불구하고 공통적인 개념은 인터넷(네트워크)을 통해 IT 자원을 사용하고 비용을 지불한다는 것으로 요약할 수 있다.
지금까지 언급한 내용을 바탕으로 이 글에서는 클라우드 컴퓨팅을 다음과 같이 정의하고자 한다.
- 하드웨어, 소프트웨어, 데이터 등 IT 자원을 네트워크를 통해 표준화된 서비스 형태로 제공하는 IT 사용 방식인 동시에 비즈니스 모델
- 사용자는 언제, 어디서나, 어떤 단말을 통해서든(AnyTime, AnyWhere, AnyDevice) 원하는 만큼의 IT 서비스를 이용하고 사용량에 따라 비용을 지불하는 IT 사용 방식
- 클라우드 컴퓨팅 = IT 자원의 가상화 + 자동화 + 표준화
2.2 클라우드 컴퓨팅 발전 단계
클라우드 컴퓨팅을 어떻게 분류할 것인가를 설명하기에 앞서 클라우드 컴퓨팅이 발전한 과정을 다음의 그림을 통해 살펴보자.
2000년 대 초반 IT 업계에서 널리 회자되었던 용어는 그리드(Grid) 컴퓨팅이었다. 그리드 컴퓨팅이란 대용량의 컴퓨팅 자원을 필요로 하는 곳에 원하는 때에 언제든지 컴퓨팅 자원을 제공한다는 개념으로 시작된 것으로 인터넷 상의 모든 PC 형태의 컴퓨팅 리소스를 연결해서 사용하자는 개념이었다. 이는 현재의 클라우드 컴퓨팅의 정의에서 살펴본 바와 같이 네트워크를 통해 언제 어디서나 컴퓨팅 자원을 사용한다는 개념과 유사하다고 볼 것이다. (그리드와 클라우드 – 계산 과학자의 관점을 참조하기 바란다.)
다음으로 그리드 컴퓨팅은 유틸리티 컴퓨팅(종량제라고도 알려져 있다)으로 발전하였다. 유틸리티 컴퓨팅이란 전기나 수도와 같이 필요할 때마다 IT 자원을 사용하고 사용한 만큼 비용을 지불한다는 개념으로 역시 클라우드 컴퓨팅의 원하는 만큼의 IT 자원을 사용하고 비용을 지불한다는 개념과 일치한다.
이와 더불어 SaaS (Software-as-a Service)가 널리 확산되었는데 이 또한 필요한 소프트웨어 어플리케이션을 웹을 통해 표준화된 형태로 제공받고 비용을 지불한다는 관점에서 클라우드 컴퓨팅의 한 형태라고 볼 수 있을 것이다.
마지막으로 클라우드 컴퓨팅은 그리드 컴퓨팅, 유틸리티 컴퓨팅 및 SaaS라는 IT 컴퓨팅의 여러 형태를 포괄하는 형태로 진화하여 현재에 이르렀다고 볼 수 있다. 클라우드 컴퓨팅에서는 SaaS에서 제공하는 소프트웨어 뿐만 아니라 IT 자원 전체를 포괄하여 서비스 형태로 제공받고 비용을 사용한 만큼 지불한다는 관점에서 그리드 컴퓨팅, 유틸리티 컴퓨팅 및 SaaS를 모두 포함하는 개념으로 봐도 무방하다.
2. 3 서비스 모델과 대상에 따른 클라우드 분류
클라우드 컴퓨팅은 위의 그림과 같이 제공하는 서비스 형태에 따라서 IaaS (Infrastructure-as-a-Service), PaaS (Platform-as-a-Service) 및 SaaS (Software-as-a-Service) 세 가지로 분류할 수 있다.
- IaaS는 CPU, 메모리, 저장 장치(Storage) 및 네트워크 등 IT 인프라를 서비스 형태로 제공하는 클라우드로 우리가 잘 알고 있는 Amazon EC2, KT의 UCloudBiz, SKT의 TCloudBiz, LGU+의 CloudN 및 이노그리드의 Cloudit 등이 여기에 해당된다. IaaS에서는 필요할 때 서버 및 스토리지를 신청하고 사용자는 클라우드에 생성된 자신의 서버(가상 머신으로 생성된다)와 스토리지를 자신만을 위한 독립적인 장비로 사용하게 된다. 뿐만 아니라 Dropbox, 네이버 N드라이브, 다음 클라우드와 같은 클라우드 상에서 저장 공간을 제공하는 서비스도 저장 장치를 서비스 형태로 제공한다는 관점에서 IaaS에 속한다고 볼 수 있다. IaaS 서비스는 주로 네트워크 망을 기반으로 한 통신사와 다양한 사용자를 기반으로 한 대형 포털, 그리고 애플이나 삼성처럼 단말기를 기반으로 하는 제조 업체, 마지막으로 클라우드 전문 서비스 업체가 서비스를 제공하고 있다.
- PaaS는 소프트웨어 개발 환경을 서비스로 제공하는 클라우드 서비스를 뜻한다. 클라우드 중에서 개념적으로 잘 와 닿지 않는 것이 PaaS인데 쉽게 설명하면 다음과 같은 서비스를 PaaS라고 보면 된다. 어떤 사업자가 인터넷 상에서 쇼핑몰을 구축할려고 할 때 필요한 것으로는 서버, 스토리지 및 네트워크 등 하드웨어 인프라 뿐만 아니라 쇼핑몰 소프트웨어를 구현하기 위한 데이터베이스, 웹 서버 등이 필요한데 PaaS에서는 쇼핑몰 프로그램을 만들고자 하는 개발자나 사업자가 PaaS 사업자에게서 DB와 웹서버 프레임워크를 요청한 후 자신이 직접 쇼핑몰에 관련된 프로그램만 수정해서 실행하면 바로 웹과 DB가 동작하면서 쇼핑몰이 완성할 수 있을 것이다. 이와 같이 개발을 위한 소프트웨어 환경을 통째로 제공하는 것을 PaaS라고 보면 이해가 쉬울 것이다. (국내에서는 이런 프레임워크 뿐만 아니라 아예 DB, 웹 및 개발 툴을 모두 포함하여 IaaS로 제공하는 것도 PaaS로 보는 경향이 있다) 대표적인 PaaS 서비스로는 구글의 구글 앱 엔진 (Google App Engine), 마이크로소프트의 MS-SQL Azure 가 여기에 속하며, 국내에서는 정부통합전산센터 G Cloud에서 전자정부프레임워크를 클라우드 상에서 제공하고 있는 것도PaaS의 일종으로 보면 될 것이다.
- SaaS는 어플리케이션 소프트웨어를 클라우드에서 제공하는 서비스로 ERP나 CRM 등 다양한 소프트웨어를 사용자가 직접 구축하거나 설치하지 않고 서비스 제공 업체에 비용을 지불하고 필요한 만큼 소프트웨어를 사용하는 클라우드를 의미한다. 대표적으로 Salesforce가 제공하는 CRM 서비스가 있으며 많은 소프트웨어 업체가 자신들의 솔루션을 클라우드 서비스 상에서 다양한 방식으로 제공하는 서비스를 진행하고 있다.
다음으로 클라우드 서비스 제공 대상에 따라서 공용(Public) 클라우드, 사설(Private) 클라우드 및 하이브리드 클라우드로 분류할 수 있다.
- 공용(Public) 클라우드는 불특정 다수의 개인이나 기업을 대상으로 제공되는 클라우드를 뜻한다. 일반적으로 회원 가입을 한 후 클라우드에서 제공하는 서비스(IaaS, PaaS, SaaS)를 사용한 후 사용량에 따라서 비용을 지불하는 클라우드로 Amazon, 통신사 및 포털이 제공하는 클라우드 서비스가 여기에 해당된다.
- 사설(Private) 클라우드는 특정 기업이나 기관에서 직접 클라우드를 구축하여 내부 사용자들에게만 클라우드 서비스를 제공하는 폐쇄형 클라우드라고 보면 된다. 대표적으로 국내의 대형 IT 서비스 업체인 삼성 SDS, LG-CNS 및 SK C&C 등이 구축하여 그룹내 관계사들에게 비용을 받고 서비스를 제공하는 클라우드 들이 여기에 해당된다.
- 하이브리드 클라우드는 공용 클라우드와 사설 클라우드가 혼용되어 있는 서비스로 사설 클라우드를 구축하여 사용중인 특정 기업이 클라우드 서비스 중의 일부분(예를 들면 백업 저장 장치나 대외 홍보용 웹서버 등)은 공용 클라우드 업체에서 서비스를 받으면서 자신들의 사설 클라우드와 연동하여 사용하는 방식을 하이브리드 클라우드라고 한다. 이와 더불어 사설 클라우드를 구축한 IT 서비스 업체가 동일한 클라우드 인프라 상에서 내부 서비스와 외부 서비스를 동시에 수행하는 것도 하이브리드 클라우드의 일종으로 볼 수 있다. 그리고 공용 클라우드 서비스 업체에서 특정 인프라부분을 폐쇄형으로 분리하여 특정 사용자의 내부용으로만 제공하는 것도 하이브리드 클라우드 서비스의 한 형태이다.
2.4 클라우드 컴퓨팅 아키텍처
다음으로 클라우드 컴퓨팅 인프라를 구성하는 기본 아키텍처에 대해서 알아보고자 한다.
클라우드 컴퓨팅 아키텍처는 위의 그림과 같이 물리적 시스템 Layer, 가상화 Layer, 프로비저닝 Layer 및 서비스 관리 체계 Layer로 구성된다. 각 Layer의 주요 특징과 역할은 다음과 같다.
- 물리적 Layer : 클라우드 인프라를 구성하는 물리적인 하드웨어 영역으로 서버, 스토리지 및 네트워크 장비가 여기에 해당된다.
- 가상화 Layer : 클라우드에서 제공되는 가상 인프라(가상 머신, 가상 스토리지 및 가상 네트워크)를 제공하는 영역으로 하이퍼바이저, 스토리지 가상화 솔루션 및 네트워크 가상화 솔루션이 포함된다.
- 프로비저닝 Layer : 사용자의 서비스 요청에 따라 가상 인프라를 가상화 Layer 상에 생성(프로비저닝)하는 Layer로 관리 체계에서 내려진 프로비저닝 명령에 따라 가상화 Layer에 가상 인프라를 생성하고 삭제하는 기능을 수행한다.
- 서비스 관리 체계 Layer : 클라우드 인프라를 관리하고 서비스 요청에 따라 하위 Layer에 필요한 자원을 생성, 삭제하는 관리 영역으로 성능 및 가용성 관리, 자원 관리 및 과금, 계정 관리, 보안 정책을 정의하고 수행하는 Layer이다.
이상의 Layer 상에서 클라우드 서비스인 IaaS, PaaS 및 SaaS가 제공된다. 각 Layer의 대표적인 제품과 솔루션은 다음의 그림에 나타나 있다.
이상으로 이 절에서는 클라우드 컴퓨팅의 정의, 발전 단계, 서비스 모델에 따른 분류 및 클라우드 컴퓨팅을 구성하는 아키텍처에 대해서 간략히 살펴보았다. 다음 절에서는 클라우드 컴퓨팅의 기반 기술에 대해서 논할 것이다.