Sonntag , 19 Mai 2019

Azure Service Fabric: PaaS auf Microservice-Basis

Azure Service Fabric (Preview)Nachdem Mark Russinovich bereits vor einigen Tagen die neuen Azure Service Fabric Preview angekündigt hatte, war es heute soweit. Im Rahmen der //build/ Konferenz wurde dieser Preview-Dienst für die Öffentlichkeit freigegeben. Diese neue PaaS soll Entwicklern dabei helfen, schneller und unkomplizierter Anwendungen für die Cloud zu konstruieren.

Ist Azure Service Fabric komplett neu?

Die Service Fabric-Plattform wird bereits seit über 5 Jahren bei Microsoft intern eingesetzt und stellt dabei die Basis für einige Microsoft Produkte, wie beispielsweise Azure SQL Database, Azure DocumentDB, Azure Networking, Event Hubs, Intune, Skype for Business (ehemals Lync) und Bing Cortana.

Ein Blick in die Vergangenheit

Bislang hatte man 3 Optionen, als Basis für Anwendungen in Microsoft Azure:

  • Azure App Services (Web Apps, Logic Apps, Mobile Apps und API Apps)
  • Cloud Services
  • Virtual Machines

Somit schwankte man in der Regel zwischen einem automatisierten Model zum Ausrollen und Betreiben von Applikationen, wie man es mit den Azure App Services hat, oder der vollen Kontrolle wie man es bei den Virtual Machines vorfindet.

Meiner Meinung nach, wird immer noch zu häufig zu den Virtual Machines (IaaS) gegriffen, da man es in der Vergangenheit so gewohnt war.
Für die eigenen Anwendungen, ist ein so hohes Maß an Kontrolle meist gar nicht nötig, und man macht sich mit dem dadurch entstehenden Manuellen Aufwand nur unnötig das Leben schwer.

Bei den Cloud Services, hatte man eine gute Kombination aus beiden Welten.
Man hatte ein einfaches Programmiermodell, und die Azure-Plattform nahm einem Vieles ab, und trotzdem konnte man durch ein hohes Maß an Kontrolle die VMs nach seinen Wünschen anpassen.

Das Ganze hatte natürlich auch einige Nachteile…

Cloud Service ArchitekturSchnell war man bei einem Cloud Services bei einer recht komplexen Architektur angelangt.
Diese bestand meist aus Web- und Worker Roles, Queues für die asynchrone Kommunikation zwischen den Rollen, sowie Speicherdiensten, wie  beispielsweise Azure SQL Database oder Azure Storage, da die erzeugten VMs keine eigenen dauerhaften Speichermöglichkeiten boten.
Schnell kam auch ein In-Memory-Cache für die Datenbanken hinzu.

Hinzu kam noch, dass das Ausrollen und Testen eines Cloud Services immer ein wenig Zeit in Anspruch nahm, da aus den Rollen auch erst mal VMs erzeugt werden mussten.

Applikationen auf Microservice-Basis

Bei der Azure Service Fabric muss eine komplexe Applikationen in kleine, eigenständige Module aufgeteilt werden, sogenannte Microservices.

Diese, sowie einige Konfigurationsinformationen, werden dann in einem Applikationspaket verpackt und in der Azure Service Fabric ausgerollt.
Dabei kann so ein Microservice verschiedene Technologieren verwenden, wie z.B. ASP.NET 5, Node.js, JVM oder auch eine einfache EXE-Datei.

Azure Service Fabric ClusterDie Azure Service Fabric nutzt dann ein oder mehrere vom Benutzer erstelle Cluster aus VMs, um diese Microservices zu betreiben.

Dabei können die Cluster sowohl in der Public Cloud oder auch im eigenen Rechenzentrum betreiben werden (Dieser Dienst soll auch Teil des nächsten Windows Server werden).

Auch beim Betriebssystem will Microsoft flexibel sein. Momentan wird zwar nur Windows angeboten. Zukünftig soll es aber auch möglich sein Linux-Cluster zu erstellen.

Die Service Fabric Container, bieten außerdem die Möglichkeit einen lokalen Speichermechanismus zu verwenden, um so die Daten nahe am Dienst und damit im schnellen Zugriff zu haben.
Somit lassen sich auch Stateful-Microservices erstellen.

Eine Architektur einer solchen Anwendung könnte dann wie folgt aussehen:

Azure Service Fabric - Anwendungsarchitektur

Azure Service Fabric - ReplikationssetZu Ausfallsicherheit können im Cluster mehrere Instanzen des Microservices gestartet werden, wobei immer nur eine aktiv ist (Primary).
Die Sekundärinstanzen sind dann Teil eines Replikationssets und erhalten alle Daten der Primärinstanz. Es wird dabei durch Transaktionen sichergestellt, dass mindestens eine Sekundärinstanz den aktuellen Stand der Daten enthält.
Wenn dann die Primärinstanz ausfallen sollte, wird umgehend eine Sekundärinstanz zum neuen Primary erhoben.

Entwicklungsumgebung für die Service Fabric

Wer mit der Azure Service Fabric Preview gleich loslegen möchte, benötigt dazu den Visual Studio 2015 RC, sowie das Service Fabric SDK, was über den Web Platform Installer installiert werden kann.

Da das Service Fabric SDK PowerShell-Skripte für das Testen der Anwendung im Lokalen Cluster ausführen will, muss vorher folgender PowerShell-Befehl im entsprechenden Benutzerkontext ausgeführt werden:

Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Force -Scope CurrentUser

Anschließend kann man sich ein lokales Cluster erstellen:

  1. Ein PowerShell Fenster mit Administrator-Rechten öffnen
  2. In das %programfiles%\Microsoft SDKs\Service Fabric\ClusterSetup Verzeichnis wechseln
  3. Das PowerShell-Skript ./DevClusterSetup.ps1 ausführen