Thiago Varela

Experimenting unikernels

Unikernels are specialised, single-address-space machine images constructed by using library operating systems. - unikernel.org

The first time I heard the term was last week, since then I did some experimentation with Nanos and I plan to take a look at OSv.

With Nanos I was able to deploy a simple Rust http service to EC2, tweaking a bit their Ops tool and setting up a CDK Stack to make things easier. Got stuck when trying to work with environment variables at runtime.

But why?

Well, I'm quite excited learning this stuff, though I know nothing about the inner bits of OSes and kernels and virtualisations. It seems intriguing, being able to optimise your software (that runs in a virtualised cloud) and reduce the cost and consumption (cpu, memory, energy).

It's a bit scary to dedicate time to unikernels, if you browse the web you'll find very little. The first impression is that it is an old concept not broadly accepted by the enterprise, seems folks are happy with K8s and containers. At the same time we see solutions like Firecracker being used by AWS Lambda.

I like the idea of a very limited toolset, that we have to overcome those limitations in our software, bringing loads of creativity. Not to mention the benefits, small, precise and safe.

Worst case scenario, I'll learn something new.