Dans sa dernière version portant la référence 1.22.1, Deno intègre plusieurs améliorations comme :
- la mise à jour du comportement de vérification de type par défaut ;;
- la suppression des API instables comme Deno.emit(), Deno.formatDiagnostics() et Deno.applySourceMap ;;
- la disponibilité par défaut de l’espace de nom Deno dans les workers ;;
- la mise à jour de l’API Deno.resolveDns() ;;
- l’ajout de la nouvelle méthode statique Response.json() ;;
- l’ajout de mises à jour pour l’API instable Deno.spawn() ;;
- la possibilité de désactiver la prise en charge automatique du fichier de configuration par le runtime avec l’indicateur --no-config ;;
- l’ajout de la propriété userAgent à l’objet global navigator ;;
- et bien plus encore.
Comme avantages, les mainteneurs de Deno mettent en avant les points suivants :
- il intègre des fonctionnalités des plateformes Web et adopte les normes des plateformes Web ;;
- Il est sécurisé par défaut. Aucun accès aux fichiers, au réseau ou à l’environnement, sauf s’il est explicitement activé ;;
- Il prend en charge TypeScript prêt à l’emploi ;;
- Il ne livre qu’un seul fichier exécutable ;;
- Il possède des outils de développement intégrés comme un inspecteur de dépendances (deno info) et un formateur de code (deno fmt) ;;
- Il dispose d’un ensemble de modules standard révisés (audités) qui sont garantis pour fonctionner avec Deno : deno.land/std ;;
- Il fédère un certain nombre d’entreprises prêtes à l’utiliser.
Concernant le dernier point ci-dessus, Steven de Salas, un ingénieur fondateur et directeur technique d’une startup de série A à Madrid, déclare avoir fait le grand saut avec Deno en l’utilisant en production depuis un peu moins d’un an. Comme activité principale, Steven de Salas présente son entreprise comme une startup exécutant des services Node.js. Plus en détail, elle fournit des informations et interagit avec de nombreux fournisseurs de stationnement dont la plupart ont une sorte d’API JSON avec laquelle l’entreprise peut communiquer. En somme, l’entreprise de Steven de Salas fait de l’intégration d’API.
Pour faire tourner ses activités avec Deno, Steven de Salas avance que son entreprise utilise comme pile les outils suivants :
- Deno sur Debian dockerisé ;;
- Oak pour le frameworkWeb/API ;;
- SuperOak pour les tests ;;
- Plusieurs autres bibliothèques.
Tous ces outils s’exécutent en tant que conteneurs à charge équilibrée hébergés dans AWS, souligne le fondateur de l’entreprise espagnole.
Après avoir côtoyé au quotidien Deno pendant un peu moins d’un an, Steven de Salas ressort avec une expérience mitigée. Pour l’ingénieur, Deno présente plusieurs points formidables comme la prise en charge native de TypeScript, ce qui signifie qu’il n’y a pas d’installation, de configuration ou d’instructions nécessaires. Un simple changement de l’extension du fichier en .ts et la prise en charge est faite. De même, selon l’ingénieur, grâce à ses images Docker exécutables et facilement accessibles, Deno serait très facile à déployer en production. Enfin, une des expériences agréables que Steven de Salas a vécues avec Deno est qu’il serait très stable en production.
Toutefois, tout n’est pas seulement rose dans le monde de Deno. En effet, selon la présentation faite de Deno.js par les mainteneurs du projet, ce runtime aurait une sécurité supérieure à Node.js avec des autorisations qui doivent être explicitement déclarées au moment de l’exécution et appliquées par l’exécutable. Sur le papier, cela semble fantastique, dans la mesure où la plupart des dépendances nécessitent un accès système ou réseau très limité. Les verrouiller serait une énorme victoire pour le développeur, car cela lui permettrait d’avoir un contrôle des mises à jour dans les grandes arborescences de dépendances, tout en se concentrant sur les modifications d’autorisation. Mais dans les faits, cela revient simplement à ajouter des autorisations à l’exécutable principal dans votre script de démarrage lorsque votre projet se développe et que vos besoins changent, rapporte le fondateur de startup.
En outre, nombreux sont les développeurs qui rapportent que cet aspect de sécurité mis en avant par les mainteneurs de Deno ne pourrait pas efficacement résoudre le problème de la sécurisation des dépendances. Comme arguments, ces derniers soulignent que les verrous mis en place pour gérer les dépendances ne font qu’ajouter des surcharges et des complexités inutiles, de sorte que pour faire quoi que ce soit, les développeurs donneront simplement toutes les autorisations.
En plus de ces points négatifs cités, certains développeurs qui ont voulu tester Deno ont rencontré des problèmes de fonctionnement avec par exemple les packages redis, ioredis et même avec la couche de compatibilité Node. Le pilote Deno pour Redis serait encore au stade expérimental. Postgre par contre ne compilerait pas selon le retour d’expérience de l’internaute connu sous le nom de Dimgl. C’est pourquoi Steven de Salas ne manque pas de relever entre autres faiblesses de Deno, l’écosystème encore moins mature contrairement à Node.js, ce qui contraint certaines personnes et entreprises à repousser encore plus loin l’échéance de l’utilisation de Deno en production.
Source : Deno, Blog Deno 1.22
Et vous ?
Avez-vous testé Deno ;? Quel est votre avis ;?
Que pensez-vous de l’utilisation de Deno en environnement de production ;? Bon ;? Mauvais ;? Risqué ;?
Voir aussi
La Version 1.9 de Deno, le runtime pour exécuter JavaScript et TypeScript, est disponible, elle améliore les appels de commande dans Rust et apporte de nouvelles fonctionnalités
La Version 1.14 de Deno, le runtime pour exécuter JavaScript et TypeScript, est disponible, elle apporte des ajouts à l’API Crypto Web et de nouvelles fonctionnalités
Deno passe en version 1.0. Le runtime pour exécuter JavaScript et TypeScript, tente de fournir un outil autonome pour l’écriture rapide de fonctionnalités complexes
JSConf Berlin 2018 - Ryan Dahl liste 10 erreurs de conception sur Node.js et dévoile son prototype deno