19 points par xguru 2022-05-10 | 2 commentaires | Partager sur WhatsApp
  • Docker a popularisé les conteneurs Linux : une virtualisation au niveau de l’OS qui facilite le déploiement des logiciels
  • Cloudflare Workers et Deno Deploy mettent en œuvre le concept de conteneur JS (dans des environnements différents)
  • Comment les conteneurs JS vont-ils évoluer dans les prochaines années ?

Universal Scripting Language

  • De plus en plus de choses s’interconnectent sur la base du web : The web is eating the world
  • Le web est le support fondamental de l’information humaine, et JS est profondément intégré à l’infrastructure du web, ce qui le distingue des autres langages
  • Les langages de script résolvent de nombreux problèmes côté serveur et permettent d’écrire la logique métier plus vite et à moindre coût
  • Les langages de script sont utiles, se ressemblent souvent beaucoup, et JavaScript est le plus largement utilisé aujourd’hui tout en restant viable pour l’avenir
  • On peut donc considérer JavaScript comme un langage de script universel

Shell : Executables :: JavaScript : WebAssembly

  • Une nouvelle sandbox JavaScript apparaît comme conteneur de plus haut niveau pour les serveurs

  • Elle n’est pas conçue pour résoudre les mêmes problèmes que ceux visés par les conteneurs Linux

  • Elle est apparue comme résultat d’une simplification
    → Minimiser le boilerplate de la logique métier des services web
    → Partager des concepts avec le navigateur et réduire au minimum les notions que les programmeurs doivent connaître

  • Tous les ingénieurs web connaissent déjà les API JavaScript du navigateur
    → Comme l’abstraction des conteneurs JS est construite sur les mêmes API de navigateur, il y a moins de choses à apprendre
    → L’universalité de JS réduit la complexité

  • Le shell est un langage de script interprété pour exécuter des programmes Unix
    → Il possède des conditions, des boucles et des variables, mais reste limité et difficile à utiliser pour programmer. Les véritables fonctionnalités sont assurées par les exécutables

  • Dans cette nouvelle couche d’abstraction serveur, JS prend la place du shell
    → Mieux adapté au scripting que Bash/Zsh, mais tout comme le shell appelle des exécutables, la sandbox JS appelle du WASM
    → Lorsqu’une tâche complexe est nécessaire, comme le redimensionnement d’images, il vaut mieux utiliser WASM que l’écrire en JS
    → De la même manière qu’on ne fait pas de redimensionnement d’image en bash mais qu’on appelle ImageMagick

The North Star

  • L’avenir du scripting, c’est le JavaScript du navigateur
  • L’erreur la plus fondamentale de Node.js a été d’inventer trop de choses en s’éloignant du navigateur, alors même que de nouvelles API se standardisaient
    → En 2010, nous n’avions même pas les modules ES, mais une fois standardisés, il a fallu les ramener dans Node
    → Cela a aussi été le cas pour Promise, Async/Await, Fetch, Streams et bien d’autres
    → CommonJS require, package.json, node_modules, npm, l’objet global process, tous non standard, finiront soit par être standardisés puis ajoutés au navigateur, soit par être remplacés par d’autres éléments fondés sur le web
  • Les conteneurs de haut niveau ne sont pas encore standardisés, et on ne sait pas encore vraiment comment tout cela va évoluer
  • Aujourd’hui, Cloudflare Workers et Deno Deploy utilisent l’API FetchEvent, mais on pourrait trouver une meilleure interface

Conclusion

  • JavaScript est un langage de script universel
  • Grâce à l’universalité de JavaScript, de nouvelles abstractions de type conteneur apparaissent pour simplifier les serveurs
  • Cela ne veut pas dire que les conteneurs Linux vont disparaître. Ce niveau d’abstraction continuera d’être utile
    → Pour une grande partie de la « logique métier » que les gens écrivent, c’est toutefois une abstraction plutôt bas niveau
    → Lorsqu’on construit un site web, des choses comme la configuration de systemd relèvent du boilerplate
  • Beaucoup de « services web » pourraient probablement être simplifiés si on les pensait sous l’angle des conteneurs JavaScript plutôt que des conteneurs Linux
  • Chez Deno, nous explorons cette idée
    → En essayant de simplifier fondamentalement l’abstraction serveur

2 commentaires

 
xguru 2022-05-20

Une traduction est sortie.

https://medium.com/@yujso66/…

 
xguru 2022-05-10

Si je devais le résumer à ma façon :

  1. Ces derniers temps, de nombreuses technologies de sandbox basées sur WASM font leur apparition.
  2. JavaScript est utilisé comme un script permettant d’exécuter WASM.
  3. Une sandbox WASM peut tout accueillir, de l’OS aux conteneurs et jusqu’aux frameworks.
  4. Dans ce cas, on pourrait voir apparaître un nouveau standard de conteneur haut niveau de ce type, en mode conteneur JS, où l’on ne se préoccupe que de la logique métier.
    C’est ainsi qu’on pourrait le résumer, non ?

D’autres liens pour aider à la compréhension