Skip to content
ZosiscoIV edited this page May 22, 2025 · 4 revisions

TP10 : High Scalability on Woodytoys

Noms des auteurs : BONTEMS Antoine, SCHOONYANS Ann-Lore, LAMAND Cyril

Date de réalisation : 19/05/2025

1. Micro-services

Expliquez comment vous avez divisé votre infrastructure en différents micro-services, en illustrant par un schéma.

La division à été réalisée comme tel :

image

  • Qu'avez-vous dû adapter dans vos containers pour implémenter ces changements ?

    • Le service API à été split en d'autres services
  • Qu'avez-vous changé dans votre configuration nginx?

    • Dans la config nginx, les requêtes vers certaines routes ont été déviées vers les autres Flasks via le nom des containers

2. Communication Asynchrone

Au lieu d'utiliser RabbitMQ et comme suggéré dans le TP, nous avons utilisé redis, lors du passage d'une commande, celle-ci se retrouve en file d'attente de traitement (ici c'est juste attendre mais ça simule un temps de traitement), un autre service s'occupe alors de traiter ce qui se trouve en file d'attente. Pour cela, l'api orders ajoute à une file d'attente les informations de la commande (l'id de la commande et le nom du produit ajouté), ces informations sont récupérées par l'api products qui s'occupe donc de traité ces informations.

3. API Gateway

  • Documentez comment vous avez protégé votre API contre une utilisation abusive.

    • grâce à cette directive : limit_req_zone $binary_remote_addr zone=gateway:1m rate=5r/s;, ainsi que limit_req zone=gateway; limit_req_status 429; dans les zones concernées
  • Expliquez votre procédure de validation de votre API Gateway.

moiwesh@vps-73644d5a:~$ for i in {1..10}; do curl -s -o /dev/null -w "%{http_code}\n" -L http://localhost/api/ping;  sleep 0.2;  done
200
200
200
200
200
200
200
200
200
200
moiwesh@vps-73644d5a:~$ for i in {1..10}; do curl -s -o /dev/null -w "%{http_code}\n" -L http://localhost/api/ping;  sleep 0.1;  done
200
429
200
429
200
429
200
429
200
429

Clone this wiki locally