Un moteur d’indexation au pays des événements et des microservices. Comment maintenir à jour un index Elasticsearch quand le ownership des données à indexer est distribué à travers de multiples micro-services? Comment requêter un index sur la base de paramètres qui sont, eux aussi, fournis par d'autres services? Comment faire quand l’ordre de réception des messages de mise à jour de l’index n’est pas forcément l’ordre d’insertion logique des données? Pour répondre à ces questions, je raconterai l’histoire de Jon et Ygritte en suivant un ensemble de parcours utilisateurs emprunté par des millions de personnes tous les jours sur nos plateformes. Nous verrons comment orchestrer Kafka, Symfony et ElasticSearch pour répondre à une volonté de découplage des micro-services et à une problématique de maintenance en temps réel d'un index. A chaque étape, je présenterai les différentes options envisagées, nos contraintes (traffic, performance, robustesse) et les choix que nous avons fait dans une logique agile de développement itératif.
Commentaires