NaphakStudio - stock.adobe.com

WasmCloud progresse, mais accuse encore le coup de sa jeunesse

Après une interruption en 2023, la préversion numéro 2 de la WASI de cette année a fait avancer WebAssembly côté serveur, suscitant l’intérêt d’entreprises telles qu’American Express, mais son utilisation est encore loin d’être généralisée.

WebAssembly (Wasm) était à l’origine utilisé dans les navigateurs Web pour exécuter des applications sur des machines locales, mais un groupe du W3C a créé il y a cinq ans l’interface WebAssembly System Interface (WASI). Celle-ci ouvre la porte à son usage côté serveur.

WebAssembly server-side nécessite une compilation spéciale du code, et sa prise en charge par les langages de programmation les plus courants n’est pas encore finalisé. Néanmoins, une fois compilé, Wasm peut prendre en charge des charges de travail dans de nombreux langages et types d’infrastructure sans nécessiter de réécrire les applications.

En outre, le code WebAssembly est mis en bac à sable (sandbox) par défaut, c’est-à-dire que son accès aux ressources mémoires est limité. Cela a des implications intéressantes en matière de cybersécurité.

Compte tenu de son potentiel, des startups et des projets tels que Second State, WasmEdge, Fermyon, Spin, Cosmonic et wasmCloud ont vu le jour en 2021 et 2022. Tous proposaient un support Wasm côté serveur intégré à des charges de travail conteneurisées et des functions as a service (FaaS) orchestrées avec Kubernetes.

En janvier, la version 0.2 de WASI est entrée en disponibilité générale. Elle a introduit un nouveau modèle de composant Wasm – des interfaces de plugin standardisées pour l’exécution d’applications cloud-natives sur Wasm. Grâce à cette étape et à une base de contributeurs croissante, le projet wasmCloud est passé du bac à sable précoce de la Cloud Native Computing Foundation à la phase d’incubation le 12 novembre dernier.

Le modèle de composants Wasm a attiré l’attention des ingénieurs de plateforme d’American Express, qui avaient commencé à construire leurs propres composants Wasm pour soutenir une plateforme FaaS interne. Ils espéraient que Wasm pourrait intégrer plus de fonctions dans la même infrastructure tout en maintenant les frontières de sécurité entre les charges de travail, faciliter la prise en charge de plusieurs langages de programmation et accélérer les démarrages à froid des fonctions en remplaçant les conteneurs.

« Le modèle de composant WebAssembly nous permet de le faire, tout en offrant des fonctionnalités supplémentaires telles que la composition et la réutilisation », avance Ritesh Rai, ingénieur chez l’émetteur de cartes de crédit basé à New York, lors d’une présentation à l’événement WasmCon organisé dans le cadre de KubeCon + CloudNativeCon North America, le 11 novembre. « Mais nous nous sommes rendu compte que nous devions construire de nombreux composants de l’écosystème de base pour Wasm. C’est alors que nous avons commencé à rechercher des projets open source ».

C’est ainsi qu’est né wasmCloud, qui a donné aux ingénieurs de la plateforme Amex une longueur d’avance grâce à des composants gérés par la communauté pour prendre en charge les fonctions agnostiques sur le plan topologique, les fournisseurs de capacités préconstruits et la liaison dynamique entre les composants.

« Dans l’état actuel de WebAssembly, nous savons que nous ne pouvons pas prendre n’importe quel bout de code, le compiler en WebAssembly et l’exécuter efficacement », constate M. Rai. « Par exemple, si je dois écrire un code qui interagit avec une base de données relationnelle, je choisirais de l’écrire sous forme de binaire natif [alors que] mon code de fonction […] pourrait toujours être compilé en WebAssembly. La liaison dynamique avec les fournisseurs de capacités permet à mon code de fonction d’interagir avec ce code binaire natif de manière transparente ».

Au fur et à mesure que la technologie évolue, ces fournisseurs de capacités peuvent être remplacés par des composants Wasm sans perturber les développeurs, poursuit l’ingénieur. American Express n’a pas encore déployé wasmCloud en production, mais prévoit de le faire bientôt, selon le co-présentateur de Rai, Vamsi Sanagavarapu, vice-président de l’ingénierie chez American Express, lors d’une session de questions-réponses après la présentation lors de WasmCon.

Le modèle de composant Wasm alimente les mises à jour de la communauté

Fermyon, un autre éditeur contributeur de WebAssembly côté serveur, a franchi une étape importante le 11 novembre avec la mise à disposition générale de la version 3.0 de son projet open source Spin. Spin est un framework pour l’exécution d’applications microservices pilotées par des événements avec des composants Wasm. En outre, le projet SpinKube correspondant fournit un opérateur Kubernetes pour Spin.

La version 3.0, qui utilise le modèle de composants Wasm, comprend des déploiements sélectifs. Il s’agit d’un moyen pour les ingénieurs plateforme de reconditionner les composants Wasm dans différentes configurations de microservices sans perturber les flux de travail des développeurs. Ces microservices peuvent ensuite communiquer les uns avec les autres à partir de différents dispositifs d’infrastructure, tels que des nœuds Edge ou IoT et des clusters Kubernetes dans un centre de données.

« Une fois que le développeur livre ce package, l’application n’est jamais recompilée, n’est jamais déballée et divisée en [morceaux] séparés », a déclaré Matt Butcher, PDG de Fermyon, lors d’un entretien avec la rédaction de TechTarget [propriétaire du MagIT] avant WasmCon. « Il s’agit simplement d’un fichier de configuration qui permet à l’application de se diviser en un ensemble de parties constitutives que l’équipe d’exploitation juge nécessaire ».

Une autre nouvelle fonctionnalité de Spin, les dépendances de composants, regroupe logiquement les composants Wasm connexes dans l’application d’un développeur tout en permettant aux ingénieurs de la plateforme de les remplacer. Selon Matt Butcher, cela ouvre la voie à « une sorte de gestionnaire de paquets polyglotte pour Wasm ». Spin 3.0 comprend des intégrations avec des outils d’observabilité tels que OpenTelemetry, Prometheus et Jaeger, ainsi qu’un moteur d’exécution en amont (upstream) pour Wasm qui améliore les performances JavaScript et TypeScript.

Red Hat OpenShift et MicroShift prennent en charge le projet Spin, tout comme Azure Kubernetes Service et Rancher de SUSE. Mais les responsables de Red Hat ont déclaré que la technologie restait balbutiante, lors d’un prébriefing de presse à la KubeCon.

« L’adoption est encore embryonnaire », considère Shobhan Lakkapragada, directeur des produits Edge computing chez Red Hat, lors de ce point presse. « Une grande partie des discussions que j’ai avec les clients et les partenaires est [axée sur] la création d’applications, leur prise en charge, leur modernisation vers les conteneurs et Kubernetes. Je reçois quelques demandes concernant la prise en charge de WebAssembly, mais je ne dirais pas qu’il s’agit encore d’un courant dominant. »

WASI progresse, mais le marché attend la maturité

Une autre mise à jour, la version 0.3, qui devrait être livrée en version alpha ce trimestre, affinera la prise en charge par WASI des opérations asynchrones, y compris les opérations en continu. Un mainteneur de wasmCloud et l’un des premiers utilisateurs estime que cette mise à jour sera essentielle pour améliorer la sécurité de la chaîne d’approvisionnement des logiciels dans les applications Wasm.

« Une fois que nous aurons des flux bidirectionnels, il sera beaucoup plus facile de mettre en œuvre le chiffrement Web », anticipe Colin Murphy, ingénieur logiciel senior chez Adobe, lors d’un entretien avec la rédaction de TechTarget pendant la KubeCon. « Pour mon équipe, qui s’occupe de l’initiative d’authentification du contenu, nous devons valider les signatures cryptographiques et signer les manifestes avec des données de provenance, ce qui est crucial pour nous ».

Wasm côté serveur semblait déjà prêt à décoller fin 2022, mais a rencontré des difficultés en 2023. Il a été submergé par l’engouement autour de l’IA générative, selon Larry Carvalho, analyste chez Robust Cloud.

« Aujourd’hui, les charges de travail d’inférence exécutées en périphérie gagnent en intérêt, et, au vu de son efficacité, Wasm peut jouer un rôle [à cet égard] », souligne Larry Carvalho. « Mais de nombreuses entreprises recherchent des solutions éprouvées, entièrement prises en charge et dotées d’outils et de bibliothèques complets […]. L’intégration de Wasm dans l’infrastructure et les flux de travail existants peut s’avérer complexe ».

Pour approfondir sur Architectures logicielles et SOA