Serverless 는 BaaS(Backend as a Service), FaaS(Function as a Service) 로 크게 나눌 수 있다.

BaaS 는 명칭에서 알 수 있듯이 Backend 서비스를 위한 것이다. Firebase가 대표적이다.

데이터베이스, 소셜 서비스 연동, 파일시스템, Auth 등을 제공해준다.

 

FaaS는 코드를 function 단위로 나누어 event 기준으로 실행시키는 것을 말한다. FaaS의 특징 중 하나가 stateless 라는 것이다.

function을 container에 실어서 수행하고 수행이 끝나면 버리는 것이다.  AWS lambda, Apache openwhisk가 대표적이다.

 

IBM cloud functions 는 Apache openwhisk 기반이다. (IBM 은 openwhisk를 Apache 재단을 통해  opensource project 로 공개하고 전세계 개발자들과 함께 발전 시키고 있다)

 

Openwhisk 는  serveless FaaS platform이다. (aws 의 lambda를 생각하면 쉽다)

서버가 없다는 의미는 실제로 서버가 없다는것은 아니고, 플랫폼을 사용하는 개발자 입장에서 서버에 대한 고려를 하지 않아도 된다는 의미 이다.

가상머신이나 베어메탈 처럼 서버나 네트워크, 스토리지 등 인프라를 서비스로 제공하는 것이 IaaS (Infrastructure as a Service),

웹 서비스를 코드만 올리면 플랫폼으로 실행시켜주는 것이 PaaS (Platform as a Service) 인 것처럼 서버리스는 FaaS (Function as a service) 라고 불리기도 한다.

이벤트가 발생했을 때  코드가 함수 단위로 실행된다. 또한 function이 실행되지 않으면 비용이 없다.

서비스의 형태에 따라 매우 저렴하게 서비스를 유지 할 수 있는 큰 장점이다.

 

이번 글에서는 openwhisk를 사용해 볼 것이다.

Openwhisk를 사용하기 위해선 Action, Trigger, Rule, Sequence, Package 라는것을 이해해야 한다.

트리거 (Triggers)

데이터베이스, 장치, 웹 등에서 발생한 이벤트를 트리거라고 한다.

 

액션 (Actions)

액션은 지원되는 프로그래밍 언어의 단일 함수로 구현된 코드로, 트리거가 발생했을 때 실행되어 결과를 반환한다.

 

룰 (Rules)

룰은 트리거에서 발생한 이벤트 대해 어떤 액션이 실행될지 정의한다.

 

시퀸스 (Sequences)

액션을 연결하는 조합을 만들어 실행하는 것을 시퀸스라고 한다.

 

패키지 (Packages)

트리거와 액션을 모아 하나의 패키지로 공개할 수 있다. 패키지로 정의된 외부 서비스를 사용할 수도 있고, 직접 만든 패키지를 외부에 공개할 수도 있다.

[출처: Apache OpenWhisk – 소개 및 아키텍쳐]

 

아래 글을 읽어 본다면 전반적인 severless architecture에 대해 이해 할 수 있다.

영어 원본과 한글 번역본이 있다. 편한 버전으로 읽어 보자.

원본: https://martinfowler.com/articles/serverless.html

번역본 : https://blog.aliencube.org/ko/2016/06/23/serverless-architectures/

토론 참가

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다