Azure Service Fabric: Was Sie wissen müssen

Cloud-Dienste wie Azure sind im Kern massive verteilte Systeme, auf denen alle Arten von Diensten gehostet werden. Einige von ihnen sind gehostete Infrastrukturen, einige sind Container und Microservices, einige sind Entwicklungsplattformen und einige nutzen serverlose Muster.

Sie alle brauchen eines: eine Management- und Orchestrierungsplattform. Allzweck-Cross-Cloud-Tools wie Kubernetes bieten einen Weg zur Bereitstellung einer verwalteten Containerumgebung, aber es gibt auch einen Platz für benutzerdefinierte Umgebungen, die sich auf die Anforderungen einer bestimmten Cloud-Plattform konzentrieren. Für Azure wird dies von einem Tool erledigt, das seit den frühesten Tagen der öffentlichen Cloud von Microsoft verfügbar ist: Azure Service Fabric.

Einführung in Azure Service Fabric

In den Grundlagen von Azure versteckt, kann Service Fabric schwer zu beschreiben sein. Aber wir sehen es ständig in den Tools, mit denen wir unsere eigene Cloud-native Software erstellen. Es ist das Herzstück der Event Hubs und der IoT-Plattform von Azure, der SQL- und Cosmos DB-Datenbanken sowie vieler Unternehmens- und Verbraucherdienste, die wir täglich verwenden. Mit Azure Service Fabric erhalten Sie Zugriff auf dieselben Tools, mit denen Microsoft seine eigenen Dienste ausführt, verwaltet und in Ihren eigenen Code integriert.

Mit Azure Service Fabric soll die Bereitstellung und Verwaltung von Microservices vereinfacht werden, wobei sowohl zustandsbehaftete als auch zustandslose Vorgänge in einer PaaS Azure-Instanz ausgeführt werden. Dies gilt nicht nur für Azure, da das lokale Entwicklungstool eine vollständige Version von Azure Service Fabric ist und somit auf jedem Windows-System ausgeführt werden kann. Eine Linux-Version macht es auch über mehrere Clouds portierbar und verarbeitet vorhandenen und benutzerdefinierten Code.

Azure Service Fabric verwaltet Ihren Anwendungslebenszyklus mit APIs, die zusätzlichen Plattformzugriff über rein eigenständigen Code hinaus ermöglichen. Es unterstützt auch seine eigenen Akteur- / Nachrichten-Microservices sowie das Hosten von ASP.Net Core-Code. Dienste können nativ als Prozesse ausgeführt werden oder Sie können sie in Containern hosten, sodass Sie die Möglichkeit haben, vorhandenen Code schnell in Azure's PaaS zu integrieren. Container lassen sich mit anderen Azure Service Fabric-Anwendungsmodellen mischen, sodass Sie vorhandene Funktionen schnell per Lift-and-Shift oder durch Einbeziehen bestimmter Paketanwendungen einbinden können.

Beginnen Sie mit Azure Service Fabric

Der vielleicht schnellste Weg, um mit der Entwicklung von Service Fabric zu beginnen, ist das Reliable Services Framework. Hierbei handelt es sich um eine Reihe von APIs, die in die Funktionen zur Verwaltung des Anwendungslebenszyklus von Azure Service Fabric integriert sind. Sie können Code in jeder unterstützten Sprache oder in einem von Ihnen gewählten Anwendungsframework schreiben. Dienste können zustandslos oder statusbehaftet sein, wobei zustandslose Dienste externen Speicher verwenden, um den Status zu verarbeiten. Die Stateful-Option ist interessanter, da sie die eigenen Tools von Service Fabric zum Verwalten des Anwendungsstatus verwendet. Sie müssen weder Skalierung noch Hochverfügbarkeit berücksichtigen. Es ist alles für Sie erledigt.

Wenn Sie die Sammlungen von C # verwendet haben, sind Ihnen die zuverlässigen Sammlungen des zuverlässigen Dienstes bekannt. Sie werden auch in derselben Instanz wie Ihr Computer gespeichert, wodurch die Latenz verringert wird. Wenn ein Dienst ausfällt, kann er beim Neustart den Status übernehmen. Mit verschiedenen Statusmodellen können Sie das Modell auswählen, das für Ihren Dienst am besten geeignet ist. Einfache Dienste, für deren Betrieb nur Eingabedaten erforderlich sind, können zustandslos sein. Wenn Sie jedoch mit Code arbeiten, der den vorherigen Status kennen muss, müssen Sie einen zuverlässigen Dienst erstellen.

Microsoft erleichtert das Erstellen vertrauter Web- und Anwendungs-Backends auf Azure Service Fabric mit Unterstützung für ASP.Net Core. Obwohl es nicht zu 100 Prozent mit ASP.Net MVC kompatibel ist, können Sie vorhandenen Code auf die neue Plattform migrieren. Es gibt Unterstützung für das Erstellen von zustandslosen und statusbehafteten Diensten, die Übergabe der Anwendungsorchestrierung und die Skalierung an Azure Service Fabric.

Skalierbare Parallelität mit Akteuren

Born-in-the-Cloud-Anwendungen sollten das Reliable Actor-Framework nutzen. Dies erweitert Reliable Services um die Implementierung virtueller Akteure (wie sie vom offenen Project Orleans-Framework verwendet werden, das in Gaming-Backends beliebt ist). Die Verwendung des Akteur- / Nachrichtenmusters zur Verarbeitung von Mikrodiensten funktioniert gut, da das zugrunde liegende Modell für gleichzeitige Systeme schnell skaliert werden kann und viele gleichzeitig arbeitende Akteure verarbeiten können.

Zuverlässiger Schauspieler ist nicht für jedes Szenario geeignet. Dies funktioniert am besten, wenn Ihr Code in einfache Rechenblöcke unterteilt werden kann, die als nicht blockierende Single-Thread-Objekte implementiert werden können, die entweder keinen Status haben oder ihren eigenen Status haben. Es ist am besten für völlig neue Anwendungen geeignet, da es schwierig ist, vorhandenen Code zu zerlegen. Das Erstellen einer Anwendung mit Reliable Actor kann komplex sein, selbst wenn Sie Ihre Akteure definiert haben. Sie müssen bedenken, dass Schauspieler zwar durch Müll gesammelt werden können, ihr Status jedoch weiterhin besteht und auf sie zugegriffen wird, wenn Sie in Zukunft einen Schauspieler mit derselben ID anrufen.

Reliable Actor löst viele komplexe verteilte Computerprobleme. Sie müssen jedoch sorgfältig überlegen, wie Sie Objekte Akteuren zuordnen und wie Sie sie in Ihren Anwendungen verwenden.

Azure Service Fabric wird Open Source

Microsoft hat kürzlich bekannt gegeben, dass es sich um Open-Sourcing-Service Fabric handelt, das das Entwicklungsmodell in ein Modell ändert, das Pull-Anforderungen von Drittanbietern akzeptiert und einen öffentlichen, offenen Designprozess ermöglicht.

Die Umstellung auf ein Open Source-Entwicklungsmodell neben einem offenen Entwurfsprozess ist ein gewaltiges Unterfangen für eine grundlegende Technologie wie Azure Service Fabric. Während die erste Tranche von Open Source-Code auf Linux basiert, hat das Microsoft-Entwicklungsteam angegeben, dass der Windows-basierte Code, der derzeit auf Azure ausgeführt wird, bald folgen wird. Die Entwicklung wird auf GitHub erfolgen, wobei sich ein Großteil der ersten Arbeiten darauf konzentriert, den Übergang von den internen Plattformen von Microsoft zu einem öffentlich zugänglichen Prozess abzuschließen.

Microsoft hat bereits seit einiger Zeit geplant, ein Open Source Azure Service Fabric bereitzustellen - zumindest seit dem Start des Linux-Zweigs des Codes. Da es sich sowohl um neueren Code handelt als auch ein anderes Tool als die Windows-Version verwendet, war es viel einfacher, diesen Zweig für die Veröffentlichung freizugeben. Das Windows-Tool ist komplexer und verfügt über ein Jahrzehnt Geschichte, das entschlüsselt und überarbeitet werden muss. Ein Großteil davon ist auf die Verwendung von Nur-Microsoft-Entwicklungstools zurückzuführen, die der Außenwelt nicht zur Verfügung stehen, sowie auf die Nacharbeit, die erforderlich ist, um sie auf öffentlich verfügbare Tools zu verschieben.

Wenn Sie über ein Tool wie Azure Service Fabric verfügen, stehen Ihnen viel mehr Optionen als mit herkömmlichem PaaS zur Verfügung, insbesondere wenn Sie neue Anwendungen von Grund auf neu erstellen. Durch die Unterstützung von Containern können Sie neben Ihrem Code auch gepackte Anwendungen einbinden. Ebenso kann die Verwendung bekannter Frameworks und Muster die Lernkurve verkürzen. Mit einer Open Source-Zukunft vor sich könnte Azure Service Fabric das Multicloud-Anwendungsframework sein, nach dem Sie suchen.