목차
1. 클라우드 서비스 개요
1-1. 클라우드(Cloud)란?
1-2. 클라우드 서비스의 특징
1-3. 클라우드 서비스 모델과 이용 모델
1-4. 클라우드 이용 모델
1-5. 클라우드 서비스의 종류
2. IaaS
3. PaaS
4. SaaS & SECaaS
4-1. SaaS
4-2. SECaaS
5. Serverless
5-1. BaaS
5-2. FaaS
6. 끝내며..
1. 클라우드 서비스 개요
1-1. 클라우드(Cloud)란?
먼저 클라우드란 무엇일까? 클라우드는 컴퓨터를 사용한 정보 처리를 자신이 보유한 PC가 아닌, 인터넷에 존재하는 클라우드 사업자의 컴퓨터에서 처리하는 서비스를 말한다.
클라우드라는 단어는 어떤 특정 기술을 뜻하는 것이 아니라 이런 '개념'을 나타낸다.
클라우드 컴퓨팅이라는 것은 공유 구성이 가능한 컴퓨팅 리소스(네트워크, 서버, 스토리지, 애플리케이션 서비스)의 통합을 통해 어디서나 간편하게, 요청에 따라 네트워크를 통해 접근하는 것을 가능하게 하는 것이다.
1-2. 클라우드 서비스의 특징
아래는 NIST(미국 국립 표준 기술연구소)에서 지정한 클라우드 서비스의 일반적인 특징이다.
- 주문형 셀프서비스 : 사업자와 직접 상호 작용하지 않고, 사용자의 개별 관리화면을 통해 서비스를 이용할 수 있다.
- 광범위한 네트워크 접속 : 모바일 기기 등의 다양한 디바이스를 통해 서비스에 접속할 수 있다.
- 리소스의 공유 : 사업자의 컴퓨팅 리소스를 여러 사용자가 공유하는 형태로 이용한다. 또한, 사용자는 자신이 사용하는 리소스의 정확한 위치를 알 수 없다.
- 신속한 확장성 : 필요에 따라, 필요한 만큼의 스케일 업(처리 능력을 높이는 것)과 스케일 다운(처리 능력을 낮추는 것)이 가능하다.
- 측정 가능한 서비스 : 이용한 만큼 요금이 부가되는 종량제.
1-3. 클라우드 서비스 모델과 이용 모델
클라우드는 서비스 모델과 이용 모델로 나뉘어 지는데, 클라우드 서비스 모델과 이용 모델의 조합으로 분류할 수 있다.
1-4. 클라우드 이용 모델
클라우드 이용 모델에 대해 간단하게 설명하면 아래와 같다.
- Public Cloud : 클라우드 사업자가 시스템을 구축하고, 인터넷 망 등의 네트워크를 통해 불특정 다수의 기업과 개인에게 서비스를 제공하는 형태
- Private Cloud : 클라우드 관련 기술이 활용된 자사 전용 환경을 구축하여 컴퓨팅 리소스를 유연하게 사용하는 형태
- Community Cloud : 공통의 목적을 가진 특정 기업들이 클라우드 시스템을 형성하여 데이터 센터에서 공동 운영하는 형태
- Hybrid Cloud : Public Cloud, Private Cloud, Community Cloud 같은 클라우드 이용 모델과 온 프레미스(On-premise) 시스템을 연계시켜 활용하는 시스템 및 서비스
1-5. 클라우드 서비스의 종류
클라우드 서비스의 종류는 크게 IaaS, PaaS, SaaS 로 나뉘어 진다.
위 그림에서 음영 처리된 부분이 각 서비스 모델에서 사업자가 제공하는 영역을 나타낸다.
2. IaaS
서비스로서의 인프라 스트럭쳐(Infrastructure as a Service)
하드웨어 자원을 네트워크를 통해 이용하는 형태이다. 대표적으로 가상 서버나 온라인 스토리지 등을 제공한다.
IaaS 이용시 가상 서버에서 OS에 설치되는 데이터베이스와 미들웨어, 응용 프로그램 등의 소프트웨어를 자유롭게 운영할 수 있다. 그리고 IaaS 서비스에서는 사용하는 리소스의 양을 유연하게 변경함으로써 안정적인 웹사이트의 구축 비용과 운용 비용을 절감할 수 있다.
IaaS의 대표적인 서비스에는 Amazon Web Service(AWS)가 제공하는 Amazon Elastic Compute Cloud(EC2), Amazon S3 서비스가 있다.
3. PaaS
서비스로서의 플랫폼(Platform as a Service)
기업의 어플리케이션 실행 환경 및 어플리케이션 개발 환경을 서비스를 제공하는 모델이다.
PaaS 를 이용하면, 어플리케이션 실행 환경이나 데이터베이스 등이 미리 마련되어 있으므로, 인프라 구축에 들이는 시간을 절약할 수 있다. 그리고 서버, 네트워크, 보안 등을 클라우드 사업자에게 위임하므로 구축 및 운영이 쉽다.
하지만, 대신 PaaS에 대한 의존도가 높아지므로 서버 및 미들웨어에 대한 상세한 설정이 불가능하며, 다른 환경으로의 마이그레이션이 어렵다.
PaaS의 대표적인 서비스로는 AWS의 Elastic Beanstalk와 Heroku, Google App Engine 등이 있다.
여기까지 읽었을 때, "그럼 PaaS가 IaaS보다 훨씬 좋은거 아닌가?"하는 생각을 할 수 있다. 하지만 PaaS 와 IaaS는 각각의 장단점을 갖고 있으며, 아래 세 가지 선택 기준을 통해 이용자가 적절한 서비스를 선택하여 이용하는 것이 좋다.
- 가격 : 많은 것을 제공하는 PaaS가 IaaS보다 비싼 편이다. (물론, IaaS에서 제공하는 기능을 많~이 사용하면 IaaS가 더 비쌀 수 있다.)
- 제어 범위 : PaaS는 많은 것을 제공하는 대신, 사용자가 컨트롤 할 수 있는 범위가 좁다.
- 시간 : PaaS는 개발 및 서비스 환경을 구축하는 시간을 절약할 수 있다.
4. SaaS & SECaaS
4-1. SaaS
서비스로서의 소프트웨어(Software as a Service)
주로 업무에서 사용하는 소프트웨어의 기능을 인터넷 등의 네트워크를 통해 필요한 만큼 서비스로 이용할 수 있도록 제공하는 형태이다.
SaaS는 공유 자원을 여러 사용자들이 공유하는 멀티테넌트 방식의 서비스를 제공한다. (사용자의 데이터는 분리되도록 설계한다.) 그리고 소프트웨어의 업데이트는 사용자가 하는 것이 아니라, 클라우드 사업자가 수행한다. 그러므로 항상 최신의 기능이 제공되며 버그가 방치되지 않는다.
SaaS 서비스는 가입만 하면, 설치 필요 없이 바로 소프트웨어를 사용할 수 있으며, 어느 단말기에서나 인터넷만 되면 소프트웨어의 기능을 수행할 수 있다. 전자메일, 그룹웨어, CRM 등등이 SaaS서비스로 많이 제공된다.
대표적인 SaaS 서비스로는 Google Apps, 세일즈포스, Office365 등이 있다.
4-2. SECaaS
서비스로서의 보안(Security as a Service)
SaaS의 한 종류로서, 클라우드를 이용해 고객이 필요로 하는 보안 서비스를 제공한다.
기본적으로 SaaS의 범주에 속한다고 볼 수 있다. 기존의 보안 분야에서는 보안 솔루션을 사용하기 위해서 큰 돈을 주고 보안 장비를 도입하고 설치하고 운영해야 했으나, SECaaS 서비스를 이용할 경우 저렴한 가격에 간편하게 보안 서비스를 받을 수 있다. 따라서 비교적 영세한 기업에서 보안인력구성, 보안관리활동 등에 투입되는 비용을 아낄 수 있다.
대표적인 SECaaS 서비스로는 Cloudflare, Incapsula, Iboss, Zscaler 등이 있다.
5. Serverless
단어 뜻 그대로 서버 없이 이용자가 어플리케이션을 런칭할 수 있는 서비스를 말한다. 물론 실제로는 작업을 처리하는 서버가 존재하지만, 이용자(개발자)가 서버의 존재를 신경쓰지 않아도 되는 서비스를 말한다.
* 서버리스는 PaaS의 범주 안에 들어간다고도 볼 수 있지만, 서버리스라는 개념이 널리 쓰이기 때문에 따로 다룬다.
서버리스 서비스는 BaaS(Backend as a Service)와 FaaS(Function as a Service)로 구분된다.
* BaaS는 Blockchain as a Service로도 쓰이니 주의
5-1. BaaS
앱 개발에 있어서 필요한 다양한 백엔드 기능들(데이터베이스, 소셜서비스 연동, 파일시스템 등)을 API로 제공해줌으로서, 개발자들이 서버 개발을 하지 않고서도 필요한 기능을 쉽고 빠르게 구현할 수 있게 해준다. 백엔드 개발에 들어가는 시간이 단축되고, 백엔드 지식이 부족해도 앱 개발이 가능하며, 유저 증가에 따른 서버 확장이 불필요하다는 장점이 있다. 다만, 필요한 백엔드 기능이 있는데, 사용중인 BaaS 서비스에서 제공하지 않는다면, 프론트엔드에서 개발해야되는 경우가 생길 수도 있다. 또 BaaS 데이터단의 로직이 변경되면, 클라이언트 코드의 수정이 필요하게 될 수 있다.
BaaS의 대표적인 서비스로는 Firebase가 있다.
Firebase에서는 실시간 데이터베이스를 사용하여 데이터가 새로 생성되거나, 수정되었을 때 소켓을 사용하여 클라이언트에게 바로 반영시켜주는 기능이 있다. 이런 기능은 직접 개발하게 되면 구조 설정에 꽤 많은 시간이 필요 할 수 있는데 이를 단지 코드 몇줄만으로 구현 할 수 있게 해주는 좋은 기능들을 지니고 있다.
5-2. FaaS
서비스에 함수를 등록하고, 특정 이벤트(주기적 실행, 웹 API, 콘솔로 직접 호출)를 통해 실행 시킬 수 있는 서비스이다.
쉽게 말해서 클라우드에 함수가 올라가 있고, 그 함수를 호출할 수 있는 서비스라고 할 수 있다. FaaS 는 함수가 호출된 만큼만 비용이 발생하므로 매우 저렴하게 이용할 수 있다. 서버를 사용하지 않기 때문에 인프라 관리나 보안에 신경쓸 일이 없고, 서버 성능에도 신경을 쓰지 않아도 된다.
다만, FaaS서비스에 대한 강의 의존성 때문에 다른 환경으로의 변경이 어렵고, 웹 소켓 처럼 연속성 있는 연결을 지원하지 않는다는 단점이 있다.
FaaS의 대표적인 서비스로는 AWS Lambda가 있다.
6. 끝내며..
클라우드가 무서운 속도로 성장하면서, 클라우드 서비스의 종류도 계속해서 증가하고 있고, 서비스의 질 또한 빠른 속도로 좋아지고 있다. 위에 언급한 서비스의 종류 외에도 여러가지 클라우드 서비스들이 존재하며, 지금도 여러가지 서비스 모델이 우후죽순처럼 생겨나고 있다.
이렇게 클라우드 서비스가 좋아질수록 개발자는 자신의 어플리케이션 개발에만 집중할 수 있는 환경이 만들어지고 있는 것이 참 좋은 것 같다. 각각의 클라우드 서비스 모델의 성격과 장단점을 이해하고, 개발하려는 어플리케이션을 잘 보완해줄 수 있는 클라우드 서비스를 선택하여 사용하는 것 또한 요즘(?) 개발자의 역량이라고도 할 수 있을 것 같다.
[참고]
하야시 마사유키, 『그림으로 배우는 클라우드』, 서재원, 영진닷컴(2017)
VELOPERT.LOG - 서버리스 아키텍처란? (https://velopert.com/3543)