Dans un billet de blogue publié début mai, Ryan Dahl, qui a dirigé le développement des moteurs d'exécution JavaScript Deno (2018) et Node.js (2009), a expliqué pourquoi il pensait que les conteneurs JavaScript pourraient être une meilleure alternative aux conteneurs Linux. En effet, la majorité des programmes de serveur sont des programmes Linux. Ils consistent en un système de fichiers, quelques fichiers exécutables, peut-être quelques bibliothèques partagées, qui s'interfacent avec des logiciels système comme systemd ou nsswitch. Pour Dahl, l'utilisation des conteneurs Linux a surtout été popularisée par Docker.
Docker propose une virtualisation au niveau du système d'exploitation qui fournit un merveilleux mécanisme de distribution des logiciels de serveur. Chaque image de conteneur est un paquetage logiciel prêt à être exécuté et sans dépendance. Selon Dahl, étant donné que les logiciels de serveur dépendent souvent de nombreuses ressources et configurations système, leur déploiement était difficile par le passé. Les conteneurs Linux ont alors résolu ce problème. Cependant, Dahl estime qu'un environnement hermétique similaire peut être trouvé dans le JavaScript du navigateur, bien qu'à un niveau d'abstraction plus élevé.
« Plus nous pouvons supprimer les abstractions inutiles, plus nous pouvons nous rapprocher du concept de "Le réseau est l'ordinateur". Deno Deploy est une nouvelle implémentation de cette idée (sur le réseau GCP) », a-t-il expliqué. Dans son billet de blogue, Dahl a qualifié JavaScript de "langage de script universel" et a émis des hypothèses sur l'évolution des conteneurs JavaScript au cours des deux prochaines années. Pour lui, les langages de script sont très utiles pour résoudre de nombreux problèmes côté serveur. La majorité du code écrit n'est pas lié au calcul, mais plutôt à la productivité.
C'est-à-dire la vitesse à laquelle il peut être écrit et le coût monétaire des développeurs. « Les langages de script permettent d'écrire la logique métier plus rapidement et à moindre coût. Les langages de script (Python, Ruby, Lua, Shell, Perl, Smalltalk, JavaScript) sont assez similaires. Il existe des différences dans la syntaxe et les API, mais il n'y a pas grand-chose d'autre à leur opposer. Quiconque a passé du temps en Rust ou en C comprend ce que ressentent les langages de script. En résumé, les langages de script sont utiles, mais ils se ressemblent tous, et JavaScript est de loin le plus utilisé et le plus évolutif », a déclaré Dahl.
« Il est donc logique de considérer JavaScript comme le langage de script universel », a-t-il ajouté. Selon le créateur de Node.js, le conteneur JavaScript n'est pas destiné à traiter la même ampleur de problèmes que les conteneurs Linux. Son émergence est le résultat de sa simplicité. Dahl estime qu'il réduit au minimum le texte passe-partout de la logique commerciale des services Web. Il partage des concepts avec le navigateur et réduit les concepts que le programmeur doit connaître. (Exemple : lors de l'écriture d'un service Web, il est très probable que toute configuration systemd ne soit qu'un code passe-partout inutile.)
« Chaque ingénieur Web connaît déjà les API du navigateur JavaScript. Comme l'abstraction du conteneur JavaScript est construite sur les mêmes API de navigateur, la quantité totale d'expérience dont l'ingénieur a besoin est réduite. L'universalité de JavaScript réduit la complexité. Shell est le langage de script interprété utilisé pour invoquer des programmes Unix. Il peut faire des conditionnels, des boucles, il a des variables, mais il est malheureusement limité et difficile à programmer. La vraie fonctionnalité est reléguée aux exécutables », a déclaré Dahl. Dans cette nouvelle couche d'abstraction de serveur, JavaScript prend la place de Shell.
« Il est bien mieux adapté à la création de scripts que Bash ou Zsh. Au lieu d'invoquer des exécutables Linux, comme le fait Shell, le bac à sable de JavaScript peut invoquer Wasm. Si vous devez effectuer des calculs lourds, comme le redimensionnement d'une image, il est probablement plus judicieux d'utiliser Wasm plutôt que de l'écrire en JavaScript. Tout comme vous n'écrirez pas de code de redimensionnement d'image dans Bash, vous ferez apparaître imagemagick », a écrit Dahl. Pour finir, il admet avoir quelques erreurs avec Node.js, chose qu'il essaie désormais de corriger avec Deno.
« L'avenir des langages de script est le JavaScript du navigateur. L'erreur fondamentale de Node.js a été de s'écarter du navigateur au fur et à mesure que de nouvelles API étaient normalisées, en inventant trop de choses. En 2010, nous n'avions pas de modules ES, mais une fois qu'ils ont été normalisés, ils auraient dû être intégrés à Node. La même chose peut être dite pour les promises, async/await, fetch, streams, etc. », a-t-il déclaré. « Des éléments non standardisés comme package.json, node_modules et NPM seront finalement soit standardisés et ajoutés au navigateur, soit supplantés par des remplacements alignés sur le Web », a-t-il déclaré.
En gros, le créateur de Node.js de Deno pense que l'universalité de JavaScript favorise l'émergence d'une nouvelle abstraction de type conteneur. Les conteneurs Linux ne vont pas disparaître, mais penser en matière de conteneurs JavaScript pourrait simplifier de nombreux services Web. Dahl a déclaré qu'il s'attendait à ce que la technologie des conteneurs JavaScript se développe au cours des deux prochaines années. Deno explore cette idée, notamment dans son produit Deno Deploy, et recrute actuellement des ingénieurs pour la développer.
Source : Ryan Dahl
Et vous ?
Quel est votre avis sur le sujet ?
Que pensez-vous du concept de conteneur JavaScript ?
Que pensez-vous des projections de Dahl sur l'avenir des conteneurs JavaScript ?
Que pensez-vous de l'utilisation des conteneurs JavaScript à la place des conteneurs Linux ?
Voir aussi
Podman : un moteur de conteneur sans "daemon" open source, conçu pour développer, gérer et exécuter des conteneurs sur Linux, une alternative à Docker ?
L'attrait des développeurs pour les conteneurs et Kubernetes est principalement motivé par l'évolution de leur carrière, selon une étude de Red Hat
51 % des 4 millions d'images Docker analysées présentent des vulnérabilités critiques, et certaines d'entre elles peuvent être considérées comme malveillantes, selon une étude de Prevasio
La sécurité et la conformité des conteneurs restent un défi majeur, tandis que leur adoption s'accélère, 89 % des professionnels de DevOps possédant des déploiements actifs, selon NeuVector