La conférence Next.js sponsorisée par Vercel a eu lieu la semaine dernière et DevClass a rencontré Kelsey Hightower, Google Distinguished Developer Advocate et co-auteur (avec Brendan Burns et Joe Beda) de Kubernetes Up and Running, maintenant dans sa troisième édition. . Il travaille actuellement sur Cloud Run chez Google, entre autres. “Mon objectif est de faire en sorte que le sans serveur ait la possibilité de faire tout ce qu’une machine virtuelle peut faire, mais tous les avantages du sans serveur”, nous dit-il.
Que faisait un gars de Kubernetes lors d’une conférence frontale ?
« Tout est lié », déclare Hightower. « Je suis conseiller de l’équipe Vercel. Quand ils m’ont approché pour la première fois à ce sujet, j’ai dit, qu’est-ce qu’un back-end a à voir avec le front-end ? Mais quand j’ai regardé leur architecture, ce n’est pas juste un autre framework JavaScript. Il y a cette question de savoir où mettez-vous cette expérience client sur le Web, mettez-vous tout dans le navigateur ? Des applications Web d’une seule page ? Ou mettez-vous tout cela dans le back-end et avez-vous cette longue connexion entre les deux pour récupérer les données ? Depuis que Vercel a maintenant ce composant d’infrastructure, mes mondes entrent en collision.
Ce « composant d’infrastructure » est le Edge Runtime, basé sur le moteur JavaScript V8 également utilisé dans le navigateur Google Chrome, ainsi qu’un réseau de distribution de contenu (CDN) Edge. Le concept original de Jamstack était d’avoir des pages Web statiques qui obtiennent du contenu dynamique à partir de microservices appelés à partir de JavaScript. Cela a maintenant évolué vers une architecture à plusieurs niveaux, avec du code exécuté dans le navigateur, d’autres dans des fonctions Edge sans serveur et d’autres dans des services back-end plus distants. L’idée n’est pas propre à Vercel : CloudFlare Workers est similaire et maintenant open sourceNode.js alternative Deno a son Déployer service, et Netlify a Fonctions de bord, par exemple. Tous utilisent le V8.
Le concept est puissant, mais donne également aux développeurs des choix potentiellement difficiles sur la façon de concevoir et de sécuriser leurs applications. Qu’est-ce qui guide la décision concernant le code qui appartient au navigateur, ce qu’il faut mettre dans le middleware, ce qu’il faut mettre dans le back-end ?
“La chose que vous ne pouvez pas faire en arrière-plan, c’est l’expérience”, déclare Hightower. « Ce n’est tout simplement pas assez rapide. Lorsque je me connecte à ce site, je veux des recommandations, je veux des personnalisations, je veux mon profil, je veux que mon jeu de couleurs soit respecté. Je ne peux pas aller jusqu’au serveur et le faire afficher une autre page. Alors maintenant, cette logique doit être divisée.
“Nous sommes allés trop loin avec des applications Web d’une seule page où tout le monde disait, ajoutez simplement un tas de JavaScript avec autant de logique que possible, et laissez simplement la base de données à l’API back-end. C’est devenu trop lourd, trop noueux. Maintenant, les gens disent : “Peut-être qu’on en a trop fait”. Il devrait peut-être y avoir une couche intermédiaire ». Ce dont nous parlons vraiment, c’est de la logique de mise en cache.
Le back-end est cependant toujours nécessaire pour les fonctions critiques de l’entreprise. « Vous voulez acheter quelque chose sur un site e-commerce ? Nous ne faisons pas cela à la marge. Je dois retourner à mon système d’enregistrement, consulter mon inventaire, prendre une décision. Mais peut-être que nous poussons l’historique des commandes à la limite », déclare Hightower.
Dans cette nouvelle pile Web, quel est le rôle de WebAssembly (Wasm) et Isolats V8instances V8 qui présentent certaines des caractéristiques des conteneurs légers ?
“Je me souviens des navigateurs avant que nous ayons des onglets”, raconte Hightower Classe de développement. “Les navigateurs étaient dangereux car une session de navigateur peut perturber une autre et les gens ont commencé à exploiter cela et à voler des données. Chrome arrive et nous obtenons maintenant la V8 qui crée un bac à sable solide et, plus important encore, des règles d’engagement. Vous pouvez toujours faire des choses arbitraires sur votre site Web, mais ce sont des choses que nous pensons dangereuses.
“Donc, si vous prenez cette logique, et si le Web devient l’ordinateur, et que la plupart de ces choses ne sont que des interactions HTTP, alors nous n’avons plus besoin d’un ordinateur entier pour faire cela. Vous pouvez retirer V8 de Chrome et le coller dans le CDN, et prendre cette requête Web, et laisser les gens exécuter des instances Wasm dans un contexte partagé sans qu’ils se violent les uns les autres. C’est une progression naturelle.
“Je pense que V8 ne va pas prendre le contrôle des conteneurs, car les conteneurs contiennent quelque chose de différent. Les choses qui peuvent parler de manière générique aux noyaux et au matériel personnalisé comme les TPU [Tensor Processing Unit] pour l’apprentissage automatique. Mais pour 90% des choses que nous faisons, soyons honnêtes. Nous n’avons pas besoin d’un ordinateur complet pour le faire. C’est pourquoi les gens sont enthousiasmés par Wasm. Il résout certains des problèmes de sécurité, il a prouvé sa sécurité pendant environ 20 ans dans le contexte du navigateur, et maintenant nous sommes sur le point d’en faire l’expérience côté serveur.
Cela dit, il y a eu beaucoup de discussions lors de la conférence Next.js sur l’expérience des développeurs et à quel point elle peut être médiocre. Gérer les composants d’une application Web moderne, CSS, JavaScript, images, HTML, est “l’une des pires expériences de développement au monde”, déclare Hightower. Une autre question courante des développeurs était de savoir comment déboguer ces nouvelles applications multiniveaux.
La sécurité est un autre problème. “La plupart des développeurs n’ont aucune idée de la façon de créer des informations d’identification, de gérer les informations d’identification, de faire pivoter ces informations d’identification, nous finissons donc par transporter des bombes à retardement dans nos systèmes… nous essayons de passer à de nouvelles normes d’identité, où l’identité fait partie du déploiement de l’application”, il dit.
Ce nouveau style d’application multiniveau n’en est qu’à ses débuts, et les développeurs peuvent s’attendre à quelques difficultés en cours de route.
— to news.google.com