The Doppler Quarterly Spring 2018 | Page 67

function can be linked to AWS Lambda through an associated Amazon Resource Name (ARN). Since AWS Lambda is a metered service (you only pay for what you use), it is far more cost effective for running your Alexa skill, versus imple- menting it in a reserved EC2 instance. At its core, a Serverless architecture is comprised of some language specific function that is run on-demand, scheduled, executed and terminated. Server- less is being hyped as the post-VM and post-container way to build and deploy applications, but even Serverless functions need to run on some platform, and it just so happens that there is a perfectly good one available — Kubernetes!! In fact, there are at least two open source projects using K8s as the underlying platform for Serverless: Kubeless and Fission. The Fission project is a great example of how K8s can be used for Severless. Fission is comprised of an API server, a service router, a pool manager and a set of function specific Pods lay- ered on top of K8s (see Figure 4). Fission manages a pool of Pods hosting func- tions loaded into Fission. The controller keeps track of the functions, and man- ages event triggers and container images configured with defined functions. The pool manager manages a set of containers for running functions. The pool HTTP Requests Fission CLI Controller Router ... poolmgr "Generic" pods "Specific" Function pods Figure 4: Fission — Serverless functions for Kubernetes manager keeps these containers "warm," and schedules them on demand when triggered by specific events. The router receives HTTP requests and forwards them to the appropriate function Pod, requesting a Pod be scheduled by the pool manager if necessary. The pool manager is crucial to Fission, since it allows a function to be run with near instant start-up time, avoiding the latency of loading containers. SPRING 2018 | THE DOPPLER | 65