Qu'est-ce que Chrome V8 ?

Chrome V8 exécute le code JavaScript. Node.js et est un environnement d'exécution largement utilisé pour les fonctions JavaScript serverless qui utilise le moteur virtuel Chrome V8. Cependant, exécuter les fonctions directement dans V8 présente des avantages.

Objectifs d’apprentissage

Cet article s'articule autour des points suivants :

  • Donner la définition du moteur JavaScript
  • En savoir plus sur Chrome V8 et Node.js
  • Comprendre le rôle que Chrome V8 peut jouer dans les architectures serverless

Copier le lien de l'article

Qu'est-ce que Chrome V8 ?

Chrome V8 est un moteur JavaScript, ce qui signifie qu'il exécute du code JavaScript. À l'origine, JavaScript a été écrit pour être exécuté par les navigateurs web. Chrome V8, ou simplement V8, peut exécuter du code JavaScript dans un navigateur ou en dehors de celui-ci, ce qui rend possible l'écriture de scripts côté serveur.

Comme un moteur de voiture V8 (huit cylindres), le moteur V8 de Chrome est rapide et puissant. V8 traduit le code JavaScript directement en code machine* afin que les ordinateurs puissent le comprendre, puis il exécute le code traduit, ou compilé. V8 optimise également l'exécution de JavaScript.

*Le code machine est un langage que les processeurs (CPU) peuvent comprendre. Il est purement numérique, c'est-à-dire composé de chiffres.

Que veut dire « compiler » ?

La compilation est un processus qui traduit le code d'un langage de programmation dans un autre langage. Généralement, un compilateur traduit le code d'un niveau d'abstraction supérieur à un niveau d'abstraction inférieur des langages utilisables par l'homme comme JavaScript en code lisible par la machine.

Chrome V8 effectue ce que l'on appelle une compilation à la volée ou traduction dynamique. Au lieu de compiler JavaScript à l'avance, il compile le code en même temps qu'il est exécuté.

Qu'est-ce que le principe du sandboxing ?

Sandboxing de Chrome V8

Un « sandbox », littéralement bac à sable, est un environnement permettant d'exécuter un logiciel qui est isolé et séparé des autres environnements, même de ceux qui se trouvent sur la même machine.

Le sandboxing est une fonctionnalité essentielle de Chrome V8. Chaque processus est sandboxé, ce qui garantit que les fonctions JavaScript s'y exécutent séparément et que l'exécution d'une partie de code n'affecte aucun autre partie de code. (Contrairement à de nombreux produits de sandboxing pour entreprises, qui ouvrent et exécutent des fichiers exécutables dans des machines virtuelles isolées, le sandboxing V8 ne ralentit pas les performances.)

Qu'est-ce que Node.js ?

Node.js est un environnement d'exécution* pour le code JavaScript basé sur le moteur Chrome V8. Il est asynchrone, ce qui signifie qu'il n'est pas nécessaire d'attendre la fin d'un processus pour en lancer un autre. Comme V8, Node.js est gratuit et open source. Contrairement à V8, il n'a pas de fonctionnalité sandboxing intégrée.

(Les habitués de JavaScript auront remarqué l'extension de fichier « .js ». Il s'agit simplement d'un choix purement esthétique pour que le nom de l'environnement d'exécution indique son association avec JavaScript et ne signifie pas que Node.js est un fichier JavaScript.)

*Un environnement d'exécution est un environnement logiciel dans lequel le code est exécuté.

Pourquoi V8 et Node.js sont-ils importants en matière d'informatique serverless ?

Les fonctions serverless doivent pouvoir s'exécuter lorsqu'elles sont lancées. Certains fournisseurs d'informatique serverless proposent Node.js comme environnement d'exécution pour les fonctions JavaScript serverless (d'autres environnements d'exécution sont utilisés pour d'autres langues).

Cloudflare Workers, however, run directly on V8. There are a few reasons for this. One reason is speed of execution for functions that have not been used recently. Cold starts are an issue in serverless computing, but running functions on V8 means that the functions can be 'spun up' and executed, typically, within 5 milliseconds or less. (Node.js has more overhead and usually takes a few milliseconds longer.) Another reason is that V8 sandboxes JavaScript functions automatically, which increases security.