craftingIT

bridgingIT - Blog

Übersicht Dapr

- Tobias Meier - Microsoft Individualentwicklung
Themen: Serverless, Microsoft, Microservice, Individualentwicklung
Blog Bild

Dapr bietet ein Set von Bausteinen zur vereinfachten Entwicklung und Betrieb von Microservices. Das Hauptziel von Dapr ist, dass die Komplexität von Microservices weggekapselt wird und wir Entwickler uns wieder hauptsächlich auf die Businesslogik fokussieren können. Im Gegensatz zu früher, als Microsoft komplette Frameworks erst im geheimen entwickelt und später der Community als Open Source zur Verfügung gestellt hat, verfolgt das Dapr-Team nun einen anderen Weg und veröffentlicht bereits die erste Alpha-Version und bittet die Community um Mithilfe - und die Community nimmt das Angebot an und hat in kurzen Zeit bereits zahlreiche Pullrequests gestellt, die vom Dapr-Team übernommen wurden. Zusätzlich finden monatlich Community-Calls statt, an denen jeder Interessierte teilnehmen kann. Das Dapr-Kernteam stellt einerseits neue Features vor - am 12.11.2019 Distributed Tracing und das Konzept für den Circuit Breaker - und beantwortet außerdem Fragen der Community.

Für den Betrieb einer auf Dapr beruhenden Anwendung gibt es zur Zeit zwei Varianten. Sie kann sowohl direkt über die Dapr-Runtime als auch in einem Kubernetes Cluster gestartet werden.

Kernelemente von Dapr sind:

  • Zuverlässige Kommunikation
  • Kommunikation über Publish und Subscribe zwischen Services über Azure Event Hub, Kafka u.a.
  • Unterstützung von zustandshaften Services durch einfache Möglichkeiten zur Zustandsspeicherung in Azure CosmosDB, Redis, AWS DynamoDB u.a.
  • Unterstützung von Ereignisgesteuerten Service-Architekturen
  • Actor-Laufzeitumgebung

Übersicht Architektur Dapr

Die einzelnen Bausteine von Dapr sind so geschnitten, dass sie auch einzeln verwendet werden können.

Die Kommunikation mit der Dapr erfolgt über eine API-Schnittstelle, die über HTTP und gPRC erreichbar ist. Dadurch ist Dapr programmiersprachenunabhängig und kann überall verwendetet werden, wo eine Kommunikation per HTTP und/oder gRPC möglich ist. SDKs werden lediglich für einen vereinfachten Zugriff benötigt und aktuell z.B. in C# angeboten. Zur Laufzeit wird Dapr als Sidecar zu den Container-Images der einzelnen Microservices bereitgestellt.

Dapr Sidecar Architecture

Der nächste Teil dieser kleinen Serie über Dapr stellt den Baukasten zur zuverlässigen Kommunikation vor, der u.a. Möglichkeiten für automatische Wiederholungen bei fehlgeschlagenen Remoteaufrufen bietet.