What's UNICORE about?
UNICORE is creating a common code base and toolkit for deployment of applications to secure and reliable execution environments.
What is the problem?
Quickly developing, upgrading and deploying applications is the core function of the IT industry: online content providers, network operators, CDNs, business-to-business providers, and even Internet of Things providers need to be able to quickly rollout software releases to enhance their product offerings while reducing developer time and increasing customer satisfaction.
Such software is typically deployed and runs on shared hardware hosted either in public, private or mobile-edge clouds or other federated infrastructures. Running software on shared hardware massively boosts efficiency but also reduces isolation.
When public clouds appeared, the standard unit of deployment was the virtual machine (VM). However, traditional virtual machines are heavyweight as they require a full operating system image to run; this implies that running many of them on the same hardware requires a lot of RAM and CPU cycles and can reduce performance: memory and disk space is wasted, and starting / stopping VMs takes tens of seconds in the best case, and often much longer.
For these reasons, the software industry has embraced containers as a replacement to VMs for a wide variety of applications, with the goal of further improving performance of shared hardware, reducing dev-ops costs and speeding-up software deployment. Despite their efficiency, containers offer poor isolation as shown by their many vulnerabilities.
At this point, the software world appears stuck with inherently insecure and not-so-efficient containers, because virtual machines are deemed too expensive to use in many scenarios.
How will UNICORE solve it?
The UNICORE project is developing tools to enable lightweight VM development to be as easy as compiling an app for an existing OS, thus unleashing the use of next generation of cloud computing services and technologies. With UNICORE toolchains for unikernels, software developers will be able to easily build and quickly deploy lightweight virtual machines starting from existing applications.
Unikernels are the smallest lightweight VMs one can create: they are VMs where there is no traditional operating system running underneath the application; instead, the application is compiled against bits of OS functionality that it needs, resulting in a very small app+OS bundle. Many unikernels have been developed already such as ClickOS, MiniCache, Mirage, Minipython, Solo5, OSv, Erlang on Xen, HalVM; they all offer great performance and low memory footprint for their chosen task.
Despite their advantages, developing applications with unikernels is a manual process today requiring significant expert resources, which prevents them from being widely used by the software industry.
We plan to enable standard developers and dev-ops engineers to create, maintain and deploy unikernels with ease by developing an open-source toolchain that will enable secure and portable unikernel development.