Aller au contenu principal

Python : async/await

· 11 minutes de lecture

Une application qui passe l'essentiel de son temps à attendre des entrées/sorties (réponses réseau, requêtes de base de données, lectures de fichiers) gaspille ce temps si elle les traite l'une après l'autre. La programmation asynchrone en Python, avec async/await et la bibliothèque standard asyncio, permet de mener ces attentes de front dans un seul thread. Cet article en présente les mécanismes et les cas d'usage, notamment avec FastAPI.

API : REST vs GraphQL

· 4 minutes de lecture

GraphQL et REST sont deux paradigmes majeurs pour la conception d'API, chacun reposant sur des fondements théoriques et des choix architecturaux distincts. Leurs différences portent sur la manière d'adresser les données, sur la répartition du contrôle entre client et serveur, et sur la gestion du cache et des erreurs.

GraphQL : FastAPI & Strawberry

· 8 minutes de lecture

Ce guide présente, étape par étape, la création d'une API GraphQL en Python avec FastAPI et Strawberry, en expliquant les choix d'outils et les bonnes pratiques à chaque étape.

Traefik

· 11 minutes de lecture

La configuration d'un reverse proxy traditionnel comme Nginx exige une intervention manuelle à chaque ajout ou modification d'un service : éditer un fichier de configuration, tester la syntaxe, recharger le process. Dans un environnement conteneurisé où les services démarrent et s'arrêtent fréquemment, cette approche ne tient pas. Traefik lit la liste des services directement dans Docker ou Kubernetes et régénère sa configuration à la volée, sans interruption de service.

Ansible

· 7 minutes de lecture

Configurer une dizaine de serveurs à la main, par des connexions SSH successives, produit des machines qui divergent au fil des interventions et une configuration que personne ne sait reconstruire. Ansible décrit cette configuration dans des fichiers YAML versionnés et l'applique à un parc de machines, de façon reproductible, sans agent à installer sur les cibles.

Ansible : cas pratique zsh

· 8 minutes de lecture

La configuration d'un environnement shell (zsh, oh-my-zsh, plugins, prompt, alias) s'accumule au fil des années sur un poste de travail, sans trace de sa construction. Le jour d'un changement de machine, elle doit être reconstituée de mémoire. Le projet zsh_ansible applique à ce problème les principes présentés dans l'article Ansible : la configuration devient un ensemble de playbooks versionnés, rejouables sur n'importe quelle machine Linux.

Docker : débogage

· 5 minutes de lecture

Déboguer un conteneur diffère du débogage d'une application classique : le processus s'exécute dans un namespace isolé, sans accès direct au shell dans les cas normaux, avec des logs parfois redirigés vers stdout. Les outils Docker exposent l'état interne du conteneur sans nécessiter d'accès SSH.

Kubernetes : certificats

· 6 minutes de lecture

Par défaut, les certificats clients et serveurs générés par kubeadm ont une durée de validité d'un an (dix ans pour les autorités de certification). À l'expiration, les composants du cluster ne peuvent plus s'authentifier entre eux, et le cluster devient inaccessible. Le renouvellement est une opération de maintenance prévisible, à planifier avant l'expiration plutôt qu'en urgence.

Python : Poetry

· 7 minutes de lecture

Un projet Python dépend de dizaines de paquets, eux-mêmes dépendants d'autres paquets. Avec pip et un requirements.txt écrit à la main, rien ne garantit que deux installations à quelques semaines d'intervalle obtiennent les mêmes versions. Poetry regroupe la déclaration des dépendances, leur résolution, leur verrouillage dans un lock file, la gestion de l'environnement virtuel et la publication du paquet dans un seul outil, piloté par le fichier standard pyproject.toml.

Python : Pydantic

· 7 minutes de lecture

Les données qui entrent dans une application (requêtes HTTP, fichiers de configuration, messages) n'ont aucune garantie de forme ni de type. Pydantic, bibliothèque de référence en Python pour ce besoin, valide et convertit ces données à partir de classes annotées avec les types standard du langage, et produit des erreurs détaillées lorsqu'elles ne respectent pas le modèle.