La version 1.5 d’Istio, le service mesh Kubernetes pour la gestion des réseaux de microservices, va utiliser WebAssembly pour exécuter les extensions. Cette annonce pourrait paraître étrange. L’explication ? Le format de code binaire permet une vitesse d'exécution quasi-native sur de nombreuses plateformes. En tant que technologie de programmation, WebAssembly offre là une preuve supplémentaire de son avance. Il montre aussi qu’il peut servir à autre chose qu’à créer des applications web à haute performance.

Le projet Istio prévoit d'utiliser WebAssembly (Wasm en abrégé) pour gérer l'extensibilité et les modules complémentaires avec un projet connexe, Envoy. Écrit à l'origine par des ingénieurs de Lyft, Envoy offre des services de proxy réseau, laissant à Istio le soin de se concentrer sur des abstractions de plus haut niveau. Les deux projets peuvent être étendus, mais utilisent des mécanismes différents : Istio utilise un modèle appelé Mixer, tandis qu'Envoy possède son propre système d'extension.

Hub utilisable dès maintenant 

Selon un message officiel publié sur le blog de l'équipe du projet Istio, les deux approches posent problème : celle d'Istio est limitée et inefficace, et celle d'Envoy trop compliquée. L'écriture d'extensions dans Wasm facilite à la fois le développement et le déploiement. De plus, comme l'environnement d'exécution de Wasm placé par défaut dans un bac à sable, les plantages liés à des bogues dans le code de l'extension peuvent être contenus. La possibilité de compiler de nombreux langages dans Wasm est un autre avantage mis en avant par l'équipe d’Istio. Non seulement les langages de base du web comme JavaScript ou TypeScript, mais aussi les langages machines natifs comme C++ et Rust. Ce qui signifie que les développeurs d'Istio peuvent utiliser de nombreux autres langages de programmation pour développer leurs extensions. 

Le support Wasm à Envoy et Istio sera d’abord ajouté aux deux projets en interne. Il sera ensuite étendu à un certain nombre d'extensions d'Istio dans Envoy. La troisième étape, qui consiste à compiler ces extensions en Wasm, sera facultative dans un premier temps, mais dès que les problèmes de transition auront été résolus, l’équipe du projet souhaite faire de Wasm le langage par défaut à long terme. Enfin, l'équipe d'Istio prévoit de mettre à disposition des exemples de code réutilisable via le WebAssembly Hub, un référentiel de code pour les extensions Envoy et Istio Wasm. Les développeurs peuvent télécharger du code dans les langages compilables sur Wasm, et le code Wasm qui en résulte sera hébergé sur le Hub. Les premiers utilisateurs peuvent commencer à utiliser le Hub dès maintenant, même si le Hub comporte actuellement peu de projets de démonstration et peu d'exemples.