Recherche généalogique de nouvelle génération : La refonte du système de Coutot-Roehrig


Coutot-Roehrig, leader en généalogie successorale en France et deuxième en Europe, a fait appel à Marmelab pour optimiser ses recherches généalogiques.
Contexte
Depuis sa création en 1894, Coutot-Roehrig s'est imposé comme le partenaire privilégié des notaires pour retrouver des héritiers inconnus ou disparus et pour vérifier que l’intégralité des héritiers d’un défunt soit identifiée. Grâce à leur immense base de données d’archives d’état civil, les généalogistes de Coutot-Roehrig enquêtent pour reconstituer des arbres généalogiques et ainsi identifier les ayants droit légitimes afin de régler leur succession.
Le système existant est constitué d’une myriade de bases de données ayant chacune leur propre structure. Cette architecture rend impossible les recherches simultanées dans plusieurs bases. De plus, changer de base nécessite de nombreux clics et amène la perte de la recherche courante. Ainsi, l’objectif principal du projet est de pouvoir requêter facilement toutes les bases avec un moteur de recherche unique.
Un autre inconvénient majeur du moteur de recherche existant est qu’il n’est pas disponible sur mobile, empêchant ainsi les généalogistes de consulter et de croiser les données lors de leurs déplacements réguliers dans les différentes archives.
Coutot-Roehrig a donc besoin de construire un nouveau moteur de recherche, baptisé R², capable d’exploiter les bases de données existantes, afin de garantir que les héritiers soient trouvés rapidement. Ce projet est stratégique, non seulement parce que les notaires demandent un raccourcissement des délais d’enquête, mais aussi parce que les concurrents se dotent eux-mêmes de solutions de recherche performantes.
Processus
Le projet R² débute en septembre 2022 avec un point d’interrogation, car si le problème est clair, la solution l’est moins. De nombreuses pistes technologiques sont à explorer, et à évaluer sur de multiples dimensions (vitesse de requêtage multi-critère, vitesse de requêtage multi-bases, capacité à servir d’entrepôt de données primaires, vitesse d’indexation, etc).
Marmelab débute la mission par un "Sprint 0" de 15 jours permettant de formaliser le besoin, de cartographier les inconnues, de prioriser les expérimentations, et de remplir le backlog du premier sprint de développement.
Ensuite, l’équipe Marmelab conçoit et teste différents modèles de données. Nous procédons à l'indexation d’un échantillon de données et au développement du nouveau moteur de recherche. Nous concevons et réalisons l’interface de recherche en collectant les retours des utilisateurs. L’utilisation d’un processus itératif basé sur une méthode agile nous permet d’adapter l’application aux différences entre les collections de données au fur et à mesure de leur ingestion.
Enfin, nous finalisons le développement avec une phase d'optimisation et d'ajustements pour affiner la gestion de la masse de données et garantir l'exhaustivité des résultats.
Problèmes identifiés
Pendant le développement, nous avons identifié 3 défis clés :
- Volume de données : Plusieurs centaines de millions d'enregistrements à indexer et requêter, bien trop pour que des index multi-base tiennent en mémoire et garantissent des performances acceptables.
- Fiabilité des résultats : Lors d'une recherche, les généalogistes ont besoin que toutes les entrées correspondant à leur recherche soient remontées depuis la base de données. Si une recherche ne retourne aucun résultat, cela constitue également une information importante. Il est donc essentiel que pour une même recherche, les résultats soient idempotents.
- Affichage des images : le moteur de recherche donne accès aux scans haute résolution des documents indexés, pour que les généalogistes puissent vérifier et prouver les faits qu’ils découvrent. Mais le poids de ces images (plusieurs dizaines de Mo chacune) cause des ralentissements d’affichage conséquents.
Solutions
Pour répondre à ces défis, nous avons mis en place une nouvelle stack technique :
- PostgreSQL pour le stockage des données structurées ;
- Azure Blob Storage pour le stockage des documents sous forme d’image ou de PDF ;
- NestJS pour l’API sur laquelle s'appuient les deux applications front ;
- Remix pour le développement de l’application de recherche destinée aux généalogistes ;
- React-Admin pour la console d’ingestion, de paramétrage et de supervision ;
- Azure Container Apps pour le processus de déploiement continu sur Azure.
Concernant le moteur de recherche, il s’appuie sur les capacités de recherche full-text de PostgreSQL. Nous avons choisi de ne pas utiliser ElasticSearch car il privilégie la disponibilité sur la consistance des données, ce qui n’était pas acceptable pour notre cas d’utilisation. Nous avons obtenu des résultats très satisfaisants avec PostgreSQL en ayant un temps de réponse de moins d’une seconde sur des requêtes complexes après quelques optimisations.
Un soin particulier a été apporté à l’amélioration des performances du moteur de recherche pour supporter l’important volume de données, assurant une recherche rapide et fiable. Pour pallier le problème du poids des pages, nous avons mis en place un système de préchargement des images, ce qui a réduit les temps de chargements perçus par les généalogistes.
Pour faciliter l’ingestion et l’indexation de nouvelles données, nous avons créé une interface d'administration pour les responsables de base de données. Une version mobile du moteur de recherche a également été développée. Les généalogistes peuvent désormais consulter et croiser les données disponibles dans R² directement lors de leurs déplacements.
Résultats
R² est en production et les généalogistes le préfèrent largement à l’ancien moteur de recherche. Coutot-Roehrig bénéficie grâce à lui à de nombreux avantages :
- Performance accrue pour la recherche : Une recherche full-text sur une collection de plusieurs dizaines de millions de lignes s’exécute en moins d’une seconde en moyenne, contre plusieurs dizaines de secondes sur l’ancien système.
- Accès en mobilité : En déplacement, les généalogistes n’ont pas besoin d’attendre d’avoir accès à un ordinateur pour faire de nouvelles recherches.
- Satisfaction des utilisateurs : Selon les généalogistes, le moteur de recherche R² est le meilleur du marché. Quant aux responsables de bases de données, ils peuvent ingérer de nouveaux fonds documentaires en quelques jours au lieu de plusieurs mois.
- Réduction des délais de traitement des enquêtes : Les notaires obtiennent des réponses plus rapidement, ce qui les encourage à privilégier Coutot-Roehrig pour les dossiers futurs.
- Facilité de maintenance : Le moteur de recherche peut être mis à jour plusieurs fois par semaine, contre moins d’une fois par an pour l’ancien système (un client lourd nécessitant des mises à jour directes sur les postes des généalogistes).
Le succès du projet a incité Coutot-Roehrig à prolonger notre collaboration, témoignant de leur confiance dans notre capacité à innover et à mener à bien des projets complexes.
Conclusion
La gestion de grandes bases de données et l'évaluation des performances présentent de nombreux défis. Notre expertise des techniques du web et notre approche agile ont permis de transformer le moteur de recherche de Coutot-Roehrig en un outil performant et fiable. Nous avons répondu efficacement aux défis de gestion de grandes bases de données, offrant ainsi une solution optimisée et adaptée aux besoins de notre client.
Vous avez un projet innovant ? Réalisons-le ensemble !