Valiz : Moteur de recherche open-source

Aller au contenu | Aller au menu | Aller à la recherche

lundi, janvier 29 2007

Réflexion sur une architecture externe

Le fait

Je l'ai déjà dit assez souvent, mais ça ne fait pas de mal de le répéter : un moteur de recherche, ça prend des ressources, beaucoup de ressources (humaines et systèmes). Des serveurs puissants sont requis, et il en faut en nombre pour garantir un minimum de réactivité pour l'indexation et la prise en compte de modification.

Contribuer efficacement

Valiz visant le 100% open-source (donc gratuit, libre, aucun profit financier, etc..., le financement de ces serveurs sera un beau problème, j'espère que les dons en couvriront une partie et peut-être même qu'un ou plusieurs partenaires seront intéressés à soutenir le projet (financièrement ou matériellement).
Pour l'infrastructure, j'en avait déjà vaguement parlé dans un précédent article, mais j'ai eu récemment une autre idée : créer une architecture atome Pourquoi atome ? Parce que ça y ressemble :

  • Un noyau avec les bases de données et serveurs pour les résultats à la volée. C'est toujours le noyau qui affiche le résultat.
  • Des électrons qui gravitent autour du noyau : des serveurs (ou plus précisément des ressources serveurs) mises à disposition par des particuliers, entreprise ou autre association qui désire soutenir Valiz et qui auraient un ou plusieurs serveurs qui tournent à vide ou presque.

Serveur électron

(Le nom sert juste de lien avec l'atom, c'est juste un modèle, un nom plus convenable sera probablement trouvé).
Ces serveurs font le lien entre le web et le noyau, ils peuvent servir de ValizBot (en mode indexation, mise à jour,... ou encore 100% réservé à son site) ou de générateur de cache (mise à jour des requêtes populaires, pré-formatage,...),. Cela permet non seulement d'alléger la charge du noyau, mais également d'augmenter de manière proportionnel à sa popularité sa réactivité.

Problème de sécurité

Valiz est open-source et facilement modifiable, mais il ne faut en aucun cas que les paramètres d'indexation et autres critères puissent être modifiés extérieurement. Un serveur satellite signifie un accès au noyau ainsi que des accès sql (très limités), pour éviter des problèmes, il sera impératif de valider les accès un par un avec vérification des intentions de la personne souhaitant contribuer.
Ensuite vient le problème de l'environnement installé sur le serveur permettant d'exécuter ValizBot ou autre générateur de cache. Il ne faut surtout pas qu'il soit en langage interprété (beaucoup trop facilement modifiable par le propriétaire pour avantager ses sites ou injecter n'importe quoi dans les bases de données. Je pense qu'un langage compilé comme le C++ a davantage sa place. Ensuite il faut simplifier la mise à jour. Pour ça, je pense à une gestion par paquet binaire (dpkg et rpm) et pour ce qui est de l'auhentification, l'astuce reste à trouver (probablement sous la forme d'un clef).

Conclusion

Je pense que ce concept pourrait donner pas mal de potentiel à Valiz, néanmoins sa conception devra faire face à énormément de défis. Qu'en pensez-vous ?

jeudi, janvier 11 2007

Quelle infrastructure pour le meilleur rapport prix/performance/fiabilité ?

Catégories de serveurs

Dans l'infrastructure de Valiz je vois...

  • Les serveurs SQL exploités par ValizBot (liste d'attente, résultats de l'exploration,..)
  • Les serveurs pour nourrir ValizBot
  • Les serveurs matheux qui traitent les résultats obtenus par ValizBot pour pré-formater les résultats et autres algorithmes
  • Les serveurs SQL utilisés pour construire les requêtes
  • Les serveurs Web qui assemblent les résultats SQL et/ou issus du cache
  • Les serveurs de cache
  • Les annexes (serveurs dns, mail, load balancing, monitoring, backup,...)

Bref, c'est toute une famille à concevoir et il faut surtout que ce soit totalement modulable afin de simplifier l'évolution : agrandissement, changement de mode de fonctionnement, ...

On regarde de plus près...

À présent que les catégories de serveurs composants l'infrastructure sont définies, examinons le tout de plus près.

Serveurs SQL de ValizBot

Ces serveurs ne sont sollicités que localement par les serveurs ValizBot pour lui fournir les adresses à explorer, mettre à jour ou à découvrir, il y a d'une part cette liste, mais aussi les résultats des sitemaps, robots.txt et autre, et d'autre part l'index brut : tout ce qui est retenu par ValizBot. Ces bases sont donc énormes mais relativement peu sollicitées.
Au début, cette catégorie pourrait être réunie sur un gros serveur, mais par la suite elle serait probablement répartie sur un ou plusieurs gros NFS (pour cet usage, du SATA II suffirait) avec un gros serveur maître.

Serveurs pour ValizBot

Valiz sera conçu de manière à pouvoir disposer de plusieurs ValizBot simultanément sur la toile. La limite concernant le nombre provient principalement de la catégorie précédente. Ces serveurs n'ont pas besoin de beaucoup de puissance.

Serveurs matheux

Ces serveurs seront en quelque sort le cerveau de Valiz, et un cerveau ça réfléchit vite et avec une bonne mémoire svp ! Ils se servent dans le serveur SQL de ValizBot, traitent les données et les renvoies aux serveurs SQL des requêtes après épluchage.

Serveurs SQL

Là évidemment, plus c'est fort mieux ça, il faudrait également des disques puissants (10 ou 15 krpm), je pense à du SAS/SCSI ou encore à du raptor... Je pense que pour de bonnes performances il faut exploiter plusieurs serveurs par requête sql (il me semble que Google exploite 1000 nodes par requête). Chaque serveur aurait une petite tranche de l'index (10-50 go) et se chargerait de traiter ses données pour les mettre en commun avec les autres par la suite. Il me semble que pgtool fait cela, je vais encore me documenter. Ces serveurs servent également pour tous les services externes proposés par Valiz.

Serveurs Web

C'est la face visible de l'infrastructure pour les utilisateurs : le site (interface de recherche et documentation). Ces serveurs mettent en forme les données récupérées et les affiches. Ils exploitent avant tout le cache et sinon envoie et récupère les données des serveurs sql. Si le cache de la requête n'existe pas ils le crée et le place sur les serveurs de cache.

Serveurs de cache

Comme toutes les autres catégories, il faudra explorer à fond la configuration, mais ça pourrait se résumer à un NFS.

Serveurs annexes

Ces serveurs ne sont pas des bêtes de puissance, mais sont indispensables au fonctionnement de Valiz.

Conclusion

C'était une première ébauche simplifiée de l'infrastructure possible de Valiz, les valeurs fondamentales devraient être : fiabilité, performances et évolutivité.
Bien sûr, tout dépend des moyens à disposition et du succès rencontré.