An open source project sponsored by EMC allows applications written in C/C++, Java, Go, Node.js, and now Python to be transformed into unikernels -- operating systems that do nothing but run a single, dedicated application.
UniK (pronounced "unique") is one of several experiments with unikernels to see if their minimal footprint and security profile can work better than containers for some workloads.
UniK promises a simple way for an organization to find out if a unikernel version of a given app runs better than its containerized counterpart. The workload is about the same as would be required to deploy the app as a container.
Written mainly in Go, UniK compiles images that can then be deployed to Virtualbox, VMware vSphere, or Amazon Web Services. Go, C++, Node.js and Python are made part of a runtime that uses the rumprun platform, an existing toolchain for creating unikernel-like software. Java apps are deployed via OSv, a single-application OS that comes with JVM support.
Docker has been interested in bringing its container system and unikernels closer together. Back in January, it acquired Unikernel Systems, hoping to add the company's toolchain so that deploying unikernels is as easy as compositing a Docker image. UniK uses Docker images for its needed tooling, but it doesn't yet incorporate Unikernel Systems' technology -- so far, no implementation of a unikernel-centric Docker has been available for public use.
Another recent project, IncludeOS, has attempted to ease unikernel creation, but not in as broad a manner as UniK. IncludeOS provides a C++ library for a minimal level of operating system functionality to a program, allowing it to be deployed as a self-contained image that boots on a hypervisor. Again, it's C++ only, where UniK aims to encompass multiple languages.
This story, "Unikernel power comes to Java, Node.js, Go, and Python apps" was originally published by InfoWorld.