Sashkin - Fotolia

WebAssembly côté serveur prend forme, mais doit faire ses preuves

Le lancement de Wasm côté serveur au prochain trimestre devrait offrir un moyen plus propre de connecter les applications, dès le début de l’année 2024. Cela suffira-t-il à convaincre les sceptiques ?

WebAssembly côté serveur prend racine dans les projets de certaines équipes, mais doit être davantage développé pour s’imposer comme une technologie prête à la mise en production en entreprise.

Les responsables de l’interface système WebAssembly (WASI) ont présenté une feuille de route à cet effet lors de la conférence WasmCon qui s’est tenue la semaine dernière. Il s’agit notamment d’un nouveau modèle de composant dont la publication est prévue pour la fin de l’année et qui, selon ses partisans, améliorera la manière dont les applications écrites dans différents langages de programmation peuvent partager la même plateforme basée sur WebAssembly (Wasm). La prochaine version majeure, WASI-Preview 3, prévue pour le début de l’année 2024, affinera encore le modèle de composant et ajoutera la prise en charge d’un plus grand nombre de types d’applications.

Wasm est surtout utilisé dans les navigateurs et les applications web, ainsi que dans les réseaux de diffusion de contenu (CDN), où il peut héberger des applications personnalisées sans permettre aux développeurs d’accéder à l’infrastructure sous-jacente. Avec le modèle de composant, les responsables de WASI aspirent à élargir l’utilisation de WebAssembly côté serveur afin de faciliter le partage et le déplacement des applications écrites dans différents langages entre les plateformes cloud et Edge, sans qu’il soit nécessaire de modifier leur code.

« La neutralité linguistique de Wasm et la possibilité de relier les modules combinent les avantages d’une architecture de microservices – isolation de la mémoire et choix du langage – avec les avantages d’un monolithe modulaire en matière d’efficacité d’appels entre les modules », avance Luke Wagner, ingénieur distingué chez le fournisseur de CDN Fastly, lors d’un keynote de la WasmCon. « J’appelle cela la “modularité sans microservices” ».

Pour ce faire, les responsables de la WASI doivent faire passer WebAssembly d’une cible de compilation à un framework capable de soutenir un écosystème élargi, estime Luke Wagner, un des contributeurs prolifiques au sein du groupe de travail WebAssembly du W3C.

« Si j’ai deux modules Wasm et que je veux les relier, cela nécessite actuellement de partager la mémoire », explique-t-il. « Ce dont nous avons besoin pour les [nouveaux] cas d’usage, c’est [qu’ils aient] leur propre mémoire isolée, non partagée [et] un moyen de passer des valeurs complexes entre eux ».

C’est là que le modèle de composants entre en jeu. Il introduit un format pour des modules portables, légers et composables qui encapsulent des composants d’application dans différents langages et normalisent la manière dont ils se connectent les uns aux autres, indique Luke Wagner.

WebAssembly progresse, mais le diable est dans les détails

Alors que la version stable du modèle de composants de WASI-Preview 2 n’est pas encore disponible, l’éditeur Cosmonic a dévoilé cette semaine sa première prise en charge de ce dernier dans son produit PaaS reposant sur Wasm. Le PDG du fournisseur a effectué une démonstration en direct du modèle de composants au sein de la plateforme wasmCloud de l’entreprise, au cours de laquelle il a déplacé une charge de travail simple entre AWS, Azure et un capteur IoT sur son badge lors d’une présentation principale.

« Si cela ne vous convainc pas que le modèle de composants Wasm est prêt pour le prime time, je ne sais pas ce qui le fera », vante Liam Randall, fondateur et PDG de Cosmonic, lors de la présentation. « Avec le modèle de composants, nous avons enfin notre moment Docker ».

D’autres présentateurs de WasmCon ont adopté un point de vue plus modéré, mais ont tout de même exprimé leur optimisme quant au fait que WebAssembly côté serveur sera la clé dans l’avènement de la prochaine génération de services Edge, IoT et OT.

Au cours de l’année écoulée, des ingénieurs de Bosch LLC (la branche américaine du groupe manufacturier allemand), ont développé des composants logiciels open source qui relient WASI aux calculateurs existants des véhicules.

« Nous considérons toujours WebAssembly comme la solution la plus prometteuse. […] [Il] a des frais généraux tellement faibles par rapport aux systèmes conteneurisés que c’est vraiment une décision bon marché », assure Emily Ruppel, chercheuse chez Bosch Research, lors d’une présentation du WasmCon. « Même s’il est difficile de faire fonctionner ce système [avec des cibles matérielles hétérogènes], c’est toujours notre meilleur choix parce que cette faible surcharge de mémoire signifie que nous avons davantage d’espace pour accueillir les applications sur des [systèmes] minuscules ».

Jusqu’à présent, le modèle de composant WASI s’est également avéré trop lourd pour fonctionner sur les plus petits microprocesseurs IoT, selon Emily Ruppel.

Bien que les équipes de Bosch aient démontré que leur nouvelle pile WASI peut prendre en charge des applications critiques de sécurité en temps réel dans un environnement de fabrication grâce à des tests en laboratoire, il reste encore beaucoup à faire pour rendre la technologie plus mature et la faire certifier par les organismes de réglementation, prévient la chercheuse.

« Ce qui nous empêche de prendre WebAssembly et de le déployer dans de véritables systèmes de sécurité critiques, c’est qu’il est extrêmement difficile d’établir la sécurité d’une norme émergente », déclare-t-elle. « Un effort concerté pour certifier la sécurité de la chaîne d’outils WASI sera nécessaire ».

Un standard qui s’impose lentement, mais sûrement

Au fur et à mesure que ces défis apparaissent et que le modèle de composants de la WASI est dévoilé, certains observateurs du secteur ont commencé à se demander si tout cela en valait la peine.

« Je ne suis pas un grand fan du modèle de composants – il me semble qu’il s’agit d’une extension évidente du champ d’application qui se traduira par des API surdimensionnées qui n’arriveront jamais à maturité », écrit Dan Lorenc, cofondateur et PDG de Chainguard, un éditeur de solutions de sécurisation de la supply chain logicielle dans un message publié sur LinkedIn le 5 septembre. « Le groupe travaille actuellement sur de nouvelles API reliées à des réseaux de neurones, des magasins de clés/valeurs – si vous pouvez le rêver, ils peuvent le normaliser ! … Mais l’histoire a démontré que nous ne réussissons jamais ces choses du premier coup. Les intégrer à WASI signifie que nous n’aurons jamais fini, ou que nous obtiendrons un tas d’API formalisées, à moitié abouties, qui rendront plus difficile l’évolution de la spécification à long terme ».

Dan Lorenc n’est pas le seul à exprimer des doutes sur le WebAssembly côté serveur. Selon le premier rapport State of WebAssembly de la Cloud Native Computing Foundation, publié la semaine dernière, les professionnels de l’IT qui travaillent avec WASI restent minoritaires, 34 % des 252 personnes interrogées déclarant qu’elles utilisent pour le moment WASI dans leurs projets. Par ailleurs, 34 % des personnes interrogées ont déclaré qu’elles prévoyaient de l’utiliser au cours des 12 prochains mois. Toutefois, les personnes interrogées ont indiqué qu’elles attendaient le développement de WASI pour plusieurs fonctionnalités clés, telles que la prise en charge des requêtes HTTP, des magasins SQL et des systèmes de fichiers.

WASI-Preview 3, dont la sortie est prévue pour le premier trimestre de l’année prochaine, permettra d’introduire des fonctionnalités importantes que WASI-Preview 2 n’aborde pas. Celles-ci sont également cruciales pour les applications d’entreprise en production. Elles concernent la gestion des applications en concurrence et la prise en charge du streaming, selon la présentation de M. Wagner. WASI-Preview 3 introduira le concept de handler. Celui-ci doit simplifier les connexions entre les composants Wasm, poursuit l’ingénieur.

Une autre présentation lors de la WasmCon a exploré les travaux en cours au sein du groupe WASI afin de prendre pleinement en charge les langages de programmation dotés de mécanismes de collecte des déchets. Parmi ceux-ci, l’on compte les très populaires Go, Java, JavaScript, Python et Ruby.

Enfin, les responsables de la WASI doivent répondre aux préoccupations des entreprises en matière de sécurité et assurer la rétrocompatibilité entre les versions de la technologie au fur et à mesure, ce qui ralentira également le processus, note Larry Carvalho, analyste indépendant chez Robust Cloud. Mais selon lui, ce n’est pas grave.

« Je préférerais que l’équipe chargée des normes WASI prenne son temps et fasse du bon travail plutôt que d’adopter quelque chose à la hâte », affirme l’analyste. « Une norme bien pensée permettra des cas d’usage radicalement différents. À l’inverse, si les choses sont faites à moitié, cela risque d’entraver l’avenir de WASI ».

Pour approfondir sur Architectures logicielles et SOA

Close