클라우드를 크게 3가지로 나눈다. 그 때 사용하는 용어가 SaaS, PaaS, IaaS이다. 분류 기준은 서비스를 ‘어느 수준까지 제공하는가’ 이다.
SaaS는 인프라, 플랫폼, 애플리케이션까지 제공한다. 가장 익숙하게 사용하는 서비스로, SNS, 블로그 서비스, 웹 메일 서비스, 드롭박스 등이 이에 해당된다. (사용자는 애플리케이션의 기능과 데이터에 대해서만 제한된 제어권을 가지며, 인프라나 플랫폼의 관리는 서비스 제공자에게 위임)
이에 반해 PaaS는 플랫폼만 제공한다. OS가 설치된 서버에 사용자가 애플리케이션을 설치하여 사용해야 한다. 임대 서버에 해당된다. (개발자는 애플리케이션 코드와 데이터에 대한 제어권을 가지지만, 하드웨어, 운영 체제, 네트워크 등의 관리는 PaaS 제공자에게 위임)
IaaS는 인프라만 제공한다. 즉 네트워크나 서버 머신 등을 제공한다. (IaaS는 가장 낮은 수준의 추상화를 제공하며, 사용자는 가상 서버에 대한 완전한 제어권을 가지고, 운영 체제, 미들웨어, 애플리케이션 등의 설치 및 관리를 직접 수행)
3가지 서비스는 각각 특징을 가지는데, 가장 중요한 특성은 당연하게도 애플리케이션까지 제공되면 편리한 반면, 자유도가 낮아지고, 자유도가 높아질수록 작업이 어렵다는 점이다.
그렇다면, AWS EC2는 어디에 해당될까? IaaS에 해당된다. 사용자는 EC2를 사용하면서 필요한 운영 체제, 미들웨어, 애플리케이션 등을 설치하고 관리할 수 있다 (추가적으로 네트워크 구성 또한 가능하다). 즉 EC2는 사용자에게 인프라 레벨의 제어권과 유연성을 제공한다.
그렇다면, AWS Lambda (Serverless Function)의 경우는 어디에 해당될까? 이는 Paas에 해당된다. 기본적으로 운영체제가 설치되어 있고, Lambda는 개발자가 인프라 관리 없이 코드 실행에 집중할 수 있도록 도와준다.
따라서 이 세 가지를 구분하는 기준을 삼을 때, 어떤 레벨의 제어권과 유연성을 가지는 지를 기준으로 구분해야한다.