Titelaufnahme

Titel
Deployment von Erlang/OTP Releases mittels Dynamic Software Updating
Weitere Titel
Deploying Erlang/OTP Releases via Dynamic Software Updating
AutorInnenZak, Albert
GutachterGöschka, Karl Michael
Erschienen2018
Datum der AbgabeJuni 2018
SpracheEnglisch
DokumenttypBachelorarbeit
Schlagwörter (DE)Continuous Delivery / Git / Tooling / Erlang / Elixir / Automatisierung / Dynamic Software Updating
Schlagwörter (EN)Continuous Delivery / Git / Tooling / Erlang / Elixir / Automation / Dynamic Software Updating
Zugriffsbeschränkung
 _
Klassifikation
Zusammenfassung (Deutsch)

Das Deployment hochverfügbarer Erlang/OTP Systeme mittels Dynamic Software Updating (DSU) setzt einen manuellen Prozess voraus, der nicht mit Continuous Delivery zu vereinbaren ist. Bestehendes Tooling basiert auf Remote Shells und imperativer Semantik. Die vorliegende Arbeit stellt den Prototyp einer deklarativen Deployment- und DSU-Pipeline vor. Ein generischer Container kann eine beliebige Node mit minimalem Konfigurationsaufwand starten. Innerhalb dieses Containers läuft auf einem separaten Emulator ein Agent, der ohne Interaktion Artefakte aus dem zentralen Release Store lädt, installiert, und Upgrades während dem laufenden Betrieb durchführt. Indem Container hierbei als veränderliche, langlebige und versionslose Primitiven behandelt werden, kombiniert die Arbeit existierendes Container Orchestration Tooling mit den Möglichkeiten von DSU in Erlang/OTP.

Eine Analyse der Fehler in DSU-Vorgängen zeigt, dass zusätzliche Instrumentation der Laufzeit mit versionierten Messages und Patterns zusammen mit statischen Analysetools nötig wäre, bevor automatisiertes DSU gefahrlos in allgemeinen Erlang/OTP Systemen eingesetzt werden sollte.

Zusammenfassung (Englisch)

Highly available Erlang/OTP systems wishing to take advantage of Dynamic Software Updating (DSU) require a manual deployment process that is at odds with the practice of Continuous Delivery. Previous work on automating Erlang/OTP release handling produced tools with imperative push semantics over remote shells.

This thesis presents the prototype implementation and evaluation of a declarative deployment pipeline capable of DSU. A generic container primitive bootstraps a node with minimal configuration. Inside, an agent running on a separate emulator subscribes to a central release store, pulls artifacts, and installs them at runtime without user interaction. By treating containers as mutable, long-lived, and versionless, the proposed solution combines Erlang/OTP’s facilities for DSU with the ease of deploying containers using existing orchestration tools.

An evaluation of DSU failure scenarios reveals that additional runtime instrumentation providing a notion of versioned messages and patterns in combination with improved static analysis tooling would be needed before automated DSU can safely be used for general purpose Erlang/OTP systems.