Posts [Backend] Cloud Computing, Packaged Software, IasS, PasS, SaaS
Post
Cancel

[Backend] Cloud Computing, Packaged Software, IasS, PasS, SaaS

클라우드 컴퓨팅(Cloud Computing)이란?

클라우드 컴퓨팅에 대해 다양한 정의들이 존재하지만 쉽게 정리하자면 다음과 같다. 인터넷으로 가상화된 IT 리소스를 서비스를 제공하는 것이다. 예를 들면, 일반적인 IT기업에서 서비스를 하기 위해 실제 서버 1대를 구입할 것이다. 하지만 클라우드 컴퓨팅을 사용한다면 이처럼 실제로 물리적인 서버를 구입할 필요가 없게 될 것이다.

그리고 클라우드 컴퓨팅에서 가상화하여 서비스로 제공하는 대상은 서버, 플랫폼, , 스토리지, 소프트웨어 등이 존재한다.

  • 서버: 가상화된 물리적 자원 (CPU, Memory, Disk)
  • 플랫폼: 어플리케이션 개발 및 운영 하기 위한 기반이 되는 구성요소 (OS, JDK, DataBase, 미들웨어)
  • 소프트웨어: 애플리케이션 레벨까지 서비스로 제공된다 (Google Apps, Office365)

가상화

컴퓨터에서 컴퓨터 리소스의 추상화를 일컫는 광범위한 용어이다. 즉, 하나의 물리적인인 머신을 가상화를 관리하는 소프트웨어(주로 Hypervisotr)를 사용하여 여러 가상머신(VM)을 생성하는 것을 말한다. 더 구체적인 개념은 여기를 참고하면 좋다.

가상화와 클라우드 컴퓨팅의 차이는?

쉽게 정의하면 가상화는 기술이고 클라우드는 방법론이라 할 수 있다. 즉, 클라우드 컴퓨팅은 가상화 기술을 기반으로 한다.

Packaged Software, IasS, PasS, SaaS

1

IasS, PasS, SaaS에 대해 찾아보면 위와 같은 그림을 자주 볼 수 있다. IT 인프라의 여러 필요한 구성 요소 중 예전에는 모두 사용자가 관리해야 했지만, 이제는 일정 부분을 클라우드에서 내려받는 형태가 많이 도입되었다. 즉, 얼마만큼 사용자가 관리하고 얼마만큼 클라우드에서 제공받는가에 따라 위의 그림과 같이 4가지로 나누어진다. 위의 그림에서 노란색의 You manage는 사용자가 관리해야 할 부분이고, 흰색의 Managed by vendor는 클라우드에서 관리해주는 부분이다.

Packaged Software

사용자가 직접 인프라와 플랫폼, 애플리케이션까지 모두 구성하여 관리하는 모델을 의미한다.

일반적으로 CPU, RAM, Storage, Network device 등 물리적인 서버를 1대 구입하여 직접 OS를 설치하고 네트워크 환경을 직접 구성하는 등 모든 서버 관리를 직접적으로 하는 것이다.

모든 것을 직접 사용자가 다 준비해야 하기에 매우 큰 시간과 돈을 소모하게 된다.

IaaS(Infrastructure as a service)

Infrastructure 레벨을 제공하는 서비스를 의미한다.

사용자는 OS를 직접 올리고 그 상위 게층만 구성하면 되는 모델이다. 우리가 자주 사용하는 가상 호스팅(VM)과 비슷하나 가상 호스팅은 우리가 직접 물리적인 서버를 구매하고 그 안에서 자원을 할당하여 구성해야 한다. 하지만 Iaas 클라우드 컴퓨팅을 통해 제공받은 환경에서 우리가 선택할 수 있다는 차이가 있다.

기업에선 OS와 애플리케이션을 직접 관리해야 하며, 관리 측면에서 개발자와 인프라 담당자의 역할을 분담시킬 수 있다.

IaaS의 특징

기업은 가상 서버 하위의 레벨에 대해서는 고려할 필요가 없다. 위와 같은 부분들이 장점이 될 수 있으나 반면에 운영부서에선 직접 컨트롤 할 수 없는 단점이 될 수도 있다.

IaaS의 예시

Iaas의 대표적인 예시로는 AWS의 EC2를 생각할 수 있다. AWS의 EC2를 이용하면 우리는 물리적인 서버 및 Network, Storage 등을 직접 구매하거나 준비하지 않아도 원하는 OS를 설치해 서버로 사용할 수 있다.

AWS의 EC2는 사용자가 원하는 OS 및 스펙을 선택하면 모든 관리를 AWS에서 해주게 된다.

PaaS(Platform as a service)

개발자가 응용 프로그램을 작성할 수 있도록 플랫폼 및 환경을 제공하는 모델이다.

Iaas와 헷갈릴 수 있는데 AWS와 같은 서비스가 VM을 제공하는 IaaS라면, PaaS는 node.js, Java와 같은 런타임을 미리 설치해놓고, 거기에 소스코드를 돌리는 구조이다. 즉, 우리는 소스코드만 올려 빌드하는 것이고, 컴파일은 클라우드에서 하여 결과만 가져오는 것이라고 생각하면 된다.

PaaS의 장점

1) 애플리케이션 외에 모든 것을 제공받기에 인프라를 직접 모니터링할 필요가 없다. 관리적인 측면 또한 편리하다.

2) 사용자는 OS, Server 하드웨어, Network 등등을 고려할 필요가 없기에 빠르게 애플리케이션을 개발하고 서비스를 할 수 있다.

PaaS의 단점

1) IaaS와 마찬가지로 하나의 인프라를 기반으로 개발할 수 있다는 것 자체가 장점이자 단점이 될 수 있다.

2) PaaS는 기본적으로 애플리케이션과 플랫폼이 함께 제공됩니다. 애플리케이션이 플랫폼에 종속되어 개발되기 때문에 다른 플랫폼으로의 이동이 어려울 수도 있다.

SaaS(Software as a service)

위의 3가지 용어보다 가장 많이 접할 수 있게 SaaS일 것이다. SaaS는 설치할 필요도 없이 클라우드를 통해 제공되는 SW모델이다.

위의 그림에서 보이는 것처럼 모든 것을 클라우드를 통해 제공받음으로써 사용자는 별도의 설치나 부담이 필요 없이 SW를 사용할 수 있다. SaaS는 소비 관점에서 제공되는 IT 방식의 서비스로 정리할 수 있다. 구독 방식이나 트래픽 기반으로 수익을 창출할 수 있다.

SaaS의 장점

사용자는 Public Cloud에 있는 SW를 웹 브라우저로 불러와 언제 어디서나 사용할 수 있기에 사용하기 매우 쉽고, 최신 SW업데이트를 빠르게 제공 받을 수 있다.

SaaS의 단점

SaaS의 특성상 반드시 인터넷에 접속 할 수 있어야만 사용할 수 있고, 외부의 데이터 노출에 대한 위험이 존재한다. 하지만 위와 같은 단점은 SaaS만 해당하는 것은 아니라 생각한다.

SaaS의 예시

웹 메일, 구글 클라우드, 네이버 클라우드, MS오피스365, 드롭박스 등이 있다.

IaaS, PaaS, SaaS 정리

2

위의 그림과 같이 한 단어로 host, build, consume으로 표현 할 수 있다.

  • IaaS : 물리적 자원 제공
    • 하드웨어를 서비스로 제공하는 클라우드 모델. OS와 애플리케이션을 관리
  • PaaS : 소프트웨어 개발을 돕는 플랫폼 제공
    • 하드웨어에 더해 애플리케이션을 운영하기 위한 OS와 미들웨어를 비롯한 관련 기능들을 서비스로 제공
    • 개발자는 소스코드만 올리면 클라우드로 부터 빌드된 결과물을 받아 서비스 할 수 있음
  • SaaS : 실제 고객이 사용하는 소프트웨어 제공
    • 애플리케이션 레벨까지 전부 서비스로 제공
    • 개발자보다는 실 사용자에게 바로 제공

출처

This post is licensed under CC BY 4.0 by the author.

[개발자 블로그] Spring에서 Service ServiceImpl 사용해야하는지

[Java] Exception