Gone Fission

Fission: Das Framework für Serverless-Funktionen in Kubernetes

Dominik Mohilo

©Shutterstock.com / sakkmesterke

Mit Fission haben die Entwickler von Platform9 ein Framework für Function as a Service (FaaS) bzw. Serverless-Funktionen in Kubernetes erstellt. Das Open-Source-Projekt befindet sich derzeit noch in der Alpha-Phase, bietet allerdings jetzt schon interessante Funktionen. Wir haben einen Blick auf das Tooling geworfen.

Das Open-Source-Framework Fission bietet die Möglichkeit, Serverless-Funktionen in Kubernetes auszuführen. Diese „short-lived“ (also kurzlebigen) Funktionen können in jeder Sprache geschrieben sein und als Event-Trigger oder HTTP-Requests gemapt werden. Mit nur einem einzigen Befehl lassen sich diese Funktionen unmittelbar ausführen, das Erstellen von Containern und die Verwaltung von Docker-Registries ist nicht nötig.

Features

Neben der Tatsache, dass Fission für jede Programmiersprache fit gemacht werden kann, wurde von den Entwicklern besonders die Geschwindigkeit im Auge behalten. Wird eine Funktion zum ersten Mal aufgerufen, beträgt die Cold-Start-Latenz lediglich 100 Millisekunden. Dies wird durch einen Pool aus „warmen“ Containern ermöglicht, die jeweils einen kleinen dynamischen Loader beinhalten und von dem Framework bereitgestellt werden.

Durch Fission lassen sich zum Beispiel API-Backends für Mobile- und Web-Apps erstellen – und das ohne den Umstand, Server verwalten zu müssen. Durch Kubernetes ist eine Interoperabilität mit anderen Services, etwa memcached, Redis oder Postgres, gewährleistet. Auch sogenannte „Webhooks“ lassen sich implementieren, wie sie etwa von Slack oder GitHub zur Verfügung gestellt werden.

API-Backends erstellen / Quelle: Fission.io

API-Backends erstellen / Quelle: Fission.io

Die Technik von Fission

Eine function ist ein kleiner Codeblock, der dem Funktionsinterface von Fission folgt. Ein environment beinhaltet die Sprach- und Laufzeit-spezifischen Teile, die zum Betreiben einer function notwendig sind. Unter dem Strich ist eine environment nur ein Container mit einem Webserver und einem dynamischen Loader. Ein Trigger ist schließlich etwas, das einen Event zur function mapt.

Von Haus aus hat Fission derzeit environments für NodeJS und Python, allerdings ist das Framework erweiterbar. So lassen sich die bestehenden environments problemlos mit neuen Features anreichern oder komplett neue hinzufügen. Als trigger werden HTTP-Routen in der derzeitigen Fassung von Fission unterstützt; zukünftig soll das Framework um die Unterstützung von Timern und Kubernetes-Events erweitert werden.

Wie das Ganze aussieht, zeigt dieses Beispiel, das auf der GitHub-Seite des Projektes veröffentlicht wurde:

# Add the stock NodeJS env to your Fission deployment
  $ fission env create --name nodejs --image fission/node-env

  # A javascript one-liner that prints "hello world"
  $ echo 'module.exports = function(context, callback) { callback(200, "Hello, world!\n"); }' > hello.js  

  # Upload your function code to fission
  $ fission function create --name hello --env nodejs --code hello.js

  # Map GET /hello to your new function
  $ fission route create --method GET --url /hello --function hello

  # Run the function.  This takes about 100msec the first time.
  $ curl http://$FISSION_ROUTER/hello
  Hello, world!

Das Framework steht unter der Apache-Lizenz und kann auf jedem Kubernetes-Cluster verwendet werden, sei er in einer öffentlichen Cloud, einem privaten Datenzentrum oder auf dem eigenen Laptop. Weitere Informationen zu Fission gibt es auf der Homepage des Frameworks und auf GitHub.

Geschrieben von
Dominik Mohilo
Dominik Mohilo
Dominik Mohilo studierte Germanistik und Soziologie an der Goethe-Universität in Frankfurt. Seit 2015 ist er Redakteur bei S&S-Media.
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.