Unikraft: Shaping the Future of Cloud Deployments with Unikernels

Unikraft: Shaping the Future of Cloud Deployments with Unikernels

Whether you visit an online shop, a social network, or a booking platform, as a user, you’d expect web applications to load and respond quickly. To ensure such a seamless user experience, web servers in the backend need to handle zillions of requests to load the right page or process data the right way. 

While the performance of a cloud-based web server certainly depends on its hardware, it also depends on the (virtualized) software stack it runs to provide a service. More often than not, such stacks are overly bloated with respect to the service that’s needed. For example, deploying an entire Ubuntu distribution just to run NGINX is an inefficient and expensive, albeit convenient, way of getting a service up and running quickly and having it easily scale with load.

Unikraft, a start-up founded in 2021 by Felipe HuiciAlexander Jung, and Simon Kuenzer, is on a mission to fundamentally change the efficiency of cloud deployments, leveraging unikernels, highly specialized, high-performance, efficient, and secure virtual machines. 

After raising a seed round in 2022 from Fly VenturesMango Capital, and First Momentum Ventures, Unikraft is now developing a drop-in replacement for cloud workloads that can transparently accelerate web servers, databases, proxies as well as programs in an extensive range of languages, including  Go, Rust, JavaScript, and C/C++, resulting in reduced cloud spend and noticeably more efficient deployments without any changes to the applications or tools used to build and deploy them. 

Learn more about the future of Unikraft from our interview with its CEO and co-founder, Felipe Huici:

Why Did You Start Unikraft?

Coming from a research background in cloud optimization, we were frustrated by how inefficient it is to deploy to the cloud. If all I want is to run a web server or proxy, why do I need several hundred MBs of memory to do so? Why are cold boots so painful? Could I squeeze more requests per second out of an instance? And are these problems really fundamental, or are they just the current way of doing business and thus fixable? 

This status quo is understandable. For many years the cloud has provided an amazing mechanism to painlessly and quickly deploy a service and to transparently scale it with load. This convenience, however, comes at a big (cloud spend) cost, and companies have more recently started taking a serious look at the bottom line and their ballooning cloud bills.

The seed of Unikraft started many years ago as we were looking into running virtualized network processing workloads. At that time, someone from the Xen hypervisor community pointed us to a minimalistic OS called miniOS that we could directly couple with an application for performance reasons. We could boot these early unikernels in milliseconds and process tens of Gb/s in software, which showed us their potential.

Skipping forward a few years, we decided to create the Linux Foundation Unikraft open-source project to provide a fully modular library OS and build system targeting cloud deployments. We then, in 2021, decided to create a startup to commercialize this technology.

How Do Cloud Deployments With Unikernels Work?

Linux as a general-purpose operating system is good at everything, but arguably perfect at nothing. The fundamental question is: do cloud servers really need all the packages that typically come with a Linux distribution like Debian, as well as all of the kernel code? Unikraft’s modularity allows us to build images that have only the code that an application needs to run, and nothing more. 

Take NGINX, arguably the most popular web server, as an example. When built against Unikraft, the resulting image needs only a few MBs to run, (cold) boots within a few milliseconds, and can serve 300K+ requests per second on a single CPU core. This is double the performance compared to an NGINX running on a Linux virtual machine.

Another principle of Unikraft from the get-go was that it should not require applications to be modified in order to run on top of it. Towards this goal, the open-source project has put a lot of effort over the years to be as POSIX compliant as possible, implementing, so far, close to 200 syscalls (syscalls are essentially the API that Linux exposes to applications). As far as the application is concerned, it’s running on Linux, even though it’s Unikraft underneath.

On the commercial side, we leverage the basics of the open-source project but work hard on a range of performance optimization, even better support for applications and languages, and seamless integration and deployment with both the cloud tooling ecosystem and major cloud providers. At its simplest, customers can select their application or workload, and Unikraft transparently generates an accelerated image, leaving the application unmodified. The building of such images and their deployment can be done using the customer’s existing CI/CD systems and tools such as  Kubernetes, TerraForm, Packer, and so on. 

An added bonus of deploying such specialized images is increased security: since they only contain the code that applications need to run, that translates to fewer lines of code, so a smaller Trusted Computing Base (TCB) and potentially fewer attack vectors. In addition, in our images everything is off by default: services, ports and the like are off unless the application explicitly needs them.

How Did You Evaluate Your Startup Idea?

We knew that cloud costs were an issue. Even when we were just doing research, we got requests from the industry that our unikernels might work well for them. Such exchanges were early indicators that the market might be receptive to a solution based on such lightweight virtualization. Building a modular OS from scratch requires a lot of engineering, and so it took the better part of five years for Unikraft to become mature enough for us to launch a startup based on it. As an open-core company, we are deeply committed to supporting the open-source project, and we find doing so and interacting with its ever-growing community great fun! 

What Advice Would You Give Fellow Deep Tech Founders?

As a tech-heavy team, we always tend towards designing and coding a perfect solution before showing it to the outside world. My advice to early startups is to push the needle towards releasing incomplete, less-than-perfect solutions. This is fundamental to test market reaction and to avoid a pitfall where you take a long time to build the “perfect” product only to find out that the market doesn’t care for it. Try to build a team culture that allows you to move fast and iterate quickly, incorporating market feedback at each iteration.  

Further Reading

How it all started – The story of Unikraft, told on their blog.

Unikernels: Rethinking Cloud Infrastructure – An entire website with resources dedicated to unikernels. 

Was sind Unikernels? – German article about the concept of unikernel images.