Intégration des technologies Web 3 avec Azure Devops

Même s’il est peu probable que les diverses technologies qui composent ce que l’on appelle le « Web 3 » remplacent les investissements massifs dans l’infrastructure et les logiciels que nous avons réalisés au cours des trois dernières décennies, il y a toujours quelque chose d’intéressant là-dedans. La première question que nous devons nous poser est : quels problèmes peuvent-ils résoudre ?

Les partisans du Web 3 suggèrent qu’il s’agit essentiellement d’un ensemble massif de technologies grand public qui peuvent remplacer les fondements transactionnels du Web. Je le considère comme un outil plus limité, capable de s’appuyer sur les technologies de la chaîne de blocs pour prendre en charge un sous-ensemble d’applications d’entreprise en mettant l’accent sur l’échange de données informatisé (EDI). En effet, une fois que vous avez ramené la blockchain à son essence, il s’agit d’une structure de données immuable qui peut être partagée entre des partenaires non fiables de manière fiable. Cela le rend utile dans les chaînes d’approvisionnement où les documents électroniques ont une base contractuelle et légale inscrite dans les traités internationaux et où une extrémité de la chaîne d’approvisionnement n’a qu’une relation indirecte avec l’autre.

Le travail de Microsoft sur les chaînes de blocs consensuelles de preuve d’adhésion, gérées par des consortiums d’organisations non fiables, est une option intéressante ici, offrant une alternative rapide et à faible impact aux systèmes de preuve de travail et de preuve de participation. Dans le même temps, les versions récentes de SQL Server fournissent désormais un registre immuable pour les applications qui n’ont pas besoin d’être réparties entre différentes entités.

Vous pouvez considérer ces services basés sur la blockchain comme quelque chose comme l’équivalent électronique des connaissements utilisés pour décrire la cargaison d’un navire, quelque chose qui voyage à travers plusieurs systèmes commerciaux différents sans altération et où vous ne connaissez peut-être pas toutes les différentes entités qui interagissent avec actes et contrats. Ces entités peuvent être n’importe lequel des fabricants, expéditeurs, entrepôts, cargos, agents des douanes, bureaux de douane et bien d’autres. Tous ont besoin d’accéder aux documents, et beaucoup doivent ajouter leur propre signature dans le cadre d’un processus d’approbation multipartite complexe.

Nous pourrions les intégrer dans une blockchain d’entreprise, mais nous devons commencer à réfléchir à la manière dont nous les utilisons dans un environnement de développement moderne. Nous construisons déjà des systèmes distribués à grande échelle pour les applications cloud natives à l’aide de devops et de plates-formes CI/CD. Pouvons-nous donc utiliser ces techniques pour le Web 3 ?

Utilisation des outils d’entreprise avec la blockchain

Donovan Brown de Microsoft a été chargé d’examiner comment les développeurs devraient travailler avec ces plates-formes d’applications distribuées. Maintenant membre de l’équipe d’incubation CTO de Mark Russinovich sur Azure, Brown est surtout connu pour son travail devops, il n’est donc pas surprenant qu’il ait rapidement commencé à intégrer les plates-formes Web 3 populaires dans un cadre devops. Il a eu de bons résultats. J’ai récemment eu une conversation avec lui sur la façon dont il a pu utiliser ces technologies avec des outils d’entreprise.

Si nous voulons rendre ces outils prêts à être utilisés dans l’entreprise, ils doivent faire partie de la façon dont nous créons du code, en s’intégrant à la fois à nos plates-formes de développement et à nos outils de construction et de test. Il est important que les outils que nous utilisons évitent les nombreux désastres publics associés au Web 3, en particulier avec la gestion du commerce et d’autres flux d’informations et de valeurs clés. Nous ne voulons pas d’un contrat intelligent pour un connaissement qui peut être détourné pour modifier la cargaison livrée à nos entrepôts ou même détournée vers une autre destination.

Une partie du problème identifié par Brown était une explosion d’outils qui offraient des ensembles de fonctionnalités légèrement différents. C’est un paysage qui rend difficile l’intégration, car il n’y a pas de chaîne d’outils évidente et aucun véritable ensemble de meilleures pratiques pour vous aider à construire cette chaîne d’outils. Cela signifie qu’il est nécessaire d’identifier les outils matures qui prennent en charge les meilleures pratiques d’entreprise, dans le but de les intégrer dans un espace de code GitHub ou de les rendre disponibles dans l’un des environnements de développement virtuels Dev Box de Microsoft. Sinon, le démarrage est difficile, sans voie facile pour intégrer de nouveaux développeurs dans votre équipe.

Le choix des outils n’est qu’une partie du problème et peut-être le plus facile à surmonter. Le plus gros problème est que si vous utilisez les meilleures pratiques de développement, il est très difficile d’intégrer ces nouveaux outils dans les pipelines existants. Comme le dit Brown, “En creusant plus profondément, j’ai réalisé, wow, ces outils ne sont même pas conçus pour être mis dans un pipeline.” On s’appuie trop sur des techniques de publication simples, en écrivant du code par soi-même et en le publiant simplement sans test formel. Cette approche est très bien pour les expériences et les prototypes auto-hébergés, mais elle ne s’adapte pas à la fourniture de code de niveau entreprise.

Construire un pipeline devops pour les contrats intelligents dans Azure

Comment pouvez-vous les intégrer dans un pipeline devops ? Tout d’abord, nous devons cesser de considérer les technologies Web 3 comme isolées du reste de la pile d’applications d’entreprise. Une fois que nous l’avons fait, nous pouvons trouver des points d’intégration, par exemple, mettre des contrats intelligents dans un harnais de test et utiliser des techniques de développement test-first.

Brown a maintenant été en mesure de créer un environnement d’applications distribuées basé sur Ethereum qui utilise Azure Pipelines avec des sorties de développement, d’assurance qualité et de production, avec Azure Static Web Apps hébergeant le frontal de l’application. Les déploiements de développement s’exécutent dans une instance Ethereum privée sur Azure Containers. Le plus gros problème pour un développeur adoptant cette approche est de déployer un contrat intelligent dans différents environnements.

Il s’avère que les contrats intelligents codent en dur une adresse qui est automatiquement ajoutée au contrat JSON lors de sa compilation. Cela nécessite de reconstruire l’intégralité du contrat sur chaque déploiement, ce qui nécessite plusieurs reconstructions pour chaque environnement. Comme le note Brown, il s’agit d’un antipattern devops. Vous ne devriez avoir besoin de compiler qu’une seule fois, en ajoutant des valeurs spécifiques à l’environnement lors de l’exécution. Cela a nécessité du travail pour réécrire le code frontal de l’application afin de prendre en charge une source externe pour l’adresse réseau. Cette approche facilite l’utilisation du service lorsqu’une adresse de contrat est introuvable, en utilisant une fonction Azure pour fournir l’adresse lorsqu’elle est interrogée.

Cela permet au code de Brown de ne construire le frontal qu’une seule fois, en prenant en charge son utilisation à chaque étape du pipeline de déploiement. Il pourrait alors utiliser des frameworks de test JavaScript standard avec son application. Toutes les étapes nécessaires pour créer et déployer chaque environnement à partir d’un référentiel GitHub peuvent être intégrées dans un seul pipeline Azure, en supprimant les environnements au fur et à mesure que chaque étape est validée. Des outils comme Azure Container Apps aident ici, permettant un déploiement rapide des artefacts de build.

À partir de ce début, il est possible d’ajouter la prise en charge de frameworks supplémentaires dans chaque environnement, ainsi que l’infrastructure en tant qu’outils de code comme Bicep, et les scripts de gestion du système dans Azure CLI et PowerShell pour vous assurer que vous disposez d’un environnement reproductible et que vous êtes en mesure pour fournir une application prête à l’emploi et tous les serveurs et services nécessaires pour la prendre en charge. Travailler dans Azure en utilisant à la fois des outils d’infrastructure en tant que service et de plate-forme en tant que service vous permet de supprimer les environnements inutilisés lorsqu’ils ne sont plus nécessaires, d’économiser de l’argent et de garantir que votre application et son environnement sont une distribution idempotente, chaque modification de votre code nécessitant un redéploiement complet de l’ensemble de l’application et de l’infrastructure de support.

Vers un modèle de maturité pour les technologies blockchain

Le travail de Brown montre en grande partie comment les technologies Web 3 peuvent être intégrées dans un environnement d’entreprise familier dans le cadre d’un cadre d’application moderne. Il n’est pas nécessaire de sortir des outils familiers : GitHub, Azure Devops, Azure Container Apps, VS Code. Il est clair, cependant, que des changements sont nécessaires dans la façon dont les frameworks Web 3 fonctionnent avec les variables d’environnement et les ressources dynamiques. Ils ne sont pas conçus pour fonctionner dans un pipeline à plusieurs étapes, et des changements sont nécessaires s’ils veulent offrir le niveau de maturité approprié pour une utilisation à grande échelle dans les applications d’entreprise. Il est également nécessaire d’améliorer la télémétrie afin que les développeurs puissent avoir un aperçu plus clair de la performance de leurs applications et de leurs contrats.

Le résultat est un hybride intéressant du familier et du nouveau. C’est une bonne chose, car cela permet à un développeur d’adopter plus facilement de nouvelles technologies et de les intégrer aux processus de développement existants. Il est important pour des entreprises comme Microsoft d’examiner en profondeur les nouvelles technologies, car elles peuvent accélérer la maturation des innovations émergentes. Les entreprises peuvent offrir une voie d’incubation de l’expérimental à l’entreprise, qui s’appuie sur de nombreuses années d’expérience en développement d’applications d’entreprise, à l’intérieur et à l’extérieur de leurs propres plateformes.

Copyright © 2022 IDG Communications, Inc.