Bien que les différentes technologies qui composent ce qui a été surnommé « Web3 » ne changeront probablement pas les énormes investissements en infrastructure et en logiciels que nous avons réellement réalisés au cours des 3 dernières années, il y a toujours quelque chose d’intéressant là-dedans. La première question que nous devons nous poser est la suivante : quels problèmes peuvent-ils résoudre ?
Les partisans du Web3 recommandent qu’il s’agisse au fond d’un ensemble énorme d’innovations grand public susceptibles de modifier les structures transactionnelles du Web. Je le considère comme un outil plus limité, capable de s’appuyer sur les innovations de la blockchain pour prendre en charge un sous-ensemble d’applications métier en se concentrant sur l’échange de données informatisé (EDI). En effet, lorsque vous réduisez la blockchain à son essence, il s’agit d’une structure d’informations immuable qui peut être partagée entre des partenaires non fiables de manière fiable. Cela le rend avantageux dans les chaînes d’approvisionnement où les documents électroniques ont une base légale et légale qui est préservée 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.
L’accord de Microsoft avec la preuve- Les chaînes de blocs consensuelles de membres, gérées par des consortiums d’entreprises non fiables, sont une option intrigante ici, utilisant une option rapide et à faible impact pour les 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 journal immuable pour les applications qui ne nécessitent pas d’être réparties entre différentes entités.
Vous pouvez penser à ces blockchain – les services basés comme quelque chose comme l’équivalent électronique des dépenses de chargement utilisé pour décrire la cargaison d’un navire, quelque chose qui passe par plusieurs systèmes de services différents sans changement et où vous ne comprenez peut-être pas toutes les différentes entités qui s’engagent avec des documents et des contrats. Ces entités peuvent être n’importe lequel des fabricants d’origine, des expéditeurs, des entrepôts, des navires de fret, des représentants des douanes, des bureaux de douane et bien plus encore. Tous ont besoin d’accéder aux fichiers, et nombre d’entre eux doivent inclure leurs propres signatures dans le cadre d’une procédure d’approbation multipartite compliquée.
Nous pourrions les développer en une blockchain d’entreprise, mais nous devons commencer à réfléchir à la façon dont nous utilisons dans un environnement de développement moderne. Nous développons actuellement des systèmes distribués à grande échelle pour des applications cloud natives utilisant des plates-formes devops et CI/CD. Pouvons-nous donc utiliser ces techniques pour le Web3 ?
Utilisation d’outils commerciaux 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 du groupe d’incubation CTO de Mark Russinovich sur Azure, Brown est mieux connu pour son travail devops, il n’est donc pas surprenant qu’il ait rapidement commencé à intégrer les plates-formes Web3 populaires dans un cadre devops. Il a eu d’excellents résultats. J’ai récemment eu une discussion avec lui sur la façon dont il a pu utiliser ces innovations 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 méthode nous construisons du code, en l’intégrant à la fois à nos plates-formes de développement et à nos outils de construction et de vérification. Il est très important que les outils que nous utilisons évitent les nombreuses catastrophes publiques liées au Web3, en particulier avec la gestion du commerce et d’autres détails essentiels et des circulations de valeur. Nous ne souhaitons pas un contrat judicieux pour un connaissement qui peut être piraté pour modifier la cargaison fournie à nos entrepôts ou même détournée vers un autre emplacement.
Une partie du Le problème identifié par Brown était une explosion d’outils qui offraient des ensembles de fonctionnalités un peu 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 à développer cette chaîne d’outils. Cela signifie qu’il est nécessaire de reconnaître les outils matures qui prennent en charge les meilleures pratiques d’entreprise, avec l’intention de les couvrir dans un espace de code GitHub ou de les proposer dans l’un des environnements d’avancement virtuel Dev Box de Microsoft. Sinon, il est difficile de démarrer, sans aucun chemin facile pour intégrer de nouveaux designers dans votre groupe.
Choisir des outils n’est qu’une partie du problème et potentiellement le plus simple à conquérir. Le plus gros problème est que si vous utilisez les meilleures pratiques de développement, il est vraiment difficile d’intégrer ces tout nouveaux outils dans les pipelines existants. Comme le déclare Brown, « En creusant plus profondément, j’ai réalisé, wow, ces outils ne sont même pas développés pour être intégrés à un pipeline. » Il y a une dépendance excessive à l’égard de techniques de publication simples, de la composition de code par vous-même et de la publication sans filtrage formel. Cette technique est très bien pour les expériences et les prototypes auto-hébergés, mais elle ne permet pas de fournir du code de niveau entreprise.
Construire un pipeline devops pour des contrats intelligents dans Azure
Comment pouvez-vous les intégrer dans un pipeline devops ? Nous devons cesser de croire que les innovations Web3 sont séparées du reste de la pile d’applications d’entreprise. Lorsque nous le faisons, nous pouvons découvrir des points de combinaison, par exemple, mettre des contrats intelligents dans un harnais de test et utiliser des méthodes d’avancement test-first.
Brown a maintenant la capacité de développer une application distribuée basée sur Ethereum environnement 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 implémentations de développement s’exécutent dans une instance Ethereum privée sur Azure Containers. Le plus gros problème pour un développeur utilisant cette technique est de déployer un accord intelligent dans différents environnements.
Il finit par que les contrats intelligents codent en dur une adresse qui est automatiquement ajoutée au contrat JSON lorsqu’il est assemblé. Cela nécessite de reconstruire l’intégralité du contrat à chaque déploiement, ce qui nécessite de nombreuses 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, y compris les 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 grandement l’utilisation du service lorsqu’une adresse d’accord ne peut pas être découverte, en utilisant une fonction Azure pour fournir l’adresse lorsqu’elle est interrogée.
Cela permet au code de Brown de simplement créer le frontal lorsque, soutenant son utilisation à chaque étape du pipeline de mise en œuvre. Il pourrait alors utiliser des cadres de filtrage JavaScript de base avec son application. Toutes les actions essentielles pour développer et déployer chaque environnement à partir d’un référentiel GitHub pourraient être intégrées dans un seul Azure Pipeline, en effaçant les environnements à chaque étape vérifiée. Des outils tels que l’assistance d’Azure Container Apps ici, permettant une libération rapide des artefacts de construction.
À partir de ce début, il est possible d’inclure la prise en charge de structures supplémentaires dans chaque environnement, en plus des fonctionnalités telles que les outils de code tels que Bicep et le système scripts de gestion dans Azure CLI et PowerShell pour garantir que vous disposez d’un environnement reproductible dans lequel vous êtes en mesure de 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 vous débarrasser des environnements inutilisés lorsqu’ils ne sont plus nécessaires, en économisant de l’argent et en garantissant que votre application et son environnement sont idempotents. circulation, 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 innovations de la blockchain
Le travail de Brown va loin pour démontrer comment Web3 les technologies peuvent être intégrées dans un environnement professionnel familier dans le cadre d’une structure 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 Web3 fonctionnent avec les variables d’environnement et les ressources dynamiques. Ils ne sont pas créés pour fonctionner dans un pipeline à plusieurs étapes, et des modifications sont nécessaires s’ils veulent utiliser le bon niveau de maturité 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 concepteurs puissent avoir un aperçu plus clair de la façon dont leurs applications et accords fonctionnent.
Le résultat est un hybride intéressant du familier et du tout nouveau. C’est un avantage, car cela permet au concepteur d’adopter plus facilement de toutes nouvelles innovations et de les intégrer dans les procédures de développement existantes. Il est essentiel 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 fournir un parcours d’incubation de l’expérimental à l’entreprise, un parcours qui s’appuie sur plusieurs années d’expérience dans l’avancement des applications métier, à l’intérieur et à l’extérieur de leurs propres plates-formes.
.
Toute l’actualité en temps réel, est sur L’Entrepreneur