kgneng2 / blokg

blog
MIT License
0 stars 0 forks source link

Serverless Lambda #29

Open kgneng2 opened 3 years ago

kgneng2 commented 3 years ago

wrapping : https://openwhisk.apache.org/

Overview

image

이벤트의 예로는, DB의 레코드 변경, IoT 센서 데이터, 새로운 GitHub commits, 또는 단순한 HTTP Request 등을 들 수 있으며, 외부의 이벤트는 Feed에 의해 전달되고, 해당 Feed가 Trigger를 발화하여 Action을 수행합니다.

특정 Action과 Trigger의 연결을 Rule을 통해 정의할 수 있으며, Rule에 의해 Trigger와 Action이 연결되면, Trigger가 발화될 때마다, 같은 수의 Action이 실행됩니다.

Action은 사용자가 정의한 코드를 나타내며, NodeJS, Python, Swift 등의 다양한 언어로 정의할 수 있습니다. 별도의 코드 변경 없이, 여러 개의 Action을 chaining하여, Sequence Action으로 나타낼 수 있으며, 앞선 Action의 Output이 다음 Action의 Input으로 전달됩니다.

일반적인 서버 기반 아키텍처와는 다르게, 이벤트가 발생하는 시점에만 코드가 실행되며, 발생한 이벤트의 수와 정확하게 동일한 횟수의 코드 실행이 보장되기 때문에, 근본적으로 Scalable 하며, Resource의 사용이 최적화된 모델이라 할 수 있습니다.

Architecture

image

  1. 모든 기능은 REST API 기반으로 제공되며, Nginx는 SSL termination 및 load-balancing을 담당합니다.
  2. Controller는 CouchDB를 통해 인증/권한을 체크하고, 액션 실행 요청을 Kafka에게 전송합니다.
  3. Invoker는 Kafka를 통해 액션 실행 요청을 전달받아, 적절한 액션 컨테이너를 생성하고, 사용자의 코드를 실행합니다.
  4. 실행된 결과는 최종적으로 CouchDB에 저장됩니다.

CLI install

curl -fsSL https://lambda-dev.navercorp.com/cli/go/download/get.sh | sh