Écrire des microservices en Python – 2

Partie 2

Cette deuxième partie se focalise sur le choix des bibliothèques / framework existant en Python pour créer des applications en architecture microservices.

Voilà que maintenant nous allons nous demander comment  écrire une application en Python en architecture Microservices: Nous ne réinventerons pas la rue en démarrant à zéro, nous utiliserons une des bibliothèques existants. Il y en a plusieurs.

Par exemple : (et la liste est loin d’être complète !)
• Flask (léger, serveur intégré, bien documentée)
• Django (solution industrielle, grande taille un peu complexe mais facile à intégrer avec une BD et apte à des solutions pour les entreprises)
• Pyramid (taille moyenne, facilités pour le packaging des projets)
• Falcon (optimisé pour les microservices)
• Eve (moyenne taille)
• CherryPy (minimale, orienté objets)
• Bottle (cousin de Flask 🙂 )
• Tornado (rapide, optimisé pour gérer aux même temps un grand nombre de requêtes)
• Twisted…
• Etc…

Le premier choix doit être fait entre celles qui proposent une solution « complète » mais peut-être sont plus difficiles à prendre en main, et celles qui nous permettront d’obtenir des résultats vite-fait, mais qu’il faudra travailler beaucoup plus si on voudra en obtenir des applications professionnelles. Nous opterons pour la deuxième option, car notre objective est d’apprendre les bases.

Un deuxième choix doit être fait entre celles qui proposent une gestion des requêtes « synchrone » et ces qui en proposent une « asynchrone ». Sans trop aller dans les détails, ces qui sont synchrones en général gèrent les requêtes une à la fois d’une façon sérialisée. Ces qui sont asynchrones permettent l’exécution de plusieurs requêtes en parallèle et elles sont en général moins standardisées.

Ici j’ai hésité beaucoup entre Flask (synchrone) et Tornado (asynchrone). C’est avec cette dernière qu’on va démarrer, même si nous n’utiliserons pas ses capacités asynchrones. La raison principale est que je me suis basé sur l’article de Bill Ward, qui utilise la même bibliothèque. Pour ce qui nous concerne, Flask et Tornado sont équivalents.

Description de Tornado :

Tornado est un serveur web multiplate-forme écrit en Python. Ses fondateurs, anciens employés de Google, ont réussi à faire preuve d’innovation d’un point de vue technologique, notamment avec la création de protocoles pour les échanges en temps réel. Codé en Python, il s’agit d’un serveur web asynchrone, c’est-à-dire que les opérations d’entrées/sorties ne bloquent pas l’exécution du programme tant qu’elles ne sont pas achevées, contrairement aux serveurs synchrones qui sont actuellement bien plus courants pour les applications web.

Les applications Tornado bien écrites sont connues pour avoir d’excellentes performances.

La suite au prochain chapitre…