클라우드 컴퓨팅의 이해

이미지 출처: shylendrahoode / Getty Images

 

 

1. 가상화/클라우드의 역사

 

흔히 머신(Machine)이라고 하면 컴퓨터나 서버를 가리킵니다. 이 머신들은 하드웨어, 즉 CPU, RAM, 하드디스크, 네트워크 인터페이스 카드 등의 요소들을 자체적으로 갖추고 있으며 바로 그 위에 운영 체제와 애플리케이션이 동작하는 모양새가 일반적으로 상상할 수 있는 머신의 형태입니다.

 

서버 가상화의 개념은 2000년대 초에 알려지기 시작했습니다. 엔지니어들은 하이퍼바이저(hypervisior)라는 것을 발명했고, 이 하이퍼바이저는 동일한 하드웨어 위에 둘 이상의 운영체제를 올릴 수 있게 되었습니다. 그와 동시에, 하이퍼바이저에서 생성된 각 운영체제들을 특별히 가상 머신(Virtual Machine)으로 부르기 시작했습니다. 대표적인 Hypervisior로는 KVM(Openstack), ESXi(VMware) 등이 있습니다.

 

가상화를 좀 더 잘 이해하기 위해서 개인 웹 사이트를 세팅하는 것으로 예시를 들어봅시다. 사이트를 운영하려면 기본적으로 웹 서버, 애플리케이션 서버, 그리고 DB 서버 정도는 있어야 한다고 가정하겠습니다.

 

각각의 서버는 별도의 장비로 납품받아 배치될 것이며 별개의 하드웨어, 운영 체제, 프로세스 로직을 기반으로 동작할 것입니다. 서버마다의 요구스펙도 고려해서, 가령 DB 서버면 스토리지가 충분한 장비로 알아봐야할 것입니다. , 이들간의 물리적인 통신을 위해 네트워크 스위치 장비도 따로 구매해서 케이블을 연결하는 작업도 해야겠죠. 자칫하면 대공사가 될 가능성이 존재합니다.

 

가상화를 도입하면 이러한 복잡한 구성을 간소화할 수 있습니다. 개개의 서버를 하나의 하드웨어 공간에서 가상 머신 형태로 묶어서 배치할 수 있으니까요. 남은건 하드웨어 리소스(CPU, RAM, HDD )을 어떻게 각 가상머신에 분배하느냐인데, 아무래도 서버 장비를 물리적으로 배치할때보다는 스케줄링 난이도가 덜한 편이죠.

 

위 예시를 통해 알아볼 수 있는 가상화의 장점을 짚어보면,

* 하드웨어 리소스를 효율적으로 분배 가능
* 가상머신을 빠르게 생성 가능하며 구축이 쉬움

 

 

2. 그렇다면 클라우드는 뭐지?

 

이제는 개인 웹 사이트가 아니라 좀 더 큰 스케일을 갖는 온라인 게임이나 전자상거래와 같은 서비스를 생각해봅시다. 서비스 이용자 수가 막대하게 불어나면 머신 1개치 하드웨어가 이를 감당할리 없습니다.

 

기존에도 서비스를 운영하는데에 수백 또는 수천 개의 웹 서버가 필요했었더라면, 이를 가상화 공간으로 이전하더라도 점점 많은 양의 VM이 필요합니다. 따라서 대규모의 컴퓨팅 성능을 제공하기 위해 다수의 하이퍼바이저를 구축하는 것, 그게 바로 클라우드 컴퓨팅입니다.

 

클라우드는 쉽게 말해 수 많은 가상머신, 그리고 그것을 지탱하기 위해 필요한 수많은 물리적 서버의 모임입니다.

 

Public Cloud vs Private Cloud

 

클라우드 인프라는 퍼블릭(Public) 클라우드프라이빗(Private) 클라우드의 두 가지 범주로 구분할 수 있습니다.

이미지 출처: https://www.cloudflare.com/ko-kr/learning/cloud/what-is-a-public-cloud/

 

퍼블릭 클라우드라고 하면 대표적인 3개의 회사: 아마존 AWS, 마이크로소프트 Azure, 구글 클라우드를 떠올리시면 됩니다. 이 회사들은 전 세계 곳곳에 수백 개의 데이터 센터를 설립하여 운영 중입니다. 컴퓨팅 인스턴스, 스토리지 등이 필요한 애플리케이션/서버 개발자들은 퍼블릭 클라우드 회사들과 계약을 맺어 가상화 자원을 대여받을 수 있습니다. 그래서 앞에서 이야기한 아마존 AWS와 같은 업체들을 CSP(Cloud Service Provider)라고도 부릅니다.

 

반면 프라이빗 클라우드는 한 조직/기업 내의 자체 데이터 센터 또는 인프라를 의미합니다. 퍼블릭 클라우드를 구축할 때는 CSP가 전반적으로 개입을 하지만, 프라이빗 클라우드를 구축할 때는 사용자(기관/회사)가 인프라를 직접 관리해야 합니다. 프라이빗 클라우드를 운영하는 주체는 대게 은행, 공공기관, 통신사, 기타 여러 IT 회사들이 해당됩니다.

 

Cloud Management System (CMS)

 

퍼블릭이든 프라이빗이든 클라우드를 관리하려면 클라우드 관리 시스템(Cloud Management System, CMS)가 필요합니다. CMS는 가상 머신 및 서비스를 생성/관리를 위한 CLI 또는 GUI 대시보드를 제공하는 시스템입니다.

 

퍼블릭 클라우드 회사는 이러한 기능을 하는 자체적인 서비스(아마존: AWS console, 구글: GCP dashboard)를 갖추고 있습니다. 프라이빗 클라우드 영역에서의 CMS는 대표적으로 VMware, Openstack이 있습니다.

 

Openstack의 경우, CLI 그리고 GUI 형태로 동시에 클라우드 관리 기능을 제공합니다. GUI 버전의 경우 Horizon dashboard라고도 잘 알려져 있죠.

 

3. 하드웨어 - 하이퍼바이저 - 클라우드 관리 시스템

 

앞서 살펴본 클라우드 환경의 각 요소들을 종합적으로 이해할 수 있게 위 그림과 같이 배치해보았습니다.

 

맨 아래 층의 하드웨어는 말 그대로 HP, Dell과 같은 공급업체에서 판매하는 서버 장비입니다.

 

하드웨어를 구축하면 서버 위에 하이퍼바이저를 설치하게 됩니다. 하이퍼바이저의 종류로는 Centos 커널부터 RHEL(Red Hat Enterprise Linux)처럼 기타 다른 엔터프라이즈급 리눅스 커널까지 다양하게 존재합니다.

 

하드웨어-하이퍼바이저로 구성된 두 계층은 각 서버 레벨에서 관리됩니다. 하지만 데이터센터에는 수백 대의 서버가 있고 이들은 서로 다른 서버랙에 붙어있죠. 이 모든 서버들을 통합적으로 관리해줄 수 있는 CMS가 그제서야 필요로 합니다. Openstack이 대표적인 CMS라고 설명 드렸었으며, Openstack UI 하나로 전체 데이터 센터와 각 랙마다 있는 서버들을 관리할 수 있습니다.

 

이 구조도가 일반적인 조직에서 적용되는 클라우드 운영 방식입니다.

반응형