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
|
Git |
Lab 08 | Übungen zu REST
|
Git |
Lab 08 - LLM | Übungen zu Large Language Models
|
Git |
Lab 09 | Übungen zu gRPC
|
Git |
Lab 10 | Übungen zum Messaging Messaging-Pattern am Beispiel von REDIS
|
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.