OpenSource Serverless Framework의 부상

OpenSource Serverless Framework의 부상

클라우드를 분류할 때 흔히 IaaS(Infra as a Service), PaaS(Platform as a Service), SaaS(Software as a Service)로 분류합니다. 클라우드를 활용한 서비스를 제공하기 위해서는 주로 IaaS, PaaS 등을 활용해 어플리케이션을 만들어야 하죠.
이제 IaaS, PaaS 외에, 어플리케이션 구축 시 좀 더 유연하고 쉽게 만들 수 있는 FaaS(Function as a Service)가 등장했고 ‘서버리스’가 부상하고 있습니다. IaaS 자원을 이용하여 미들웨어나 DB 등을 설치할 필요도 없고, 사용할 자원의 용량도 고민할 필요 없이 주어진 환경에서 어플리케이션을 생성하고 수행하기만 하면 되는 것입니다.
서버리스는 Platform으로 제공되는 기능을 활용하여 빠르게 어플리케이션을 작성/구동할 수 있습니다. 그리고 서비스 구동 시간에만 과금 되고, 트래픽 증가에 따른 서버의 용량을 고민할 필요가 없다는 점에서 많은 편의성을 제공하죠.

그림1 - 상용 서버리스 플랫폼 그림1 - 상용 서버리스 플랫폼

기업들 중에서는 AWS Lambda가 상용 서비스를 시작한 이래 Google, IBM, Azure, Naver 등의 클라우드 업체들도 Cloud Functions라는 이름으로 서버리스 환경을 제공하고 있고, 서버리스의 활용도 점차 증가하는 추세입니다.

서버리스의 구조를 살펴보면 Function을 중심으로 Function이 구동되는 Runtime 환경(FaaS: Function as as Service), Function을 호출하기 위한 Event Trigger, Function의 처리 결과를 저장하거나 알리기 위한 Backend Service(BaaS : Back as as Service) 이렇게 3가지로 구성되어 있습니다.

그림2 - 서버리스 구성요소 그림2 - 서버리스 구성요소

앞서 언급한, 상용 서버리스는 대부분 위의 3가지(FaaS, BaaS, Trigger) 요소를 모두 갖추고 있어 플랫폼으로써 다양한 기능을 제공하여 쉽게 서비스를 생성하고 관리할 수 있다는 점에서 매우 편리하지만 제공되는 서비스 공급자에 종속되는 경향이 있습니다. 따라서 이를 탈피하고자 자체 서버리스 환경을 구축하려고 하는 사용자를 위한 오픈소스 서버리스 프레임워크들이 출시되고 있습니다.
특히 최근의 Cloud Native Computing Foundation(CNCF)/Kubernetes Conference(KubeCon), Docker Conference(DockerCon)을 살펴보면 이러한 경향들이 두드러지고 있는데, 그 중 몇 가지를 소개해드리겠습니다.

오픈소스 서버리스 프레임워크(OpenSource Serverless Framework)

오픈소스 서버리스 프레임워크 제품으로는 Apache OpenWhisk, OpenFaaS, Iguazio Nuclio, Platform9 fission, bitnami Kubeless, Fn Project 등이 있습니다. 일부 상용 서버리스 플랫폼은 이들 제품을 활용하여 서비스를 제공하기도 하는데 IBM Cloud Functions(Apache OpenWhisk), Oracle Fn(Fn Project)이 여기에 해당됩니다.

그림3 - 오픈소스 서버리스 그림3 - 오픈소스 서버리스

오픈소스 서버리스 프레임워크는 Event Trigger, Runtime Engine, BackEnd Service를 구성하는 모듈로 이루어져 있으며, 제품에 따라 3가지 요소를 모두 갖추고 있거나 일부만 갖추고 있는 등 제품 별로 차이가 있습니다. 대체적으로 Docker나 Kubernetes Platform 상에서 Runtime 환경, CLI Tool을 제공하며, 그 중에서도 OpenFaaS는 Runtime 환경에 제약이 없다는 특징이 있습니다.

표1 - 오픈소스 서버리스 프레임워크 비교 오픈소스 서버리스 프레임워크 비교

1) Apache OpenWhisk(https://openwhisk.apache.org)

그림4 - OpenWhisk High-Level Architecture Diagram 
(출처. https://openwhisk.apache.org/documentation.html#openwhisk_architecture) 그림4 - OpenWhisk High-Level Architecture Diagram (출처. https://openwhisk.apache.org/documentation.html#openwhisk_architecture)

OpenWhisk는 Docker 기반의 서버리스 제품으로 Nginx, CouchDB, Kafka, Docker Container로 구성되어 있습니다. 오픈소스 서버리스 중에서도 Platform, Runtime, Deployment, Tool, Package, Client & SDK, Sample code 등 다양하고 체계적인 repository를 가지고 있어서 사용자는 필요한 요소를 선택하여 활용할 수 있습니다.

그림5 - OpenWhisk Project Structure 
(출처. https://openwhisk.apache.org/documentation.html#project-structure) 그림5 - OpenWhisk Project Structure (출처. https://openwhisk.apache.org/documentation.html#project-structure)

2) iguazio nuclio(https://nuclio.io)

nuclio는 HTTP, MQ, Kafka, Kinesis 등 다양한 Event Trigger, RunTime Engine, Pluggable DataBinder를 제공합니다. 또 Docker, Swarm, Kubernetes 외에도 Raspberry Pi 플랫폼을 지원하고 있으며, 편의성을 위한 CLI Tool, UI 도 제공하여 좀 더 편리하게 서버리스 플랫폼을 구축할 수 있습니다.

그림6 - Nuclio Architecture Diagram (출처. https://nuclio.io/docs/latest/concepts/architecture/) 그림6 - Nuclio Architecture Diagram (출처. https://nuclio.io/docs/latest/concepts/architecture/)

3) OpenFaaS (https://www.openfaas.com)

OpenFaaS는 Docker, Kubernetes 기반에서 CLI Tool, Runtime Engine을 제공하며 Event Trigger로 API Gateway/Watchdog, 모니터링을 위한 Prometheus로 구성되어 있습니다.

그림7 - OpenFaaS Architecture Diagram 그림7 - OpenFaaS Architecture Diagram

4) bitnami Kubeless (https://kubeless.io)

그림8 - Kubelss Guide & Reference  
(출처: https://serverless.com/framework/docs/providers/kubeless/) 그림8 - Kubelss Guide & Reference (출처: https://serverless.com/framework/docs/providers/kubeless/)

Kubeless는 이름처럼 Kubernetes Less가 아닌 Kubernetes-Native 서버리스 프레임워크로, CLI Tool, UI, Runtime Engine, Event Tigger의 비교적 간단한 구성으로 되어 있습니다. Kubernetes 환경에서 쉽게 설치가 가능하고 K8s 명령어를 그대로 활용할 수 있어 쉽게 적용해 볼 수 있습니다.

5) Fn Project (http://www.fnproject.io)

Fn Project도 기타 서버리스 프레임워크와 마찬가지로 Trigger에 해당하는 Fn LB, Runtime Engine인 Fn Server, 데이터 처리를 위한 DataStore, MQ 등으로 구성되어 있습니다.
Function 구동 환경은 Docker를 이용하고 있으며, 이 외에 CLI, FDK(Function Development Kit)을 제공합니다.

그림9 - Fn Project Architecture Diagram (출처. https://github.com/fnproject/docs) 그림9 - Fn Project Architecture Diagram (출처. https://github.com/fnproject/docs)

6) Platform9 fission (https://fission.io)

Fission은 Kubernetes-native 서버리스 프레임워크로, CLI Tool, HTTP/MQ/Timer 등의 Trigger, Runtime Engine의 간단한 구성으로 이루어져 있습니다. 서비스는 Kubernetes 상에서 pod로 구동됩니다.

그림10 - Fission Architecture Diagram (출처. https://platform9.com/fission/) 그림10 - Fission Architecture Diagram (출처. https://platform9.com/fission/)

위에서 언급한 제품 외에도 Funktion, faas-netes, IronFunctions 등이 있습니다. 앞으로도 오픈소스 서버리스 프레임워크 제품들은 계속 출시될 것이며, 기능 또한 업그레이드 될 것입니다.

서버리스는 이벤트에 의한 코드 즉, Function이 호출될 때만 실행이 되고 항상 대기하지 않습니다.
때문에 클라우드 비용이 저렴해지고 아직까지는 비교적 단순한 기능을 수행하는 비동기식 어플리케이션들이 서버리스 기반으로 우선 적용되고 있죠. 그래서 복잡한 비즈니스 로직을 가진 어플리케이션을 수행하려면, 서버리스보다는 전통적인 클라우드 환경을 선택하는 것이 좀더 유리할 수 있을 것입니다. 그러나 향후 기술이 성숙되면 IaaS, PaaS 를 활용해 구축하는 것과 유사한 수준의 서버리스 환경이 나타나게 될 것이고, 진정한 서버리스 세상이 도래할 것입니다.



▶   해당 콘텐츠는 저작권법에 의하여 보호받는 저작물로 기고자에 저작권이 있습니다.
▶   해당 콘텐츠는 사전 동의없이 2차 가공 및 영리적인 이용을 금하고 있습니다.



방지영 프로
방지영 프로 클라우드 전문가
삼성SDS 개발실

방지영 프로는 삼성SDS 아키텍처팀에서 Technical Architect/ Solution Architect로 근무하고 있으며 최근에는 클라우드 기반의 아키텍처 설계, 구축을 주로 하고 있습니다.

구독하기

인사이트 리포트 소식을 메일로 받아보세요