Comment eBay a automatisé ses évoutions de plate-forme

eBay a mis en place un pipeline pour automatiser ses évolutions de frameworks et d’infrastructure. Comment se présente le système ?

Comment automatiser les évolutions de plate-forme ? En utilisant Quartz. Ce planificateur de tâches fait en tout cas partie de la solution qu’eBay a développée pour ses besoins internes.

Ces besoins englobent « plus de 3000 » applications portant l’activité du groupe. Ils se déclinent sur deux grands axes : l’infrastructure et les frameworks.

Face à la diversité des workflows impliqués (migrations, upgrades…), eBay a adopté une architecture modulaire. Le pipeline est extensible et chaque étape est une tâche autonome réutilisable.

Au cœur du système, l’orchestrateur, qu’on sollicite par API, sélectionne les flux adaptés. C’est-à-dire des séquences préconfigurées de tâches qui peuvent aller « piocher » divers composants dans l’écosystème eBay. Il assure la journalisation et la gestion des exceptions.

architecture eBay plate-forme automatisation

Les flux sont définis sous forme de fichiers YAML avec des classes de tâches. L’orchestrateur assure la persistance du contexte de chaque tâche et le communique à la suivante. Cette méthode garantit une exécution indépendante. Elle facilite aussi la relance de tâches.

exécution de tâche

Quartz gère le déclenchement des tâches. eBay l’a choisi en particulier pour son architecture distribuée permettant d’exploiter autant que possible les ressources de calcul. Ainsi que pour sa capacité à mettre les tâches en pause.

Quartz

Au démarrage de l’orchestrateur, le gestionnaire de flux en précharge les définitions et active les moniteurs de tâches. Lorsqu’il reçoit une requête, il stocke le flux correspondant dans la base de données. Quartz déclenche alors la première tâche. Une fois l’exécution finalisée, le moniteur se déclenche. Il assure la persistance du contexte de la tâche et demande au gestionnaire de soumettre la tâche suivante à Quartz. Et ainsi de suite.

Illustration principale © Ingvar Bjork – Shutterstock