Node.js

Découvrir et maîtriser Node.js tout en professionnalisant et industrialisant vos pratiques de développement JavaScript

Objectifs

La formation Node.js vous donne toutes les clés pour tirer le meilleur de
Node.js en professionnalisant et industrialisant vos pratiques de
développement JavaScript
, notamment pour mettre en production des APIs qualitatives de dernière génération. Elle permet aux apprenant·e·s de :

  • savoir installer et mettre à jour Node.js et npm,

  • rechercher, installer et mettre à jour des modules Node,

  • travailler efficacement avec Node au moyen d’un outillage permettant un cycle rapide de développement,

  • manipuler élégamment des agencements complexes de code asynchrone, notamment à l’aide du module async et des promesses,

  • connaître et exploiter au mieux les modules noyaux fournis avec Node,

  • comprendre et maîtriser des technologies pivots de Node telles que les événements et les flux,

  • structurer leur code dans le respect des meilleures pratiques Node, tant pour la partie serveur que côté client,

  • tester automatiquement leur code, au niveau unitaire mais aussi en intégration complète,

  • produire des APIs modernes, tant en REST qu’en GraphQL

  • Sécuriser leur code conformément à l’état de l’art

Attention : le code source de la formation est intégralement en ES2017+.

Il s’agit donc non pas d’une « simple » formation technique, mais véritablement d’un ensemble complet de savoir-faire qui donne non seulement les clés d’une fonctionnalité immédiate, mais aussi les moyens de produire du code maintenable et qualitatif sur la durée.

Pré-requis

  • Disposer d'un ordinateur de performance suffisante, correctement configuré (notamment selon l’éventuel guide d’installation associé à la formation et indiqué au plus tard en convocation)
  • Cet ordinateur doit être équipé d'une webcam, d'un micro et d'une sortie audio
  • Disposer d'une connexion internet avec un débit minimal descendant/montant de 1Mbps, et idéalement au moins 5Mbps (tester ici)
  • Pouvoir exécuter Zoom, soit en tant que logiciel installé, soit via le client 100% web. Le bon fonctionnement du client installé peut être testé ici.
  • Connaître le fonctionnement des éléments fondamentaux du langage JavaScript : variables, types de données, boucles, fonctions, bibliothèque standard du langage telle qu'elle était au moins au niveau d'ES3 (1999).

  • Avoir utilisé JS en production dans au moins 10 scénarios différents.

Programme

Trouver ses marques

Bonjour Node !

  • Méthodes d’installation et de mise à jour
  • Node, l’historique en 5 minutes
  • Mon premier programme
  • Exécuter un fichier JS
  • Un exemple un peu plus riche
  • Shebangs et fichiers « exécutables »

Gestion des modules de Node

  • Modules configurables
  • Initialisation déportée
  • Modules Node
  • Chargeurs de modules et syntaxes alternatives
  • Chemins de recherche et détails de require

Déboguer

  • Avec Visual Studio Code
  • Avec Google Chrome
  • Quelques mots sur WebStorm et les autres
  • Concilier débogage et nodemon

Tester

  • Topo sur les tests automatisés : unitaires, intégration…
  • Un harnais de tests riche avec Jest
  • Des assertions riches avec Chai
  • Mocking de méthodes, d’objets et de modules

npm

  • Packaging de modules
  • Rechercher des modules
  • Installer en local ou en global
  • Dépendances de production et de développement
  • La fin des conflits de version
  • package.json en détail

Quelques modules noyaux

  • console
  • process et os
  • fs et path
  • util
  • Objets globaux
  • Revue rapide des autres modules noyaux

Événements

  • Le module events
  • EventEmitter
  • Intégrer une capacité événementielle à du code existant

Compétences clés

Programmation asynchrone

  • Callbacks
  • “Callback Hell” et “Pyramid of Doom”
  • Réduire l’imbrication à l’aide des déclarations
  • Les callbacks façon Node
  • Combinaisons complexes avec async.js
  • Promesses : principes, exemples et mise en œuvre native
  • Versions « promesses » d’API asynchrones usuelles
  • async / await

Flux et buffers

  • Types de flux
  • Modes de fonctionnement et bascule entre modes
  • Buffers
  • Encodages de texte
  • Pipelining
  • Stream all the things!

Bonnes pratiques de base de sécurité

  • Mises à jour de Node lui-même ; versions standard et LTS
  • Dépréciation des API noyau présentant un risque
  • npm audit, npm audit fix
  • Node Security Project
  • Node Certified Modules
  • Audit automatique de vulnérabilités sur GitHub
  • Scripts à l’installation
  • Gestion des credentials et secrets
  • Choisir intelligemment ses algorithmes de chiffrement
  • Principes généraux de stockage de données
  • Services tiers d’interception dynamique d’attaque

Stockage moderne avec MongoDB

  • Principes de NoSQL
  • Présentation de MongoDB
  • Quelques mots sur CouchDB, ElasticSearch, Firebase…
  • L’API native de MongoDB
  • Gagner en confort avec Mongoose
  • Aperçu des clients graphiques (ex. dbKoda, Robo 3T, Compass)

Développer une API REST

  • Rappels sur REST
  • Hypermédia
  • Versions
  • Formats variables
  • Tester une API REST

Frameworks

  • Juste Express ?
  • Restify
  • Quelques mots sur Feathers, Fastify, Loopback…

Développer une API GraphQL

  • Petit topo sur GraphQL
  • Concevoir un schéma pertinent
  • Auditer la performance
  • Tester une API GraphQL

Frameworks

  • Juste GraphQL.js ?!
  • Apollo 2
  • Quelques mots sur Prisma et Relay

Sécuriser une API

  • Validation des requêtes
  • Rate limiting : variantes REST et GraphQL
  • Authentification : tokens ou sessions ?
  • À propos de JWT…
  • Autorisation
  • 2FA / MFA
  • CORS

Déployer un serveur API

  • « À la main »
  • Sur des PaaS : Heroku, Azure, GCP, Now

Microservices, Serverless et FaaS

  • Principe des microservices / fonctions
  • Pooling de connexions, files de messages, etc.
  • Déploiement FaaS : Azure, GCP, AWS Lambda

Frameworks

  • Serverless
  • Quelques mots sur Arc, Micro, Seneca, Moleculer…

Moyens pédagogiques et techniques, suivi et appréciation

Les apprenant·e·s reçoivent, à chaque début de période, un accès :

  • aux diapositives du support de cours au format web, afin de pouvoir faciliter leur suivi,

  • au dépôt de départ pour le développement de l’application « fil rouge ».

Après la session, ils reçoivent par ailleurs :

  • un e-mail de debrief très fourni et riche en ressources,

  • une archive de référence, contenant les slides de toute la formation, la codebase finalisée intégralement documentée et testée, et diverses ressources complémentaires.

L’évaluation des acquis se fait en cours de formation, au moyen de la réussite des étapes successives de développement de l’application « fil rouge » et de la bonne exécution des tests automatisés réalisés ou fournis.

Demander une convention de formation Prochaines sessions de formation

Tarifs indicatifs

Apprenant·e·s de la conventionTarif unitaire
1 à 2 personnes2 000 € HT
3 à 5 personnes1 800 € HT
À partir de 6 personnes1 600 € HT

Vous souhaitez une formation intra entreprise ou sur mesure ?

Pour une formation personnalisée, en accord avec vos besoins, dans vos locaux ou dans nos locaux.

Demander ma formation intra / sur mesure