Architecture WEB

avec NodeJS et les micro-services

Quand on annonce aux devs qu'on migre sur NodeJS

Quand l'appli monte en charge

NodeJS

  • Technologie relativement jeune
  • Pas encore d' “état de l'art”
  • Trop de choix ?

Les services WEB

Des machines à état

Service Web REST

 

GET

Récupérer un état

 

PUT/POST/DELETE

Modifier un état

Base de donnée

SELECT

Récupérer un état

 

INSERT/UPDATE/DELETE

Modifier un état

HTTP(État)

  • HTTP(db)
  • HTTP(fs)
  • HTTP(redis)
  • HTTP(time, redis, fs)
  • HTTP(...)

Flow HTTP

  • Vérification de la requête

  • Lecture / modification d'état

  • Réponse HTTP quand transaction effectuée

  • Déclenchement d'actions en conséquence (envoi de mails, appels d'API tierces...)

Exemple

La distribution de cacahuètes, une architecture scalable

 

HTTP request

HTTP response

Frontaux REST

Services

Bus

Vide

Monnayeur plein

Avarie

Vente

Outils

Process manager

  • Forever
  • PM2
  • ...

NGinx

  • Routing
  • Load-balancing
  • SSL

Bus

  • AMQP
  • Amazon SQS

Services

  • Démons personnalisés
  • Services externes

Déploiement automatisé

Monitoring

  • Munin
  • KeyMetrics
  • New Relic
  • ...

Pro tips

Éviter les effets de bord

Pas de RPC

Le seul point d'entrée est l'API Rest

Log

Everything

Fonctions pures

Gorilla banana

Dépendences

code != état

Learn REST

Code review

Hackathon Level Backend

Use PUT

MicroServices 1rst

Just fake a x-process bus

No more POO

Write tests

Merci !