Concevoir une librairie de traitements asynchrones distribués et robustes
Architecture & Sécurité
INTERMEDIATE
Chez Mirakl, nous exécutons des millions de tâches asynchrones pour gérer toutes sortes de cas métier, des mises à jour de catalogues à la gestion de la facturation. Kafka n’est pas adapté quand le traitement est long, Spring Batch trop lourd à mettre en place, il nous fallait une autre technologie. Nous avons créé lib-async-task pour garantir l’exécution résiliente des tâches asynchrones dans un contexte de microservices élastiques multitenants dans le cloud, même en cas de restart, et ce n’est pas juste le bingo des buzzwords.
Pourquoi une librairie ? Quels sont les trade offs dans le design ? Quelques features de la librairie :
- parallélisme tout en respectant l’ordre de création et l’exécution séquentielle au besoin
- résilence et garantie d’exécution des tâches
- fairness entre les tenants et adaptation semi-automatique à la charge
- scale dynamiquement à plusieurs dizaines de nodes
- infrastructure requise minimale pour faciliter l’intégration