Skip to content

Latest commit

 

History

History
148 lines (97 loc) · 4.85 KB

20180409_SGCIB_NodeJS-5-bonnes-raisons.adoc

File metadata and controls

148 lines (97 loc) · 4.85 KB

NodeJS : 5 bonnes raisons pour lesquelles vous devriez y jeter un oeil

Notes

  • Tout en Javascript, y compris le serveur

  • Derrière Node, il y a une fondation avec beaucoup de grosses boites : Google, IBM, etc.

  • Créé en 2009 par Ryan Dahl (tout seul dans son garage, était un dev de sites web en Ruby)

    • aime la prog concurrentielle

    • inspiré du framework eventMachine

    → sa conclusion : pour être rapide, il faut des I/O non bloquantes

Quand on a ses I/O non bloquantes : on a des Event Loop.

  • NodeJS : tout est non-bloquant (Ryan a choisi javascript coimme base car mono-threadé "fait pour" dans le navigateur )

  • Ryan a pris V8, le moteur javascript de Chrome, et libUV, comme lib C++ pour les I/O.

20180409 NodeJS 01

Possibilté de scaling vertical : mode cluster

→ on peut détecter le nombre de CPUs, et forker le cluster sur tous les CPUS

20180409 NodeJS 02
  • Flow : type checker développé par Facebook (ajoute un système de typage pour javascript), écrit en OCaml

  • Typescript : ajoute une phase de compilation

Le reste des examples sera en Typescript
Va également utiliser le framework Nest

  • Sandbox Editor : éditeur de code en ligne, tourne dans un navigateur (utilise l’éditeur de code Microsoft Monaco, qui est également utilisé par Visual Studio Code)

Spread Operator

Ecosystème

Grosse communauté, ecosystème très présent

Environnement de dev : Visual Studio Code

"Ze" l’outil pour les devs Javascripts

Debugger et Profiler dans Chrome (gros plus pour Node)

Chrome DevTools : chrome://inspect

→ voir cet article de Medium pour plus de détails sur le debugging Node.js avec Google Chrome

Nécessite de lancer Node avec le paramètre --inspect :

$ node --inspect <your_file>.js

Frameworks

  • HTTP : Express et Koa (ce dernier utilisé chez FLuo, et pourrait être vu comme le sucesseur d’Express. Il a été créé par les créateurs d’Express)

  • base de données : photo (très bon driver MySQL, écrit uniquement en Javascript)

  • async await (qui est néanmoins très décrié à la SGCIB, notamment par Cyrille)

Intégration avec d’autres applications ?

20180409 NodeJS 03

Que REST ?
NON ! Voir ci-dessous :

20180409 NodeJS 04

Et une fois de plus gRPC est dispo, ainsi que GraphQL.
→ L’implem de référence de GraphQL côté serveur est full javascript.

React

  • Intérêt : React Native qui est utilisé sur Mobile

Chez Fluo : + 200 000 lignes de code en Javascript

Conclusion, avantages / inconvénients

  • démarre très très vite

  • prend peu de mémoire
    → donc très bon pour le cloud

→ Nouvelle édition du livre de Martin Fowler "refactoring", ne proposera plus d’exemples en Java mais tout en Javascript.

Les 5 bonnes raisons :

  • simplicité

  • légèreté

  • le JS moderne

  • écosystème

  • ET…​

  • beaucoup de TU avec Jest côté Fluo

  • tests plus métier avec du JSGiven

  • tests plus end to end avec TestCafe (très récent, à la place de Protractor)

→ La sécurité est un point auquel il faut faire très attention !

  • Fluo travaille en monorepo

  • Flow et React sont les 2 grosses dépendances de Fluo → dans l’absolu peu d’adhérence à des frameworks avec Node.js

Après, no silver bullet : Node et le JS ne répondent pas à tout, il faut savoir avoir plusieurs cordes à son arc

📎
Pour rappel, Facebook et plusieurs gros sites web utilisent PHP
💡
Retour de Thierry
reality check → il faut prendre la techno qui permet d’aller vite ET de recruter facilement (il est actuellement difficile de trouver des devs Java)