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