title: A Continuous delivery strategy for unikernel-based cloud services
Creators: name: Mahlknecht, Mathias
Publisher: name: TU Wien
Year: 2019
Subjects: subject: Unikernel
subject: Container
subject: Continuous Delivery
subject: Jenkins
subject: unikernel
subject: container
subject: continuous delivery
subject: jenkins

description: In den letzten Jahren hat sich die Art wie Anwendungen entwickelt, deployed und gehostet werden stark verändert. Vor zehn Jahren waren die meisten Anwendungen noch monolithische Systeme. Sie liefen lokal oder auf selbst gehostet Servern und die Entwicklung umfasste teils Monate dauernde Release Zyklen. Moderne Anwendungen hingegen werden heute nach agilen Prinzipien entwickelt, wobei die Funktionalität in kleine unabhängige Services gekapselt wird, welche auf einer Cloud Infrastruktur ausgeführt werden. Automatisierung und Virtualisierung unterstützen die Entwicklung und das Deployment solcher Anwendungen. Container, z. B. Docker, bieten eine leichtgewichtige Alternative zu klassischen virtuellen Maschinen und sind heute die meist genutzte Technologie für Cloud basierte Softwarelösungen. Ihre Kompaktheit und kurze Startdauer sind ideal in Kombination mit modernen Automatisierungs- und Orchestrierungstools, zum hosten von verteilter Software, in der Cloud. In den letzten Jahren haben sich Unikernel als Alternative zu Containern und klassischen virtuellen Maschinen erwiesen. Diese basieren auf dem Konzept der Library-Betriebssysteme, kombiniert mit modernen Methoden der Virtualisierung, d. h. Unikernels vereinen die Vorteile von Containern und klassischen virtuellen Maschinen, durch starke Isolation gepaart mit einer leichtgewichtigen Implementierung. Während Container von Continuous Delivery Tools bereits gut unterstützt werden, ist das für Unikernels noch nicht der Fall. Es ist mit erheblich mehr Aufwand verbunden eine kohärente Continuous Delivery Pipeline zu erstellen, die Cloud Services als Unikernels liefert. Diese Arbeit präsentiert eine Continuous Delivery Strategie für Cloud Services basierend auf Unikernel. Als Erstes werden Unikernels mit anderen Virtualisierungstechniken verglichen. Dabei werden Performance- und Sicherheitsfeatures, unter Zuhilfenahme von existierenden Publikationen, untersucht. Die Ergebnisse zeigen die Vorteile von Unikernels für Cloud Services und das Verlangen nach entsprechenden Tools, die den Übergang für Entwickler erleichtern, die diese leichtgewichtige und sichere Alternative nutzen möchten. Darauf folgend wird einen Continuous Delivery Pipeline, für auf Unikernels basierenden Cloud Services, ausgearbeitet. Dabei werden sowohl existierende, also auch neuentwickelte Tools verwendet. Abschließend wird die Verlässlichkeit von Unikernels im Vergleich zu Containern evaluiert, basierend auf zur Zeit zur Verfügung stehenden Tools zum deployen und betreiben von Cloud Services in Produktion.
description: Over the last decade the development, deployment, and hosting process of applications changed drastically. Ten years ago most applications where monolithic systems, i.e., running locally or on premise, developed in long release cycles over months. Today, modern applications are developed in an agile fashion, providing functionality encapsulated in small services that run in the cloud. Automation and virtualization are the key enablers for the development and deployment of such applications. Containers, e.g., Docker, offer a light weight alternative to classical virtual machines and became the standard virtualization technique for cloud-based services. Small size and fast startup times, combined with modern automation and orchestration tools, outweigh drawbacks like laxer isolation. In recent years, a third alternative to containers and classical virtual machines, called unikernels, emerged. Based on the concept of library OS, combined with modern technological features of virtualization and hypervisors, unikernels offer the advantages of both, containers and classical virtual machines, by providing advanced isolation and a lightweight implementation. While continuous delivery tools provide good support to deploy cloud services as containers, the support for unikernels is still sparse and it is not trivial to build a coherent continuous delivery pipeline for cloud services packaged as unikernels. This thesis presents a continuous delivery strategy for unikernel-based cloud services. First, a thoroughly comparison of unikernels and other virtualization techniques, mainly containers, is provided. Performance and security properties are examined, based on existing research and publications. This will show the advantages of unikernels for cloud services and the need for good tooling to ease the transition for developers, that want to take use of this lightweight and secure alternative. Second, a continuous delivery pipeline for unikernel-based cloud services is proposed and developed, by taking use of existing tools and the implementation of new ones. Finally, the feasibility of unikernels in contrast to containers is evaluated, based on the tools that are today available to reliable deploy and run cloud services in a production-like environment.