Christian Weyer Thinktecture AG

„Die Plattform- und Sprachvielfalt ist in einer Microservices-Welt nicht zu unterschätzen. Denn wie wir sehen, ist die freie Wahl der zur Problemstellung passenden Technologien ein möglicher Erfolgsfaktor.“

Warum muss es „Serverless oder Microservices“ sein? Es sollte vielmehr „Microservices mit Serverless“ heißen! Basierend auf einigen der allgemein anerkannten Prinzipien von Microservices können wir serverlose Architekturen und Technologien verwenden, um hochfokussierte Microservices zu bauen. Schauen wir uns gemeinsam überblicksmäßig einen pragmatischen Ansatz zum Erstellen von Microservices mit Azure Functions, Azure Service Bus, Azure Storage und weiteren Diensten und Tools an. Und das gilt für fast alle Softwareentwickler: Java, .NET, Node.js und sogar Python.

Microservices sind seit einigen Jahren in aller Munde und es wird heftig über deren Vorzüge aber auch über die damit verbundenen Nachteile diskutiert. Wenn man sich für einen Microservices-Ansatz entscheidet, stellt sich relativ schnell die Frage nach dem technologischen Lösungsstapel. Mit Serverless und Functions as a Service existiert seit relativ kurzer Zeit ein alternativer Weg für die Realisierung.

Microservices – aber pragmatisch

Ohne hier eine komplette Abhandlung über Microservices zelebrieren zu wollen –einige der zentralen Prinzipien für erfolgreiche Microservices-Architekturen möchte ich gerne thematisieren, um dann die Überleitung in die Serverless-Welt daran festmachen zu können. Die vier mir wichtigsten aus Architektursicht sind:

  • Single Responsibility: Ein Microservice macht eine (Business-)Sache, und die macht er richtig. Es ist in der Tat eine hohe Kunst, Microservices richtig zu schneiden und das Gleichgewicht aus Zuständigkiet und Komplexität zu finden.
  • Isolation: Ein Microservice ist isoliert von anderen Services. Das bedingt eine physikalische Trennung und die Möglichkeit, mit dem Microservice über wohl definierte und technologieunabhängige Schnittstellen kommunizieren zu können. Zudem ist es manchmal sinnvoll, eine spezielle Technologie im Innenleben eines Microservices zu nutzen, um Use Cases optimal umsetzen zu können – die Wahl der Technologien pro Microservice sollte über Isolation gewährleistet sein.
  • Autonomie: Die Königsdisziplin bei der Gestaltung von Microservices-Architekturen – jeder Service hat seine eigene Datenhaltung und teilt sich keine Datenbank o. Ä. mit anderen Diensten. Dieses Prinzip konsequent umzusetzen, bedeutet eine weitgehende Entkopplung der Services – die allerdings einen Preis mit sich bringt.
  • Entkopplung: Um Services auf der Prozess- und Kommunikationsebene von einander zu entkoppeln und die Gesamtarchitektur dafür weniger fehlerfällig gestalten zu können, bietet sich der Einsatz asynchroner Kommunikationsmuster z. B. über Message-Queues an.

Vermutlich ist es für Sie als Leser am einfachsten, die Microservices-Prinzipien in einer Serverless-Welt anhand eines kleinen Beispiels vor Augen geführt zu bekommen. Dann schauen wir uns doch mal eins an. Die Beispielanwendung ist auch mit komplette, Sourcecode in einem GitHub Repository zugänglich.

Den vollständigen Artikel lesen Sie in der Ausgabe:

Entwickler Magazin Spezial Vol. 21: Serverless - "Serverless"

Alle Infos zum Heft
579903844Serverless Microservices am Beispiel Azure
X
- Gib Deinen Standort ein -
- or -