Avis sur l'intérêt de LISP sur projet
Bonjour à tous,
Je vous soumets un problème d’opportunité : dans un cadre (semi) professionnel, je m’intéresse à un service d’authentification (qui est une partie d’un projet). Je pense que LISP serait un bon candidat pour l’écrire (en passant par SBCL).
Voici mes réflexions / la situation :
- LISP est éprouvé, « efficace » (en fonction du sens que l’on met derrière) et permet une compilation vers les principaux OS. Sa philosophie technique semble la plus « souple ».
- Dans mon cas, il serait un processus lancé comme enfant d’un autre (le principal – supervisant les autres – étant en Python). Mon processus programmé en LISP aurait un seul canal pour les commandes et un pour les résultat. Pour le processus parent, chaque requête d’identification dispose d’un numéro (aléatoire ou incrémentiel, peu importe : il doit être unique à un processus LISP à un moment donné). Ce numéro est retourné par LISP avec la réponse (identifiant trouvé / pas trouvé et éventuellement des droits associés ou un ).
- LISP se baserait sur un fichier à parcourir avec la liste des identifiants + mot de passé hashé + sel (et éventuellement des règles supplémentaires, en faisant des copies de sauvegarde régulières). Il garderait en RAM les correspondances par fréquence (par exemple, les nième derniers identifiants trouvés). Cette liste serait lue en priorité puis, si l’identifiant n’est pas trouvée, au sein du fichier d’identifiants source. L’intérêt étant de favoriser les accès les plus fréquents.
- Idéalement la configuration de ce « service » (tous les processus entre eux) évolue « à chaud » : ne pas à avoir à redémarrer les processus et prendre en compte des modifications dans le fonctionnement même du service d’identification ou d’optimisations diverses. J’ai cru comprendre que LISP était adapté à ce genre de problématique ?
- Mon programme LISP doit pouvoir gérer des règles parallèles à l’identification (par exemple une plage horaire d’autorisation ou d’interdiction de connexion).
- Mon fichier source d’identifiants fait une taille limite (une centaine de Mo a priori, comprenant toutes les règles associées à chaque compte). Davantage d’identifiants à stocker, provoquent le démarrage d’un nouveau processus LISP avec un fichier source d’identifiants supplémentaires. Les processus ne seront pas nécessairement sur la même machine.
- Le processus principal envoie les commandes d’ajout, de modification ou de suppression de comptes, modifie les règles, peut ajouter un « format » de règles. Pour l’identification, il envoie à tous les processus enfants LISP actifs, la même requête (et attend une réponse positive ou négative des processus enfants, pour décider si le couple identifiant et mot de passe hashé a été trouvé au moins une fois).
Vos avis et retours sur l’intérêt de LISP dans un tel cahier des charges me seraient très utiles.
Bonne journée à tous,
Julien.