Skip to main content

ADR 010 : Choix du Moteur de Recherche

Contexte

Dans le cadre du projet OpenENTv3, il est nécessaire de sélectionner un moteur de recherche pour stocker et interroger des données indexées. Les options évaluées incluent OpenSearch, Elasticsearch et Apache Solr.

Besoins spécifiques

  1. Support d'OpenID Connect et Intégration Keycloak : Le projet OpenENTv3 requiert une gestion de l'authentification centralisée utilisant OpenID Connect avec Keycloak.
  2. Sécurité au niveau des données : Un plugin de sécurité est indispensable pour garantir une gestion fine des autorisations et des rôles.
  3. Flexibilité et Coûts de Licence : La solution choisie doit être libre d'utilisation, sans restrictions de licence pour un usage à grande échelle.

Options Évaluées

  1. Elasticsearch

    • Avantages :
      • Moteur de recherche mature, bien supporté, avec une communauté large.
      • Nombreux plugins et intégrations tierces pour diverses fonctionnalités avancées.
    • Inconvénients :
      • Changement récent dans la licence (SSPL puis Elastic License), rendant le projet incompatible avec un usage open source complet.
      • Manque de support natif pour OpenID Connect sans licence commerciale.
      • Absence de compatibilité garantie avec les plugins de sécurité requis (dépôt de la suite Open Distro for Elasticsearch).
  2. Apache Solr

    • Avantages :
      • Complètement open source et Apache License 2.0.
      • Support robuste pour le text search avec des fonctionnalités avancées.
    • Inconvénients :
      • Intégration avec OpenID Connect non native, ce qui nécessiterait des développements supplémentaires.
      • Support moins mature pour les cas d'usage nécessitant un contrôle strict des autorisations par utilisateur et rôle.
      • Pas de plugin de sécurité intégré similaire à OpenSearch Security pour gérer l'authentification centralisée.
  3. OpenSearch

    • Avantages :
      • Basé sur une version libre d’Elasticsearch et complètement open source.
      • Supporte nativement OpenID Connect et l'intégration Keycloak via le plugin OpenSearch Security.
      • Permet une configuration fine de la sécurité des données et des autorisations par utilisateur et par rôle.
    • Inconvénients :
      • Communauté et écosystème plus récents que ceux d'Elasticsearch.
      • Certains plugins Elasticsearch ne sont pas compatibles directement avec OpenSearch.

Décision

Choix : OpenSearch

Le choix de OpenSearch est motivé par sa compatibilité native avec les exigences de sécurité et d’authentification, tout en restant open source et sans frais de licence. Le plugin OpenSearch Security permet d'utiliser OpenID Connect pour une intégration transparente avec Keycloak, répondant aux besoins de gestion d'accès dans OpenENTv3.

Conséquences

  1. Intégration OpenID Connect Simplifiée : Le plugin de sécurité d'OpenSearch simplifie l'intégration avec Keycloak et facilite la gestion centralisée des utilisateurs et des permissions.
  2. Interopérabilité des Plugins : Bien que OpenSearch soit compatible avec les plugins de l’écosystème Open Distro, certains plugins tiers d’Elasticsearch ne sont pas supportés. Cela nécessite de valider les plugins critiques pour OpenENTv3 avant adoption.
  3. Maintenance : L’équipe doit surveiller activement les mises à jour d'OpenSearch pour garantir la compatibilité à long terme, tout en veillant à l’adoption de nouvelles fonctionnalités de sécurité et d’authentification au fil du développement du projet.