From Korea Architecture Journal

Jump to: navigation, search

클라우드 컴퓨팅은 지속적으로 진화하고 있는 컴퓨팅 패러다임이다. 따라서 클라우드 컴퓨팅과 관련된 용어 중에는 뜻이 모호하거나 같은 낱말을 두고서도 저마다 입장 차이에 따라 해석이 다른 것도 적지 않다. 이 글에서는 클라우드 서비스의 개념적 아키텍처를 설명하기 위하여 널리 공통으로 쓰고 있는 용어 가운데 비교적 논란의 여지가 적은 것만을 추려서 그 의미를 되짚고 넘어가기로 하겠다.

서비스 전달 방식(Service Delivery Model)에 따른 분류

클라우드 컴퓨팅은 어떤 서비스를 전달(Delivery)하고자 하느냐에 따라 크게 아래와 같이 클라우드 애플리케이션, 클라우드 플랫폼, 클라우드 인프라스트럭처로 나누어 설명하는 것이 일반적이다.

클라우드 애플리케이션(Cloud Application)

SaaS(Software-as-a-Service)를 목표로 개발된 클라우드 서비스를 말한다. 기업이나 다수의 개인 사용자에게 공통으로 필요한 소프트웨어를 주로 서버에서 구동하고 관리하는 형태로 배포하는 방식을 아울러 일컫는 것으로 온라인 검색 서비스, 지도 서비스, 블로그, 위키, 웹 메일 등이 여기에 해당한다. 완전히 동일한 소프트웨어 서비스를 제공하는 경우라도 하더라도 서비스 품질과 데이터 보존의 책임을 지지 않는 일반 무료 사용자와 엄격관 사후 관리와 데이터 보안을 필요로 하는 기업 유료 사용자는 수익 모형과 계약의 형태를 엄격히 구분지어 취급하는 것이 일반적이다.

클라우드 플랫폼(Cloud Platform)

PaaS(Platform-as-a-Service)를 목표로 개발된 클라우드 서비스를 일컫는다. 클라우드 컴퓨팅 기술이 제공하는 이점을 활용하는 어플리케이션 또는 어플리케이션 서비스를 편리하게 개발하는 것은 물론이고 개발된 어플리케이션을 곧바로 배치 구동 관리할 수 있도록, 클라우드 소프트웨어 개발 도구와 자동화된 클라우드 서비스 라이프사이클 관리 기술 등이 탑재되는 것이 보통이다.

클라우드 인프라스트럭처(Cloud Infrastructure)

IaaS(Infrastructure-as-a-Service)를 목표로 개발된 클라우드 서비스를 일컫는다. 클라이언트, 서버, 소프트웨어, 데이터센터 공간, 네트웍 장비 등 개인이나 기업의 컴퓨팅 기반 자산을 따로 구매하여 구축하지 않고 필요한 컴퓨팅 기반 자산의 일부 또는 전부를 서비스 형태로 빌려 쓰는 방식을 통틀어 일컫는 것으로 기존 호스팅 사업이 한 단계 발전된 형태라 보기도 한다. 흔히 다양한 가상화 기술을 바탕으로 사용한 자원을 계산과 공간의 양으로 자동 계측하여 과금하는 유틸리티 컴퓨팅 방식에 따라 서비스를 제공하는 것이 일반적이다.

서비스 배치 방식(Service Deployment Model)에 따른 분류

클라우드 서비스는 컴퓨팅 자산의 소유권, 물리적 위치, 대상 사용자의 범위 등을 고려하여 다양한 배치 방식으로 분류될 수 있다. 여기서는 기본 분류 방식의 다향한 조합으로부터 파생될 수 있는 것들은 과감히 제외하고 비교적 그 의미가 또렷히 널리 통용되고 있는 두 가지 배치 형태만을 짚고 넘어가기로 하겠다.

닫힌 클라우드(Private Cloud)

닫힌 클라우드는 기관이나 기업 내부의 제한된 사용자만을 위하여 배치되는 클라우드 서비스를 구분지어 일컫는다. 보기를 들어 기업이나 공공 기간의 내부 사용을 목적으로 구축되는 데이터센터들이 이에 해당한다.

열린 클라우드(Public Cloud)

열린 클라우드는 어떤 목적에서든 모두가 쓸 수 있게 바깥으로 드러내 배치되는 클라우드 서비스를 구분지어 일컫는다. 보기를 들어 마이크로소프트, 구글, 아마존과 같이 특정 사업자가 수익을 목적으로 개방하는 대부분의 클라우드 서비스들이 이에 해당한다. 이와 달리 위키피디어(Wikipedia), 코드플렉스(CodePlex), 소스포지(SourceForge)와 같이 공익을 위한 무료 서비스도 포함된다.

클라우드 서비스의 배치 방식에 따른 분류에는 여전히 논란의 여지가 많다. 이는 사업자 별로 다양한 판매 방식을 개발하면서 이를 구분짓기 위해 새로운 용어를 양산하는 데서 기인하기도 하고, 여러 가지 다양한 방식의 서비스가 새로운 서비스로 자유롭게 융합되는 과정에서 기존의 용어로는 쉽게 설명하기 어려운 새로운 배치 방식이 등장하고 있기 때문이기도 하다. 보기를 들어 어떤 기업에서 이미 일반 사용자를 대상으로 공개된 지도 서비스를 차용하여 내부 직원들만이 사용할 수 있는 차량 추적 서비스를 개발하는 경우를 생각해 보자. 지도 서비스는 열린 클라우드가 분명하나 이를 활용한 기업은 동일한 서비스를 닫힌 서비스의 일부로 활용될 수 있다. 실제로 해당 기업은 차량 추적 서비스의 신뢰성과 성능을 보장받고자 지도 서비스 공급 업자에게 유료로 서비스 영역의 일부를 전용하는 형태로 계약을 체결할 수도 있다. 이는 동일한 서비스가 사용자의 특성과 요구에 따라 열린 클라우드로도 닫힌 클라우드로도 활용될 수 있음을 뜻한다. 이와 달리 해당 기업이 지도 서비스를 자체 개발하는 방식을 택할 수도 있다. 이런 경우에 소프트웨어를 납품하는 회사는 해당 기업이 클라우드 서비스를 구축하는 데 필요한 소프트웨어 자제를 패키지 형태로 납품하는 것이므로 As-A-Service라는 전달 방식과는 거리가 멀다. 이 때문에 클라우드 서비스의 여닫이를 따질 때에는 서비스 공급자의 관점인지 서비스 활용자의 관점인지를 명확히 할 필요가 있다. 하지만 (이 글을 포함하여) 별도의 명시가 없을 적에 서비스를 활용하는 사람의 처지에서 클라우드 서비스의 배치 방식을 구분짓는 것이 혼란의 여지를 줄이는 데 도움이 된다.

클라우드 서비스 아키텍처

서비스 모형에 따른 분류 방식은 클라우드 컴퓨팅 기술을 구성하는 주요한 클라우드 기술 부품을 계층별로 연관지어 설명하기 위한 목적으로도 자주 활용된다. 아래의 그림은 클라우드 서비스를 그 목적에 따라 계층별로 나타낸 개념적 아키텍처이다.

File:Cloud Architecture.png

위의 그림에서 기존 호스팅 플랫폼과 클라우드 인프라스트럭처를 별도 계층으로 분리한 까닭은 클라우드 서비스를 기술 관점에서 다룰 적에는 이를 구분지어 논하는 것에 의미가 있기 때문이다. 호스팅 플랫폼이 컴퓨터, 운영체제, 네트웍 체계, 저장 공간, 전력 관리, 가상화 소프트웨어 따위 같은 다양한 컴퓨팅 자산을 배치 운영 공급하고자 하는 기반을 일컫는 것이라면, 클라우드 인프라스트럭처는 물리적으로 먼 거리에 떨어진 호스팅 플랫폼 또는 인터넷을 가로질러 산재한 개별 컴퓨터라 할지라도 필요에 따라 이를 하나의 논리적 단위로 엮어서 마치 단일한 고성능의 계산 능력, 광대한 저장 공간, 원할한 네트웍 서비스를 어플리케이션 프로그래밍 인터페이스 형태로 제공하는 것으로 차별지어 논할 필요가 있다. 따라서 클라우드 인프라스트럭처 서비스는 이를 활용하는 상위 서비스로 하여금 다수의 연결되었으나 물리적으로 구분되는 자산을 하나의 논리적 자산으로 요약하여 단순화된 서비스를 제공한다는 점에서 기술적으로는 '분산 컴퓨팅 운영체제'를 서비스 형태로 공급하는 것이라 해석해도 크게 무리가 없다.

이런 관점에서 보면 '클라우드 인프라스트럭처' 또한 명백히 소프트웨어 개발 플랫폼 서비스를 제공하는 것이라 볼 수 있기 때문에 '클라우드 플랫폼'과 구분지어 논하기가 어려워진다. 실제로 마이크로소프트가 출시한 " 윈도우 애저(Windows Azure)"는 IaaS이자 동시에 웹 어플리케이션 개발을 위한 PaaS이기도 하다.

또한 위 그림에서는 모든 클라우드 서비스에서 반드시 포함되어야 하는 서비스 요소로 보안 서비스를 포함하였다. 특히 클라우드 플랫폼은 인터넷을 기반으로 다양한 기술이 공존하는 환경에서 서로 다른 클라우드 서비스 또는 클라우드 클라이언트 간의 연동성을 보장해야 하므로, 서로 다른 보안 기술 체계를 수정없이 수용하여 상호 운용성을 보장하면서도 통합된 관리 방식의 안전성을 보장하는 형태의 서비스를 반드시 제공할 필요가 있다. 보기를 들어, 마이크로소프트는 자사의 디렉터리 서비스 구현인 액티브 디렉터리 기술을 확장하여 OpenID, X.509, SAML, WS-Security, WS-Trust, WS-Federation 따위 다양한 보안 기술 모형이 공존하면서도 통합된 아이덴티티 관리가 가능하도록하는 " 요청 기반의 접근 모형(Claims-based Access Model)"을 제안하고 구현하였다.

덧붙여 클라우드 컴퓨팅 기술을 논할 때 흔히 간과하고 넘어가는 것으로 클라우드 클라이언트 기술을 들 수 있다. 클라우드 클라이언트란 클라우드 컴퓨팅에 의해 서비스를 전달받는 최종 사용자 기기 또는 소프트웨어를 따로 구분지어 일컫는 말이다. 보기를 들어, 파일, 어플리케이션 따위 다양한 데이터를 공유하고 편집하는 서비스를 제공한다고 할 때 이를 최종적으로 활용하는 클라이언트는 클라우드 서비스 상에 있는 다양한 데이터를 동기화하거나 편집하고 재생하는 기능 또는 그와 같은 기능을 개발하기 위한 클라이언트 플랫폼 기술을 제공할 필요가 있다. 이런 까닭에서, 클라우드 서비스를 받을 수 있도록 준비된 기기나 소프트웨어를 그렇지 못한 것과 따로이 구별지어, "클라우드 연동 스마트폰(Cloud-aware Smartphone)"과 같이 "클라우드 연동(Cloud-aware)"이란 말을 덧붙여 쓰기도 한다.