TP Flask, REST et OpenAPI

1. TP vert

Le but de ce TP est de construire le même ensemble de services que dans le TP
REST, à savoir : Movie, Booking, Showtime et User. Cette fois seul le
service User recevra des requêtes de type REST depuis l’extérieur. Tous les
appels internes entre les services seront eux effectués en utilisant gRPC.
|
Important
|
Toute modification de l’API nécessite une recompilation du fichier
proto !
|
|
Important
|
Booking est à la fois un Service et un client en gRPC. User
est aussi à la fois un service et un client mais son service offre une API REST.
|
|
Tip
|
Pour tester au fur et à mesure vous pouvez éventuellement créer un client test pour chaque service. |
Voici les étapes à suivre pour ce TP :
-
Terminer l’écriture du service Movie en utilisant
gRPC. Vous devez retrouver les fonctionnalités que vous aviez dans le précédent TP. -
Ecrivez les fichiers d’API
protopour les servicesBookingetShowtime -
Ecrivez le code du service
Showtimeet testez ce code. -
Ecrivez le code du service
Bookinget testez ce code (qui doit appeler le serviceShowtimeen utilisant le stub correspondant). -
Reprenez votre service REST
user, remplacez-y les requêtes REST versMovieetBookingpar des appels de procédures distantes en utilisant lesstubassociés.
|
Tip
|
Pour le service Booking vous aurez besoin de Nested types pour les
messages Protocol Buffers, voir https://developers.google.com/protocol-buffers/docs/proto#nested
|
|
Tip
|
Attention à la manipulation des sorties de l’appel de procédure distant
pour User qui doit retourner du json !
|
2. TP bleu
Allez plus loin dans l’utilisation de gRPC en utilisant les appels
asynchones des procédures distantes et l’utilisation de futures. Vérifiez
que les appels asynchrones fonctionnent bien.
|
Tip
|
voir la documentation https://grpc.github.io/grpc/python/ |
3. TP rouge
Ici nous souhaitons tester la performance de l’utilisation de gRPC par rapport à REST. Pour cela vous pouvez écrire un script de benchmark qui aura les paramètres suivants :
-
taille du message d’entrée
-
taille du message de retour
-
nombre de requêtes à effectuer
Il faudra faire en sorte de faire des appels asynchrones vers REST et les procédures distantes de façon à lancer beaucoup de requêtes simultannées.
|
Tip
|
vous pouvez lire et vous inspirer des articles suivants : https://medium.com/@EmperorRXF/evaluating-performance-of-rest-vs-grpc-1b8bdf0b22da https://the-worst.dev/rest-vs-grpc-performance-benchmark-in-net-core-3-1/ |
|
Tip
|
vous pouvez vous renseigner sur les métriques "Web Vitals" proposées par Google pour évaluer l’expérience utilisateur : https://web.dev/vitals/#core-web-vitals |