Niko Köbler
Serverless Computing in der AWS Cloud

ISBN: 978-3-86802-364-0
© 2017 entwickler.press
Ein Imprint der Software & Support Media GmbH

Bibliografische Information Der Deutschen Bibliothek
Die Deutsche Bibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.ddb.de abrufbar.

Ihr Kontakt zum Verlag und Lektorat:
Software & Support Media GmbH
entwickler.press
Schwedlerstraße 8
60314 Frankfurt am Main
Tel.: +49 (0)69 630089-0
Fax: +49 (0)69 630089-89
lektorat@entwickler-press.de
http://www.entwickler-press.de

Lektorat/Korrektorat: Björn Bohn, Martina Raschke
Copy-Editor: Nicole Bechtel
Satz: Sibel Sarli
Umschlaggestaltung: Maria Rudi
ePUB: Elisabeth Bernard
Titelbild: © Sushaaa | shutterstock.com, Stockfoto-ID: 140387227

Belichtung, Druck und Bindung: Media-Print Informationstechnologie GmbH, Paderborn

Alle Rechte, auch für Übersetzungen, sind vorbehalten. Reproduktion jeglicher Art (Fotokopie, Nachdruck, Mikrofilm, Erfassung auf elektronischen Datenträgern oder anderen Verfahren) nur mit schriftlicher Genehmigung des Verlags. Jegliche Haftung für die Richtigkeit des gesamten Werks kann, trotz sorgfältiger Prüfung durch Autor und Verlag, nicht übernommen werden. Die im Buch genannten Produkte, Warenzeichen und Firmennamen sind in der Regel durch deren Inhaber geschützt.

Für meine drei Sternchen.

Vorwort

Irgendwann in 2015 suchte ich nach der Möglichkeit, eine virtuelle AWS-EC2-Serverinstanz automatisch einmal am Tag zu starten, Code auszuführen und sie dann wieder schlafen zu legen. Mehr als dieses eine Mal am Tag brauchte ich den Server nicht, also wollte ich auch nicht für 24 Stunden Laufzeit zahlen, wenn ich nur 5 Sekunden Rechenzeit pro Tag in Anspruch nehme. Diese Option gab bzw. gibt es für EC2-Instanzen jedoch nicht.

Den Service AWS Lambda kannte ich bis dato noch nicht. Erst ein damaliger Projektkollege hat mich darauf aufmerksam gemacht. Dieser Service hatte eigentlich alles, was ich brauchte: Code schreiben, hochladen, ausführen. Fertig. Und nur das bezahlen, was man wirklich nutzt. Ein echtes pay-per-use also, kein pay-per-hour für ungenutzte Ressourcen. Ich war begeistert. Dass Serverless Computing mehr ist als nur das Ausführen von Funktionscode, was mittlerweile allgemein als Function-as-a-Service (FaaS) bezeichnet wird, wurde mir schnell klar und meine Begeisterung wuchs immer mehr für diese neue Technologie. Irgendwann war dann die Idee zu diesem Buch geboren.

Der neue heilige Gral?

Serverless ist nicht der neue „Heilige Gral“, keine Wunderwaffe und auch keine „Silver Bullet“ für alle Herausforderungen und Aufgaben. Vielleicht ist Serverless auch ein sehr eingefärbter Technologieansatz. Es ist aber auf jeden Fall ein sehr nützliches und mächtiges Werkzeug, welches ein Softwareentwickler von heute und morgen kennen und in seinem Portfolio haben sollte. Von kleinen Hilfsaufgaben über Prototyping bis hin zu kompletten Anwendungen kann eigentlich alles damit realisiert werden – wenn man denn möchte. Speziell im Umfeld von Microservices, DevOps und automatisierten Deployment Pipelines spielt Serverless sein ganzes Können aus. Ich habe übrigens bewusst verzichtet, in meinem Buch tiefer auf die Definition von Microservices, oder auch Nanoservices, wie einige im Serverless-Umfeld sagen, einzugehen. Hierfür gibt es bereits ausreichend gute Literatur.

Darum AWS

Obwohl es mittlerweile eine ganze Reihe von Cloud-Anbietern für Serverless Computing gibt, habe ich mich ganz bewusst auf Amazon Web Services (AWS) konzentriert. Zum einen, da AWS mit dem Lambda-Service der Vorreiter seit 2014 für diese Technologie ist. Zum anderen, da mein Cloud-Background ebenfalls in der AWS Cloud beheimatet ist und ich von AWS begeistert bin. Andere Clouds habe ich nie so leicht und ausführlich nutzen können.

Die Nutzung von Cloud-Diensten ist meist mit Kosten verbunden. Amazon bietet für Neukunden im ersten Jahr ein sogenanntes Free-Tier, welches in vielen Services eine kostenlose Nutzung von Ressourcen beinhaltet. Mehr dazu unter https://aws.amazon.com/free. Für einige Dienste, darunter auch AWS Lambda und Amazon DynamoDB, gibt es sogar dauerhaft monatliche Freikontingente. Auf genauere Kosten versuche ich jedoch bewusst nicht einzugehen, da diese sich sehr häufig ändern und relative Begriffe wie „teuer“ und „günstig“ von jedem Cloud-Nutzer ganz unterschiedlich wahrgenommen werden. Auch kann ich keine Haftung für eventuell anfallende Kosten übernehmen, die durch das Anwenden und Ausprobieren der in diesem Buch beschriebenen Anwendungsfälle und Beispiele entstehen können.

Für wen ist dieses Buch

Eine einzelne Zielgruppe für dieses Buch zu definieren, ist schwer. Ich habe versucht, einen guten Kompromiss hinsichtlich des vorauszusetzenden Vorwissens zu finden. So werden die Leser, die sich bereits mit einigen Cloud-Technologien und -Services auskennen, sicherlich viele Begriffe bereits kennen, die ich erkläre. Gleichfalls werden andere Leser mit weniger Vorkenntnissen vielleicht die eine oder andere Begriffserklärung vermissen. Das ist keine böse Absicht; den richtigen Mittelweg zu finden, in Zeiten, in denen viele Fachbegriffe im Umlauf sind, diese aber teilweise mit unterschiedlicher Bedeutung oder Auslegung, je nach Kontext, ist eine Herausforderung.

Ebenso ist dieses Buch weder „nur für Entwickler“, noch „nur für Architekten“ oder sonst eine einzelne Gruppe geschrieben. Serverless bedingt die ausnahmslose Zusammenarbeit aller beteiligten Personen von Anfang an – eben richtiges DevOps. Deshalb findet man in diesem Buch neben Beispielcode auch Erläuterungen von servicespezifischen APIs, die für das Management und das Deployment von Anwendungen und Diensten nützlich sind. Metriken zur Überwachung von serverlosen Anwendungen kommen auch nicht zu kurz.

Letztendlich sollte aber jeder Leser mit der Lektüre dieses Buchs ein besseres Verständnis des Begriffs Serverless und einen guten Über- und Einblick in die wichtigsten serverlosen Services in der AWS Cloud bekommen.

Website zum Buch

Begleitend zu diesem Buch gibt es die Website http://serverlessbuch.de, auf der ich die wichtigsten Links aus dem Buch noch einmal aufgeführt habe und auch ein Errata führen werde. Auch ein Twitter-Account gibt es für dieses Buch, es ist unter dem Handle @serverlessbuch unter dem URL https://twitter.com/serverlessbuch zu finden. Die im Buch verwendeten Codebeispiele und Beispiel-Apps sind alle im GitHub-Buch-Repository unter https://github.com/serverlessbuch zu finden. Die verwendeten Programmiersprachen beschränken sich hauptsächlich auf Java mit ein paar JavaScript-Funktionen, was auch meinem Programmiersprachen-Background entspricht.

Danke

Wie so oft schreibt sich solch ein Buch nicht von alleine. Deshalb möchte ich an erster Stelle ganz besonders meiner Frau Catharina für ihre uneingeschränkte Unterstützung und die liebevolle Versorgung mit ausreichend Espresso, Wasser und Süßigkeiten danken. Die Kilos gehen auch wieder runter! Natürlich geht nichts ohne einen Verlag und die Unterstützung durch das Lektorat. Aus diesem Grund sei auch meiner Lektorin Martina Raschke aus dem entwickler.press-Verlag herzlich gedankt für die stets schnelle Beantwortung meiner vielen Fragen rund um den Schreibprozess. Für die vielen Reviews, Kommentare, Anregungen und Korrekturen während des Schreibens dieses Buches danke ich meinen Freunden und Kollegen Eberhard Wolff (@ewolff), Michael Simons (@rotnroll666), Jörn Hameister (@hameiste), Dr. Frank Munz (@frankmunz) und Michael Buchholz.

1 Serverless Computing