Zum Inhalt

Kapitel 11 und 12
Microservice- und Serverless-Architekturen

Microservices beruhen auf dem Prinzip der unabhängigen Austauschbarkeit und losen Kopplung von Einzelkomponenten, die in autonomen Teams im Sinne des DevOps entwickelt und betrieben werden. Damit hat dieser Architekturansatz (soll er funktionieren) nicht nur eine technische sondern auch immer eine arbeitsorganisatorische und arbeitskulturelle Implikationen, die nicht außer Acht gelassen werden sollten. Unabhängig von diesen Worten der Warnung, sind Microservice Architekturen durchaus erstrebenswert. Denn man kann sehr viel beim Entwurf robuster, reaktiver und verteilter Systeme lernen.

Serverless Architekturen binden noch konsequenter als Microservice Architekturen BaaS-Dienste (Backend as a Service) von Drittanbietern ein. Benutzerdefinierter Code wird auf ein Minimum reduziert, meist auf den Logik-Tier beschränkt und auf FaaS-Plattformen (Functions as a Service) ausgeführt. Dadurch entfällt ein Großteil der Notwendigkeit für Always-on Komponenten und Serverless Architekturen können so oft von erheblich reduzierten Betriebskosten profitieren. Dies wird allerdings durch eine erhöhte Abhängigkeit von Cloud-Providern und (noch vergleichsweise unreife) BaaS-Dienste erkauft.

Slides und Screencasts

Unit Screencast (YouTube) Slides
07.1 Microservices, Vor- und Nachteile PDF, PPTX
07.2 Microservices, Randbedingungen PDF, PPTX
07.3 Integration: Shared Database + gRPC PDF, PPTX
07.4 Integration: REST + GraphQL PDF, PPTX
07.5 Integration: Event Driven Architecture PDF, PPTX
07.6 Architectural Safety, Skalierung PDF, PPTX
07.7 Microservice Design Prinzipien PDF, PPTX
08.1 Serverless Architecture PDF, PPTX
08.2 API Gateways PDF, PPTX

Labs

Inhalte Links
Lab 07 Übungen zu FaaS
  • Hello World Funktion
  • Hello World mit Dependencies (Packages)
  • HTTP(s) basierter Trigger
  • Covid-19 Daten auswerten (Ein Nanoservice auf Basis von Our-World-In-Data)
  • Eine CRON-basierte Weltraumüberwachung (ISS Astronauten und Positionen)
  • Realisierung mit Google Cloud Functions
Git
Lab 08 Übungen zu REST
  • Bau eines einfachen REST-basierten Web-Services
  • Integration einer Datenbank
  • Prinzipien eines guten API-Designs
  • Anwendung auf eine Beispiel API, die Buchmetadaten aus einer Datenbank bezieht
Git
Lab 08 - LLM Übungen zu Large Language Models
  • Integration von LLMs mittels REST-basierter APIs
  • LangChain API
  • LangServe
  • LLM-Komposition mittels der LangChain Expression Language (LCEL)
Git
Lab 09 Übungen zu gRPC

  • Einführung in die Arbeit mit gRPC (auf Basis von Python)
  • Definieren eines Dienstes in einer .proto-Datei
  • Generieren von Server- und Client-Code mit Hilfe des Protokollpuffer-Compilers
  • Nutzen der Python gRPC-API für ein einfaches Client-Server-Setting
  • Performance-Vergleich zwischen gRPC und HTTP
Git
Lab 10 Übungen zum Messaging
Messaging-Pattern am Beispiel von REDIS
  • Pub/Sub Messaging (Fan Out)
  • Persistentes Pub/Sub Messaging
  • Event Sourcing
  • Queueing
Git

gRPC-/REST-Bibliotheken für Python

Die Aufstellung ist alphabetisch und ohne Anspruch auf Vollständigkeit.

Produkt Lizenz Anmerkungen
APIStar BSD-3 Toolkit zur Erzeugung von REST-API Dokumentationen (OpenAPI, Swagger)
Connexion Apache 2.0 OpenAPI Generator
FastAPI MIT Asynchrones Web-Framework
Flask BSD-3 Web-Framework
Flask Restful BSD-3 REST-Ergänzung zu Flask
grpcio Apache 2.0 Python gRPC-Bibliothek, Getting started
Quart MIT Asynchrones Web-Framework
Sanic MIT Asynchrones Web-Framework
OpenAPI Generator Apache 2.0 OpenAPI Generator

Anmerkungen sowie Ergänzungsvorschläge werden gerne über folgenden Kanal angenommen und berücksichtigt.

Open-Source Messaging-Systeme

Die Aufstellung ist alphabetisch und ohne Anspruch auf Vollständigkeit.

Produkt Organisation Lizenz Anmerkungen
ActiveMQ Apache Apache 2.0
Kafka Apache Apache 2.0
KubeMQ KubeMQ Kommerziell Kubernetes-basiert
NATS NATS Apache 2.0
Pulsar Apache Apache 2.0
RabbitMQ VMware MPL 2. 0 / Apache 2.0
REDIS Streams Redis BSD-3
ZeroMQ ZeroMQ Revised BSD

Anmerkungen sowie Ergänzungsvorschläge werden gerne über folgenden Kanal angenommen und berücksichtigt.

ReactiveX Programmiermodell

Das ReactiveX Programmiermodell steht u.a. in konzeptionellen Zusammenhang mit dem Reaktiven Manifest und wird von vielen Programmiersprachen unterstützt. Die Aufstellung ist alphabetisch und ohne Anspruch auf Vollständigkeit.

Produkt Sprache Lizenz Anmerkungen
ReactiveX CC-BY-3.0 - Konzeptionelles "Dach" aller Sprachbindungen
RxDart Dart Apache 2.0
RxGo Go MIT
RxJava Java Apache 2.0
RxJS JavaScript Apache 2.0
RxKotlin Kotlin Apache 2.0
RxNET C# MIT Auch für Unity (UniRX)
RxPHP PHP MIT
RxPY Python MIT
Rx.rb Ruby Apache 2.0 auch für JRuby (RxJRuby)
RxScala Scala Apache 2.0
RxSwift Swift MIT
...

Anmerkungen sowie Ergänzungsvorschläge werden gerne über folgenden Kanal angenommen und berücksichtigt.

Distributed Computing Runtime Environments (DCRE)

Die Aufstellung ist alphabetisch und ohne Anspruch auf Vollständigkeit.

Produkt Organisation Lizenz Anmerkungen
Akka Lightbend Apache 2.0 Java/Scala
Dapr Dapr MIT Polyglott (.NET, Python, Java, Go, PHP, C++, Rust, Javascript)
Ray Ray Apache 2.0 Machine Learning Fokus, Python only

Anmerkungen sowie Ergänzungsvorschläge werden gerne über folgenden Kanal angenommen und berücksichtigt.

Open-Source API-Gateways

Die Aufstellung ist alphabetisch und ohne Anspruch auf Vollständigkeit. Die Konformität mit demKubernetes Gateway API ist explizit angegeben.

Produkt Lizenz Anmerkungen
APIMAN Apache 2.0
Contour Apache 2.0 Linux Foundation, Kubernetes Gateway API konform
Emissary Ingress Apache 2.0 Kubernetes Gateway API konform
Fusio AGPL-3.0
Gravitee.io Apache 2.0
Gloo Edge Apache 2.0 solo.io, Kubernetes Gateway API konform
HAProxy Ingress Apache 2.0 Kubernetes Gateway API konform
Kong Apache 2.0 Kubernetes Gateway API konform
KrakenD Apache 2.0
Traefik MIT Kubernetes Gateway API konform
Tyk Mozilla 2.0

Anmerkungen sowie Ergänzungsvorschläge werden gerne über folgenden Kanal angenommen und berücksichtigt.