Enjoy My Posts

클라우드 컴퓨팅이란

Posted on By Geunwon Lim

이 포스트는 aws in action과 스프링 마이크로서비스 코딩 공작소의 초반 부분을 보고 작성하였습니다.

정의

클라우트 컴퓨팅이란 IT 자원의 공급과 소비를 은유적으로 빗댄 용어다. 클라우드에서의 IT 자원은 사용자에게 직접 드러나지 않는다. 그 사이에 추상화 계층이 있다. 클라우드가 제공하는 추상화 수준은 가상 하드웨어에서부터 복잡한 분산 시스템에 이르기까지 다양하다.

공식 정의

클라우드 컴퓨팅이란 관리 노력과 서비스 공급자의 상호 작용을 최소화하면서 신속하게 제공하거나 해제할 수 있는 구성 가능한 컴퓨팅 리소스(네트워크, 서버, 스토리지, 애플리케이션, 서비스 등)의 공유 풀에 어디서나 편리하게 필요한 시점에 네트워크로 접근할 수 있게 하는 모델이다.

분류

클라우드 컴퓨팅 서비스는 다음 몇 가지 분류로 나뉜다.

  1. 서비스로서의 인프라(IaaS): 가상 서버를 이용하여 컴퓨팅, 스토리지, 네트워킹 기능 등과 같은 기본적인 자원을 제공한다(아마존 EC2, 구글 컴퓨트 엔진, 마이크로소프트 애저 가상 기계 등).

  2. 서비스로서의 플랫폼(PaaS): 클라우드에 사용자 지정 애플리케이션을 배포할 수 있는 플랫폼을 제공한다(AWS 일래스틱 빈스토크, 구글 앱 엔진, 히로쿠 등)

  3. 서비스로서의 소프트웨어(SaaS): 인프라와 클라우드에서 실행되는 소프트웨어를 결합한다.

분류를 잘 이해하기 위해 예시를 살펴보자.

식사를 할 때 네 가지를 선택할 수 있다.

  1. 집에서 직접 해먹기: 온프레미스. 요리사, 식재료, 오븐, 접시, 가구 모두 스스로 관리.
  2. 식료품점에서 냉동 음식 사먹기: IaaS. 요리사, 식재료는 공급자가 관리해주고 오븐, 접시, 가구 등을 직접 관리.
  3. 배달 음식 먹기: PaaS. 요리사, 식재료, 오븐은 공급자가 관리해주고 접시, 가구 등은 직접 관리.
  4. 차를 타고 식당에 가서 먹기: 요리사, 식재로, 오븐, 접시, 가구 모두 공급자가 관리.

다양한 컴퓨팅 모델은 클라우드 공급자와 이용자 사이의 책임 소재에 귀결된다. 각 모델에서 요점은 통제에 관한 것, 즉 누가 인프라스트럭처를 유지 보수하고 애플리케이션 구축을 위해 어떤 기술을 사용할지 하는 점이다. IaaS 모델에서 클라우드 공급자는 기본적인 인프라스트럭처를 제공하지만 기술 선택과 최종 솔루션 구축은 각자의 몫이다. 반면 SaaS 모델에서 각자는 공급자가 제공하는 서비스의 수동적 소비자이며 기술 선택이나 애플리케이션을 위한 인프라스트럭처를 유지 보수할 책임이 없다.

새로운 클라우드 플랫폼

Faas, Caas 등이 있다.

FaaS 기반 애플리케이션은 람다나 구글 클라우드 함수로 만들 수 있고, 클라우드 공급자의 플랫폼 컴퓨팅 인프라스트럭처에서 완벽하게 실행하는 서버리스 코드로 배포된다. FaaS 플랫폼을 사용하면 서버 인프라스트럭처를 관리할 필요가 없고 함수를 실행하는 데 필요한 컴퓨팅 작동 시간만큼 지불하면 된다.

CaaS 모델에서 개발자는 도커처럼 클라우드 공급자에게 이식이 용이한 가상 컨테이너로 마이크로서비스를 빌드하고 배포한다. 서비스가 배포되는 가상 머신을 개발자가 관리해야 하는 IaaS 모델과 달리 CaaS 모델에서는 경량의 가상 컨테이너에 서비스를 배포한다. 클라우드 공급자는 ㅏ컨테이너를 실행하는 가상 서버는 물론 컨테이너의 구축과 배포, 모니터링, 확장을 종합한 도구로 실행한다. 아마존 ECS가 CaaS 기반 플랫폼의 예다.