Architecture WEB
avec NodeJS et les micro-services
about:nfroidure
Web Platform Architect
Whook Framework creator
Building softwares for Lille's innovative startups since JavaScript is a hot topic.
Almost passed the Rust compiler checks once.
![](https://media1.tenor.com/images/bd3aae8388daa91f6febb08193c4a7cb/tenor.gif?itemid=12639466)
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
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196461/images/2138439/Capture-d_e_cran-2015-09-29-a_-18.16.58.jpg)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196461/images/2138448/images.jpeg)
HTTP request
HTTP response
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196461/images/2138468/wp3d081a08_1a.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196461/images/2138468/wp3d081a08_1a.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196461/images/2138468/wp3d081a08_1a.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196461/images/2138468/wp3d081a08_1a.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196461/images/2138468/wp3d081a08_1a.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196461/images/2138468/wp3d081a08_1a.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196461/images/2138481/804775.jpg)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196461/images/2138468/wp3d081a08_1a.png)
Frontaux REST
Services
Bus
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196461/images/2139802/convoyeur.jpg)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196461/images/2139809/salesforce-logo.jpg)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196461/images/2139810/Logmatic-Logo.png)
Vide
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196461/images/2139815/logo-d2959427dd1ef3abeb6f60b2d0a2d7e5.png)
Monnayeur plein
Avarie
Vente
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196461/images/2139821/distrib_bonbons.jpg)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196461/images/2139822/Encadre65426.jpg)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196461/images/2138468/wp3d081a08_1a.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196461/images/2139823/KM-29_2014b.jpg)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196461/images/2139824/troll.png)
Outils
Process manager
- Forever
- PM2
- ...
NGinx
- Routing
- Load-balancing
- SSL
Bus
- AMQP
- Amazon SQS
Services
- Démons personnalisés
- Services externes
Déploiement automatisé
- Ansible
- Docker
- Cloud (Amazon, CleverCloud)
- Administrateur système
Monitoring
- Munin
- KeyMetrics
- New Relic
- ...
Pro tips
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196461/images/2139838/Capture_d_e_cran_2016-01-17_a__10.33.21.png)
É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
and keep your job
Merci !
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196461/images/2139846/michel_galabru_360.jpg)