Serverless Weniger ist mehr, der Weg zur moderneren Architektur? Code-Days 2019 | Max Körbächer

Hey! Max Körbächer Senior Cloud Solution Architect @ Storm Reply ● Design and build cloud ready solutions ○ microservice & event driven apps ○ serverless & kubernetes based ○ ♥ for , GraphQL & NoSQL ● Background as Enterprise Architect & Founder ● Visit me at: max.koerbaecher.io

Was ist Serverless? Was oft unter Serverless allgemein verstanden wird … … ist in der Regel falsch. Quelle: pixabay.com

Serverless architectures are application designs that incorporate third-party “Backend as a Service” (BaaS) services, and/or that include custom code run in managed, ephemeral containers on a “Functions as a Service” (FaaS) platform. - Mike Roberts

FaaS != Serverless FaaS im Allgemeinen kann als die Bereitstellung einer Plattform für die Ausführung von Code verstanden werden. Serverless hingegen ist ein Architekturansatz, der mehrere Komponenten der XaaS Familie verwendet.

XaaS Familie Serverless nutzt bzw. orchestriert XaaS

FaaS != Serverless II

Was verspricht Serverless zu sein? Kosteneffizient, hochskalierbar & geringe Wartung ● ● ● ● ● Die Kosten einer serverlosen Anwendung basieren auf der Anzahl der Funktionsausführungen Kleinere Entwicklungskomponenten führen zu einer schnelleren Bereitstellung von Funktionen und erhöhen die Anpassungsfähigkeit Die Kosten für den Betrieb sinken, im Grunde keine Systemadministration notwendig Hochskalierbar, quasi grenzenlos Fördert Innovation, Microservices und SOA Prinzipien “No server is easier to manage than no server”

Die Kehrseite von Serverless ● ● ● ● ● Risiko bzgl. Sicherheit, Disaster Recovery, Vendor Lock-in Technologische Fragmentierung ○ Wirklich schlimm? Komplexität der Architektur steigt exponentiell an Zeitlich begrenzte Rechenzeit Testing, local state und multi tenancy ist eine Herausforderung

FaaS Universum https://landscape.cncf.io/images/serverless.png

Serverless Prinzipien Verw e nd i u rg k u s ar u nb Sb one .gur d o Kr clou a - Sc Fu zus hre nk tan ibe t ein ione dslo s em n, d e er Zw ie n fü lle eck ur n ickle Entw eiche angr umf tends Fron nde Com Serv pute ices nach Beda rf Nutze Services von Drittanbietern h us nt p e ve ign e, E e s De iert ben n s ie ba etr nge g su Lö

Organisatorische Voraussetzungen für Serverless r e et re n i b n ie fle xi bi lis Vo exi rte ble ile ko in st Cl en ou sin d d Um ei n ge er bu de ng r g en rö ßt en te n Fl Ko s 1 2 e el vi on o v t s oft i e , hk h ic glic l ög ö M em h i ac s w n e t tz vic nu Ser ss le nde ern r e t rv ehe ie 3 Se est anb b ritt D a itt r e V n e u rt a in Dr n e h te n, te r o tw t n a n r rt Eve seh o f . so pw och s s le b r n al ss me s a us n, d im e m e er eh em m es yst im bg S ht n a ne d c i N avo iebe l sin d etr el g chn s s Ge h c s er v t äf

Mit Serverless zur “moderneren” Architektur?

Wo können wir Serverless einsetzen? ● ● ● ● ● Web Applikationen - statisch, komplexe Apps Backend - Mobile, IoT oder klassische Anwendungsbackend Chatbots & Sprachassistenten Datenverarbeitung - Batchprozesse & Echtzeitdatenverarbeitung ○ ETL Jobs sind am kommen System- & Infrastruktur Management

Beispiel: API Proxy & Datenmanipulation Im Grunde eine Fassade

Beispiel: Serverless Applikation Frontend BI/DWH Auth Metriken/Logs Logik Echtzeitdaten

Design Anti-/Pattern Anti-Pattern Ein einzige große Funktion Pattern Mehrere orchestrierte Funktionen Quelle: aws.com

Design Prinzipien Speicher den Zustand (state) in einen persistenten Storage Orchestriere die Funktionen mit Statemachines Verwende Event-Getriebene Designs Designe für Fehler und Duplikate Nutze das Saga Pattern Verwende API Gateways

Cloud Umgebungen sind das perfekte Umfeld für Serverless

Security ja, auch bei Serverless ● ● ● ● OWASP gilt auch hier bspw. Input Validation Eine Funktion = eine Nutzerrolle Speichern und Verschlüsseln sie Passwörter und Zertifikate mittels Key & Secret Management Tools Verwendung von WAFs und SIEMs

Erreichen wir eine modernere Architektur mit Serverless?

Take Aways 01 Weniger ist mehr! ● ● Reduziere das Package size! Frameworks nur wenn es sein muss 02 Benutze ENVs ● Passe deine Funktionen durch ENVs an 03 Die richtige Sprache ● ● Interpretierte Sprachen sind schneller initialisiert ABER nicht unbedingt schneller insgesamt 04 Lagere deine Abhängigkeiten aus ● bspw. .jar in /lib Ordner 05 Mehr Speicher, ist mehr CPU, ist mehr Bandbreite ● Ist die Funktion Speicher/CPU/Netzwerk lastig?

Grüße aus der Zukunft Lambda@Edge ● ● Funktionen werden via CDN näher am Kunden ausgeführt Dynamische Anpassung von Webinhalten, Auth, Security etc. AWS Greengrass - Lambdas auf IoT Devices ● ● ● Funktionen können wie gewohnt entwickelt werden Werden auf IoT Devices installiert Bspw. Implementierung trainierte Algorithmen (ML) “direkt an der Maschine”

Entwickeln und Bereitstellen

SAM AWS Serverless Application Model ● ● ● ● CLI Tool für das lokale Entwicklung und Testen Aufrufen von AWS Services bspw. S3, DynamoDB Lokales API Gateway mit Hot Reload Boilerplate Templates Transform: ‘AWS::Serverless-2016-10-31’ Resources: ThumbnailFunction: Type: ‘AWS::Serverless::Function’ Properties: Runtime: nodejs6.10 Handler: index.handler CodeUri: ./src Events: ThumbnailApi: Type: Api Properties: Path: /thumbnail Method: GET

Weitere Tools Serverless Framework Zeit.co APEX.run Weitverbreitetes Framework für Serverless Entwicklung Open Source & Enterprise Cloud Agnostisch Kostenlos mit Limitierung & Enterprise Bietet Services wie Tests auf der Zeit Infrastruktur Open Source Breite Community

Danke! Wenn du mehr über Storm Reply erfahren willst: https://www.reply.com/ storm-reply