클라우드 컴퓨팅 서비스란?
Last updated
Last updated
클라우드에 대한 인상은 클릭 몇 번으로 서버 한 대가 뚝딱 만들어지고, 사용량에 따라 리소스도 자동으로 제한할 수 있어서 비용 관리도 수월했다. 또한 자동으로 백업은 물론 보안까지 신경 써줘서 이게 왜 대세인지 몸소 체험할 수 있었다. 프로젝트를 진행하면서 AWS를 사용한 경험이 있지만, 아직 그 개념에 대해 명확하게 설명하기 어려웠다. 그래서 이 글에서는 클라우드에 대한 기본적인 개념을 정리해보고자 한다.
클라우드 컴퓨팅은 클라우드 내에서 워크로드를 실행하는 활동이다. 클라우드란 네트워크 전반에서 스케일할 수 있는 리소스를 추상화, 풀링, 공유하는 IT 환경을 의미한다. 즉, 서로 다른 물리적인 위치에 존재하는 컴퓨터들의 리소스를 가상화 기술로 통합해 제공하는 기술을 말한다.
클라우드 컴퓨팅은 클라우드에서 워크로드를 실행하는 기능, 즉 동작을 말한다.
클라우드는 애플리케이션이 실행되는 환경이다.
클라우드는 방법론이고, 가상화는 기술이다.
클라우드 컴퓨팅은 기본적으로 프라이빗 클라우드, 퍼블릭 클라우드, 하이브리드 클라우드, 멀티 클라우드 등 4자기 유형이 있다. 클라우드 컴퓨팅 서비스는 기본적으로 서비스로서의 인프라(Infrastructure-as-a-Service, IaaS), 서비스로서의 플랫폼(Platforms-as-a-Service, PaaS), 서비스로서의 소프트웨어(Software-as-a-Service, SaaS)로 3가지 기본 유형이 있다.
클라우드 서비스는 관리 주체와 제공 수준에 따라 클라우드 서비스를 다음과 같이 나눌 수 있다.
IaaS는 클라우드의 가장 기본적인 제공 형태다. 클라우드 제공업체(Cloud Service Provider, CSP)는 인프라와 IT기술만 빌려주고, 이를 활용해 서비스를 구축하는 것은 기업과 기업 내 개발자의 몫이다. 보통 서버, 스토리지, 네트워크 장비, 서버용 운영체제 즉, 물리적 자원을 빌려주는 것을 인프라 서비스라고 부른다.
그렇다고 클라우드 제공업체의 지원이 소홀한 것은 아니다. 클라우드 제공업체들은 가상머신, 오토스케일링 등 기업이 서비스를 구축하고 불편이 없이 이용하는 데 필요한 모든 인프라 관련 기술을 제공한다. 현재 대다수 기업이 인프라 서비스를 이용해 자제 서비스와 앱을 개발하고 있다.
대표적인 IaaS로는AWS EC2, GCP의 GCE, Azure의 VM이 있다. AWS EC2는 범용, 메모리 최적화, GPU 최적화, 스토리지 최적화된 202가지의 다양한 리소스 조합을 갖춘 인스턴스를 서비스한다. 즉, 사용자의 요구에 맞는 인스턴스 타입을 설정하여 생성하면 곧바로 원하는 리소스를 가진 서버가 생성되는 것이다.
PaaS는 인프라 서비스에서 한 단계 더 발전한 클라우드 서비스다. 인프라와 IT 기술을 빌려줄 뿐만 아니라 기업이 보다 빠르고 편하게 서비스를 구축할 수 있도록 다양한 지원 서비스를 함께 제공하는 것이다. 일반적으로 서버, 스토리지, 네트워크 장비, 서버용 운영체체 뿐만 아니라 각종 개발도구까지 함께 제공하면 플랫폼 서비스라고 부른다. 사실 PaaS는 이름 자체가 '개발 플랫폼 제공 서비스'의 줄임말이다.
플랫폼 서비스는 크게 두 가지 방향으로 나눌 수 있다. 인프라 운영에 들어가는 노력을 최소화하거나 아예 없애주는 '서버리스 아키텍쳐'와 앱이나 서비스 개발을 보다 빠르고 편하게 해주는 '오픈 API(Application Programming Interface) 컴포넌트 제공'이다. 서버리스 아키텍쳐 기술을 활용하면 기업은 인프라 구축 뿐만 아니라 운영에 들어가는 노력까지 절감할 수 있다. 클라우드에서 제공하는 오픈 API 컴포넌트를 활용하면 앱과 서비스를 개발하기 위한 기초 기술을 일일이 만들지 않아도 된다. 기초 기술은 클라우드에 맡겨두고 고급 서비스 개발에만 집중하면 되는 것이다. 이를 통해 서비스 개발 및 출시 시간을 극적으로 단축할 수 있다.
현재 대부분의 클라우드 제공업체가 자사의 클라우드 서비스를 IaaS 위주에서 PaaS위주로 바꾸기 위해 노력중이다. PaaS가 IaaS보다 좀 더 고부가가치 서비스이기 때문이다.
대표적인 PaaS로는 AWS Lambda, Heroku, Red Hat OpenShift가 있다. AWS Lambda는 C#, PowerShell, Go, Java, JavaScript, Python, Ruby에 대한 런타임을 공식 지원한다. 특정 이벤트가 발생했을 때 사용자가 정의해둔 함수가 실행되는 방식이며 이에 따라 요금도 실행된 횟수를 기준으로 산정된다. Heroku는 프로그래밍 언어와 프레임워크로 작성된 웹 애플리케이션을 쉽게 배포할 수 있게 해준다.
SaaS란 과거 PC나 서버 등에서 설치해서 이용해야 했던 소프트웨어를 클라우드를 통해 제공하는 서비스다. 과거에는 소프트웨어 패키지를 구매해서 PC에 설치해야 소프트웨어를 이용할 수 있었지만, 이제는 인터넷만 연결돠어 있다면 클라우드에 이미 설치되어 있는 소프트웨어를 받을 수 있다. 어도비, 오토데스크나 안랩, 한글과컴퓨터 등 국대 대형 소프트웨어 업체들도 기존의 소프트웨어 패키지 대신 SaaS 중심으로 사업 모델을 바꾸고 있다.
Apple의 App Store와 Android의 Play Store처럼 클라우드에도 앱 마켓이 있다. 클라우드 서비스 내의 앱 마켓에 접속하면 소프트웨어 업체들이 미리 만들어 놓은 다양한 소프트웨어 서비스를 구매할 수 있다. 보안 솔루션, CRM/ERP, 오픈소스 패키지 등 종류가 다양하다. 이렇게 SaaS를 기업이 클라우드 상에서 구축한 서비스와 결합해 기업의 서비스를 더욱 안전하고 편리하게 바꿀 수 있다.
대표적인 SaaS로는 Google Apps, Dropbox, Slack, MS Office 365 등이 있다. 주로 End User들이 사용하는 서비스들이며 우리가 익숙한 MS Office 365 제품이나 한글 제품을 웹에서 이용할 수 있게 된 사례를 들 수 있다.
각 서비스를 요리에 비유하면 다음과 같이 표현할 수 있겠다. 카레를 먹는다고 가정할 때 옵션을 각 서비스에 비유해봤다.
IaaS : 카레 분말과 각종 야채를 구매하여 직접 끓여 먹기
PaaS : 3분 카레와 같은 반조리 식품을 구매해 조리해 먹기
SaaS : 조리가 완성된 음식 사먹기