Apache OpenWhisk

Serverless Computing mit Apache OpenWhisk

Anwendungsentwickler stehen heute vor vielfältigen Herausforderungen. Der Wunsch nach skalierbaren, hoch verfügbaren und kosteneffizienten Anwendungen mit kurzen Entwicklungszeiten wird häufig begleitet von einer wachsenden Technologievielfalt, und neuen Aufgaben, wie dem Betrieb von entwickelten Anwendungen. Um diese vielfältigen Herausforderungen zu meistern, ist in den letzten Jahren mit Serverless Computing oder Function-as-a-Service (FaaS) ein neues Programmiermodell mit stark wachsender Verbreitung entstanden.

Für Entwickler von Serverless-Anwendungen stehen “Functions” im Zentrum die in sogenannten “FaaS Plattformen” ausgeführt werden. Functions sind leichtgewichtige Software-Dienste, die in nahezu beliebigen Programmiersprachen mit sehr geringem Overhead implementiert und komponiert werden können. Somit gibt Serverless Computing attraktive Versprechen. Entwickler können sich auf anwendungsspezifische Logik fokussieren. FaaS Plattformen abstrahieren und automatisieren vielfältige Betriebsaufgaben, wie beispielsweise Deployment, Load Balancing, und Kapazitätsplanung. Eintrittsbarrieren für die Anwendungsentwicklung werden gesenkt, wodurch Rollen wie beispielsweise Frontend-Entwickler oder Analysten befähigt werden, bei Bedarf eigene Funktionalitäten kurzfristig umzusetzen. Indem FaaS Plattformen Ressourcen nur bei der Ausführung bereitstellen, steigt die Kosteneffizienz von Anwendungen mit variablen Lasten.

Um die Wertversprechen von Serverless Computing zu erfüllen, vermittelt dieser Kurs alle wichtigen Grundlagen auf der Basis der etablierten Open-Source FaaS Plattform Apache OpenWhisk. Zusätzlich erarbeiten wir ganz praktisch unterschiedliche Anwendungsfälle aus der Industrie, um eigene Anforderungen umzusetzen und eine relevante Einschätzung der Potentiale und Grenzen von OpenWhisk und Serverless Computing zu erhalten.

Trainer und Dozenten

Jörn Kuhlenkamp ist technischer Leiter und Mitbegründer der PDT. Zuvor war er als leitender wissenschaftlicher Mitarbeiter an der TU Berlin und am Karlsruher Instituts für Technologie (KIT) tätig. Zudem arbeiteter er als assoziierter Wissenschaftler am IBM Thomas J. Watson Research Center in Yorktown Heights, New York. Herr Kuhlenkamp hat ein Diplom und einen Master in Information Engineering and Management vom KIT.

Voraussetzungen

Wir nutzen in der Schulung einfache Beispiele auf Basis von Python und/oder JavaScript. Einfache Beispiele bedeutet, dass Sie Programme in Python oder JavaScript schreiben können, die Variablen, einfache Datentypen (Zahl, String, ...) und Listen mit Hilfe von Kontrollstrukturen (Bedingte Anweisungen, Schleifen, Iteratoren) enthalten, so wie sie es in unserem Kurs Programmieren lernen erlernen können. Wenn Sie in eine anderen modernen, C-ähnlichen Sprache (Java, Ruby, Go, Rust, Perl, ...) programmieren können, dann reicht das unserer Erfahrung nach. Im Zweifel beraten wir Sie gerne telefonisch.

Des weiteren sollten Sie Linux auf der Kommandozeile bedienen können, so wie sie es in unserem Kurs Linux Grundlagen lernen können.

Des Weiteren sind Kenntnisse von Docker und Kubernetes hilfreich, jedoch nicht erforderlich.

Inhalt

Der Inhalt des Kurses umfasst zum einen die Grundlagen des Serverless Computings, praktische Beispiele für den OpenWhisk Anwendungsentwickler sowie Inhalte zum Betrieb von OpenWhisk im eigenen Cluster.

Serverless Computing Grundlagen

Wir legen die Grundlagen für Serverless Computing indem wir das Programmier- und Ausführungsmodell vorstellen. Beim Programmiermodell gehen wir auf alle relevanten Konzepte wie beispielsweise Functions, Triggers, und Events ein. Das Ausführungsmodell von OpenWhisk umfasst beispielsweise Gateway, Queues, Containers, und Load Balancer. Neben unterschiedlichen Anwendungsfällen für Serverless Computing, zeigen wir das Spektrum an unterschiedlichen FaaS Plattformen.

OpenWhisk für Anwendungsentwickler

In diesem Teil zeigen wir, wie Anwedungsentwicklers mit den unterschiedlichen Komponeten von OpenWhisk iteragieren. Wir stellen unterschiedliche Werkzeuge, wie wsk-Tool, Open wskdebug-Tool und IDE Plugins, und Entwicklungsumgebungen, wie das “Serverless Framework”, vor. Anhand des Beispiels einer Web Anwendung zeigen wir, wie man praktisch typische Funktionalitäten wie beispielsweise Actions, Triggers, Messaging, Storage, Databases, und Authentification umsetzt. Zusätzlich zeigen wir, wie man unterschiedlichen Aufgaben im Lebenszyklus einer Anwendung in OpenWhisk abbildet. Darunter fallen beispielsweise: Logging, Testing, Debugging, Monitoring, Tracing, und Deployment.

Schließlich kondensieren wir die langjährigen Erfahrungen der Dozenten, indem wir uns ansehen, welche Fallstricke bei der Umsetzung von Serverless Anwendungen exisiteren und wie diese zu erkennen und vermeiden sind. Beispiele umfassen Cold-Starts und Deployment-Consistency.

OpenWhisk für Plattformbetreiber

In diesem Teil betrachten wir OpenWhisk aus der Sicht eines Plattformbetreibers. Wir diskutieren Vor- und Nachteile von unterschiedliche Deployment-Optionen und zeigen wie man auf Cluster-ebene unterschiedliche Aufgaben, wie Monitoring, Scaling, und Access-Management umsetzt.

Putting it all Together: Das große Anwendungsbeispiel

Im letzten Teil des Kurses bringen wir nochmals das Gelernte in einem größeren Anwendungsbeispiel aus der Praxis zusammen: “Qualitätssicherung in der Produktion”.Dafür setzen wir Teile einer Serverless Anwendung um, die mit Hilfe von Computer Vision auf der Basis von Machine Learning in der industriellen Fertigung produzierte Teile prüft.

Kurszeiten

Wer möchte, reist bis 22 Uhr am Vortag an und nutzt den Abend bereits zum Fachsimpeln am Kamin oder im Park.

An den Kurstagen dann von 9-18 Uhr (mit 2 Kaffee- und 1 Mittagspause) etwa 60% Schulungen und 40% Übungen. Selbstverständlich arbeitet jeder Teilnehmer am von uns gestellten Notebook oft parallel zum Referenten mit.

Anschließend Abendessen und Angebote für Fachsimpeln, Ausflüge uvm. Wir schaffen eine Atmosphäre, in der Fachleute sich ungezwungen austauschen. Wer das nicht will, wird zu nichts gezwungen und findet auch jederzeit Ruhe.