Using Unikernels in the Function as a Service Cloud Execution Model

OData support
Dr. Maliosz Markosz
Department of Telecommunications and Media Informatics

Function as a Service is a new cloud computing service type that makes it

possible for the user to run his/her code without having to build a physical or virtual

infrastructure as well as paying only for the time and resources actually used. This is

achieved by the provider only starting an isolated environment for the user when it is

needed and as such having minimal useless idle time and as such it is beneficial for both

parties to use this cloud model.

The other technology I’m working with is unikernels (sometimes referred to as

library OSes) which means bundling a piece of code (written by the user) with only the

necessary libraries of the given programming language and a very minimalistic kernel

so it can be used either with a hypervisor or on bare-metal.

My job was to combine a unikernel implementation and a Function as a Service

implementation best suited for working together. Choosing the Function as a Service

implementation proved to be the harder choice. In the beginning I had two ideas,

OpenWhisk and Fn, because neither of those two necessarily rely on Kubernetes, which

would have complicated my work a lot. I tried to use OpenWhisk by Apache because of

its maturity and better documentation, but after trying for weeks I decided to abandon it

in favour of Fn, because of its relative simplicity.

Selecting a particular unikernel was straightforward, since IncludeOS is the only

one that both uses IBM’s solo5 project (which was a requirement that I decided on) and

also support the C and C++ languages that I am familiar with. The other alternative was

MirageOS, but that can only build and run unikernels that have the service’s code

written in OCaml, which I did not have any experience before with. Solo5 is a new

hypervisor that is much more lightweight than most others.

In the end I managed to finish my task in the given time using a combination of

Fn and IncludeOS, I also made it possible to use the command line interface of Fn to

build as well as run IncludeOS unikernels. I also measured the startup times and CPU

performance of the solution. There is also a significant portion in this document about

the solo5 project itself and its modularity as well as the inner workings and speed of the

unchanged versions of Fn and OpenWhisk.


Please sign in to download the files of this thesis.