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 Kurstagen gibt es bei uns ab 8 Uhr Frühstück.
Unsere Kurse beginnen um 9 Uhr und enden um 18 Uhr.
Neben den kleinen Pausen gibt es eine Stunde Mittagspause mit leckerem, frisch in unserer Küche zubereitetem Essen.
Nach der Schulung 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.