Azure Service Fabric: ce que vous devez savoir

Les services cloud comme Azure sont au cœur des systèmes distribués massifs, hébergeant toutes sortes de services. Certains d'entre eux sont des infrastructures hébergées, certains d'entre eux sont des conteneurs et des microservices, certains sont des plates-formes de développement et certains tirent parti des modèles sans serveur.

Ils ont tous besoin d'une chose: une plateforme de gestion et d'orchestration. Les outils cross-cloud à usage général comme Kubernetes offrent une voie pour fournir un environnement de conteneur géré, mais il y a aussi une place pour les environnements personnalisés qui se concentrent sur les besoins d'une plate-forme cloud spécifique. Pour Azure, cela est géré par un outil qui existe depuis les premiers jours du cloud public de Microsoft: Azure Service Fabric.

Présentation d'Azure Service Fabric

Caché dans les fondations d'Azure, Service Fabric peut être difficile à décrire. Mais nous le voyons tout le temps, dans les outils que nous utilisons pour créer notre propre logiciel cloud natif. Il est au cœur de la plate-forme Event Hubs et IoT d'Azure, de ses bases de données SQL et Cosmos DB et de nombreux services d'entreprise et grand public que nous utilisons chaque jour. Avec Azure Service Fabric, vous avez accès aux mêmes outils que Microsoft utilise pour exécuter et gérer ses propres services, en les intégrant dans votre propre code.

L'objectif d'Azure Service Fabric est de faciliter le déploiement et la gestion des microservices, en gérant à la fois les opérations avec état et sans état sur une instance PaaS Azure. Ce n'est pas seulement pour Azure, car l'outil de développement local est une version complète d'Azure Service Fabric, ce qui signifie qu'il fonctionnera sur n'importe quel système Windows. Une version Linux le rend également portable sur plusieurs clouds, gérant le code existant et personnalisé.

Azure Service Fabric gère le cycle de vie de votre application, avec des API qui donnent un accès supplémentaire à la plateforme au-delà du code purement autonome. Il prend également en charge ses propres microservices acteur / message ainsi que l'hébergement de code ASP.Net Core. Les services peuvent s'exécuter de manière native en tant que processus, ou vous pouvez les héberger dans des conteneurs, ce qui vous donne la possibilité d'apporter rapidement du code existant au PaaS d'Azure. Les conteneurs se mélangent à d'autres modèles d'application Azure Service Fabric, ce qui vous permet d'inclure rapidement des fonctionnalités existantes via Lift-and-shift ou en incluant des applications packagées spécifiques.

Premiers pas avec Azure Service Fabric

Le moyen le plus rapide de commencer à développer avec Service Fabric est peut-être son framework Reliable Services. Il s'agit d'un ensemble d'API qui s'intègrent aux fonctionnalités de gestion du cycle de vie des applications d'Azure Service Fabric. Vous pouvez écrire du code dans n'importe quel langage pris en charge ou dans votre choix de cadre d'application. Les services peuvent être sans état ou avec état, avec des services sans état utilisant un stockage externe pour gérer l'état. L'option avec état est plus intéressante, car elle utilise les propres outils de Service Fabric pour gérer l'état de l'application. Vous n'avez pas besoin d'envisager la mise à l'échelle ou la haute disponibilité; tout est géré pour vous.

Si vous avez utilisé les collections C #, vous trouverez les collections fiables du service fiable familières. Ils sont également conservés dans la même instance que votre calcul, ce qui réduit la latence. Si un service échoue, il peut récupérer l'état lors du redémarrage. Le fait d'avoir différents modèles d'état vous permet de choisir le modèle qui convient le mieux à votre service. Les services simples qui ne nécessitent que des données d'entrée pour fonctionner peuvent être sans état, mais si vous travaillez avec du code qui a besoin de connaître l'état précédent, vous devrez créer un service fiable.

Microsoft facilite la création de back-ends Web et d'applications familiers sur Azure Service Fabric avec prise en charge d'ASP.Net Core. Bien qu'il ne soit pas 100% compatible avec le code avec ASP.Net MVC, vous pouvez migrer le code existant vers la nouvelle plate-forme. Il existe une prise en charge pour la création de services sans état et avec état, la transmission de l'orchestration des applications et la mise à l'échelle vers Azure Service Fabric.

Concurrence évolutive avec les acteurs

Les applications nées dans le cloud doivent tirer parti du framework Reliable Actor. Cela étend les services fiables pour implémenter des acteurs virtuels (tel qu'utilisé par le framework ouvert Project Orleans, populaire dans les back-ends de jeu). L'utilisation du modèle acteur / message pour gérer les microservices fonctionne bien, car son modèle de systèmes concurrents sous-jacents évolue rapidement et peut gérer de nombreux acteurs opérant en même temps.

Un acteur fiable n'est pas pour tous les scénarios. Cela fonctionne mieux lorsque votre code peut être décomposé en simples blocs de calcul qui peuvent être implémentés en tant qu'objets monothread non bloquants qui n'ont pas d'état ou conservent leur propre état. C'est mieux pour les applications complètement nouvelles, car il est difficile de décomposer le code existant. Construire une application à l'aide de Reliable Actor peut être complexe, même lorsque vous avez défini vos acteurs. Vous devez garder à l'esprit que même si les acteurs peuvent être récupérés, leur état persiste et est accessible lorsque vous appelez un acteur avec le même ID à l'avenir.

Reliable Actor résout de nombreux problèmes complexes de calcul distribué, bien que vous deviez réfléchir attentivement à la façon dont vous mappez les objets aux acteurs et à la façon dont vous les utiliserez dans vos applications.

Azure Service Fabric devient open source

Microsoft a récemment annoncé qu'il s'agissait d'un Service Fabric à sourcing ouvert, en changeant le modèle de développement en un modèle qui accepterait les demandes d'extraction tierces, ainsi qu'en permettant un processus de conception ouvert et public.

Le passage à un modèle de développement open source, parallèlement à un processus de conception ouvert, est une entreprise massive pour une technologie fondamentale comme Azure Service Fabric. Alors que la première tranche de code open source est basée sur Linux, l'équipe de développement Microsoft a indiqué que le code basé sur Windows qui s'exécute actuellement sur Azure suivra bientôt. Le développement se fera sur GitHub, une grande partie du travail initial étant axé sur l'achèvement de la transition des plates-formes internes de Microsoft vers un processus public.

Microsoft a prévu de fournir un Azure Service Fabric open source depuis un certain temps maintenant, au moins depuis le début de la branche Linux du code. Comme il s'agit à la fois de code plus récent et d'utiliser un outil différent de la version Windows, il a été beaucoup plus facile de mettre en forme cette branche pour une publication publique. L'outil Windows est plus complexe, avec une dizaine d'années d'histoire à démêler et à refactoriser. Une grande partie de cela est due à l'utilisation d'outils de développement uniquement Microsoft non disponibles pour le monde extérieur, ainsi qu'aux retouches nécessaires pour le déplacer vers des outils accessibles au public.

Disposer d'un outil comme Azure Service Fabric vous offre beaucoup plus d'options que le PaaS traditionnel, en particulier lors de la création de nouvelles applications à partir de zéro. La prise en charge des conteneurs ajoute la possibilité d'importer des applications packagées avec votre code. De même, l'utilisation de cadres et de modèles familiers peut raccourcir la courbe d'apprentissage. Avec un avenir open source devant lui, Azure Service Fabric pourrait être le cadre d'application multicloud que vous recherchez.