- Les files d’attente Postgres sont intéressantes, mais si elles ne sont pas dominantes, c’est à cause de l’idée largement répandue que d’autres technologies de queue offrent une plus grande scalabilité
- Des entreprises comme webapp.io ont choisi des files d’attente Postgres en privilégiant la simplicité opérationnelle, la maintenabilité et la familiarité plutôt que la scalabilité
- Composants d’une technologie de file d’attente Postgres
- notifier et écouter les nouvelles tâches (
pub/sub) ainsi que l’exclusion mutuelle (row locks)
- ces deux éléments sont disponibles depuis Postgres 9.5, sorti en 2016
- L’auteur réfute l’idée répandue dans l’industrie selon laquelle utiliser Postgres de cette manière serait un « hack », et soutient que Postgres n’est pas une technologie de queue au rabais
- Des outils de queue comme Redis, Apache Kafka, RabbitMQ et Amazon SQS ont traditionnellement été choisis pour traiter les tâches de longue durée
- Critique de l’obsession du secteur technologique pour la « taille à l’échelle », au prix de la simplicité, de la facilité de maintenance et de la réduction de la charge cognitive des développeurs
- L’auteur propose, lors des choix technologiques, de prendre en compte les technologies déjà utilisées et bien comprises
- Il recommande de choisir par défaut une « technologie ennuyeuse » déjà en place et bien maîtrisée
- Présentation du concept de « construire sa porte de sortie », c’est-à-dire que le code applicatif chargé du traitement des tâches doit être indépendant de la queue
- L’auteur conclut en encourageant les autres à envisager une technologie de queue avec Postgres et à faire d’une « technologie ennuyeuse » leur choix par défaut
1 commentaires
Avis Hacker News
SELECT FOR UPDATE SKIP LOCKEDest une approche simple qui fonctionne avec tous les frameworks ORM/Query DSL.LISTEN/NOTIFYpour faire de PostgreSQL un bus pub/sub est queLISTENest une fonctionnalité de session, donc incompatible avec le pooling de connexions au niveau des instructions.SKIP LOCKEDpourVACUUM, les tâches différées, les réessais, les mises à jour d’état et le mode « au moins une fois ».