BLOG | BUREAU DU CTO

WebAssembly est-il viable en dehors du navigateur ?

Miniature d'Oscar Spencer
Oscar Spencer
Publié le 26 novembre 2024

En bref, oui.

WebAssembly (Wasm) est devenu une technologie dominante qui a pris d'assaut le développement Web. Des premières démos techniques, comme le jeu populaire Doom fonctionnant entièrement dans le navigateur , aux grandes applications héritées comme Photoshop offrant une expérience complète de type bureau sur une page Web classique, WebAssembly offre des expériences complètement nouvelles dans un programme familier déjà installé sur chaque ordinateur personnel dans le monde.

Wasm a été conçu pour que presque tous les langages de programmation puissent le prendre en charge, quel que soit le processeur de votre ordinateur. Il présente plusieurs propriétés de sécurité que le navigateur utilise pour empêcher tout accès non autorisé à vos données ou à vos ressources système. Ces propriétés se révèlent particulièrement utiles en dehors du navigateur, notamment lorsque vous souhaitez exécuter du code en isolation ou avec une portabilité maximale.

L'histoire de POSIX sur Unix

Par défaut, WebAssembly n’a accès à aucune ressource du système sur lequel il s’exécute. Il manipule uniquement des zéros et des uns, c’est pourquoi vous verrez Wasm surtout utilisé pour des tâches intensives en calcul, comme le décodage vidéo ou la retouche d’image, plutôt que pour le développement d’applications complètes. Il est assez simple d’autoriser votre sandbox WebAssembly à accéder à des fonctions externes, telles que l’heure actuelle ou des données stockées dans un fichier, mais les API employées varient généralement selon l’application.

Les systèmes Unix ont connu une évolution semblable à celle de WebAssembly hors navigateur. De nombreuses applications cherchaient à accéder aux ressources système courantes, comme le réseau et les systèmes de fichiers, mais chaque système d’exploitation avait sa propre méthode. C’est pour cette raison que POSIX est devenu la norme pour une interface portable des systèmes d’exploitation : tous les systèmes de type Unix pouvaient adopter cette interface pour uniformiser la communication entre les programmes et le système. Ainsi, les programmes conçus pour un système Unix pouvaient être portés facilement vers un autre.

Découvrez WASI, l'interface système WebAssembly

Pour offrir une méthode standard aux programmes WebAssembly pour dialoguer avec un système d'exploitation, nous avons créé WASI, l'interface système WebAssembly. WASI s’appuie largement sur un projet nommé CloudABI, lui-même inspiré de POSIX. Cela a ouvert de nombreuses perspectives à WebAssembly en dehors du navigateur : vous bénéficiez désormais de la sécurité et de l'isolation propres à WebAssembly, associées à des API réfléchies pour accéder aux ressources système courantes sans compromettre l’isolation. Évidemment, une technologie proche vient à l’esprit : les conteneurs. Aucune discussion sur ce sujet ne serait complète sans citer l’un des articles les plus marquants et partagés sur WASI, rédigé par Solomon Hykes, cofondateur de Docker :

C’est une déclaration assez éloquente. WebAssembly fournit un moyen portable de conditionner du code qui peut être exécuté en toute sécurité sur n'importe quelle plate-forme à des vitesses proches de celles natives, avec l'avantage supplémentaire par rapport aux conteneurs qu'aucun système d'exploitation n'a besoin d'être présent. La plupart des conteneurs produits par les développeurs disposent d'un système d'exploitation Linux dans lequel les programmes s'exécutent, ce qui donne des tailles de conteneurs souvent de plusieurs centaines de mégaoctets ou de plusieurs gigaoctets. Les binaires WebAssembly sont du code pur, avec des tailles souvent en kilo-octets ou en mégaoctets à un chiffre. Il semble fou d’imaginer un monde où, au lieu de déployer des conteneurs partout, les développeurs déploient WebAssembly, mais cette réalité se concrétise déjà, avec plusieurs projets activement développés pour exécuter Wasm sur Kubernetes.

WebAssembly côté serveur en production

Un certain nombre d’entreprises bénéficient déjà de Wasm côté serveur en production. Cloudflare et Fastly disposent tous deux de réseaux de calcul de pointe massifs qui permettent aux clients de déployer du code partout dans le monde, aussi près que possible des utilisateurs. Les deux ont stratégiquement choisi WebAssembly pour avoir des binaires petits et ultra-portables avec des temps de démarrage rapides et une multi-location solide. Une jeune entreprise, Cosmonic, utilise un réseau intelligent pour permettre aux composants WebAssembly de communiquer de manière transparente entre eux, peu importe où ils s'exécutent, qu'il s'agisse d'un petit appareil dans la paume de votre main ou d'une machine fonctionnant à l'autre bout du monde. Un autre parvenu, Fermyon, utilise WebAssembly pour augmenter massivement la densité de charge de travail du serveur. Le résultat est une réduction drastique des coûts des serveurs et une informatique plus écologique pour la planète.

Croissance en dehors du navigateur

Pour résumer, WebAssembly, bien qu’initialement développé pour l’informatique dans le navigateur, a continué à montrer une grande viabilité en dehors du navigateur. Sa conception, prenant en charge différents langages de programmation et mettant l'accent sur la sécurité, en fait un excellent choix pour exécuter du code de manière isolée et atteindre la portabilité. L’introduction de WASI a permis à WebAssembly côté serveur de prospérer, permettant aux organisations de tirer parti de Wasm et de fournir de meilleurs produits tout en étant nettement plus rentables. Le potentiel de WebAssembly en dehors du navigateur n’est pas seulement une idée, mais une réalité croissante pour l’industrie.

Pour en savoir plus, consultez notre article de blog précédent, « Pourquoi vous devriez vous soucier de WebAssembly ».

Regardez ou écoutez également notre podcast « WebAssembly Unleashed » .