Node.js

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…