OCaml/MirageOS Diary, Week 3


Whilst continuing to work through Real World Ocaml, I did some research into related projects and this caught my interest: MirageOS [1] (a unikernel/library-OS for building small, fast and secure web-servers).

My history with servers 2003-2016

Why Unikernels?

In a NodeJS stack, for example, there are a lot of moving parts Operating System, system tools, NodeJS, NPM packages - that also pull in further packages - and sitting on top: the application).

Stacks like this have a lot components to think about, manage and deploy. In a world of micro-services the ratio of stuff to application code grows further.

On top of this, each item in the stack has the potential to introduce security vulnerability.

The challenge now is to reduce the complexity/stack-size. Go apps with micro-containers is a good example of this movement [2].

A potential step on from this are Unikernels and Library Operating Systems. Application code and operating system compiled and deployed as one purpose built unit. This leads to tiny (measured in kB rather than MB), fast starting and quickly deployed servers with fewer attack surfaces.

For a good history and overview of all this I recommend Unikernels: Rise of the Virtual Library Operating System [3].

So what am I doing about it?

I've enjoyed learning OCaml but needed a real-world project to use it on. I've also been looking to contribute to an Open Source project, ideally one that could play a part in the future of the internet's infrastructure. Discovering Unikernels lead me to sign up for the Mirage OS Hackathon (and it's in Marrakech) [4].

I'm all in.