BT

Diffuser les Connaissances et l'Innovation dans le Développement Logiciel d'Entreprise

Contribuez

Sujets

Sélectionner votre région

Accueil InfoQ Articles Startup Architecture : Alkemics

Startup Architecture : Alkemics

Favoris

En préparation de l'événement Azure Camp qui a lieu cette semaine, InfoQ FR a pu rencontrer les startups qui participent à la conférence afin de faire un retour d'expérience sur leurs systèmes de production. Voici le premier épisode de cette série, consacré à Alkemics. Antoine Perrin, son CTO répond à nos questions.

InfoQ FR : Bonjour Antoine, pouvez-vous vous présenter et nous introduire votre startup, Alkemics ?

Antoine Perrin : Bonjour, Antoine Perrin, je suis co-fondateur et CTO d'Alkemics. Alkemics propose une plateforme de normalisation et enrichissement des données produits aux acteurs de la grande distribution. Grâce à cette plateforme, nous pouvons proposer des services de moteur de recherche, substitution et recommandation basés sur la forte compréhension des données produits et des interactions des utilisateurs avec ces produits.

InfoQ FR : Quels sont les gros challenges techniques pour Alkemics ?

Antoine Perrin : Nous faisons face à deux types de challenge techniques :

  • Le premier est la complexité de notre modèle de représentation des données. Ce modèle doit être à la fois riche et dense pour prendre en compte la diversité des produits de nos clients tout en restant normalisé pour être exploitable directement. C'est dans ce contexte que nous en sommes venus à considérer les bases de données graphes.
  • Le second est la gestion d'importants volumes de données : récupération, traitement, stockage et exploitation en temps réel.

InfoQ FR : Pouvez-vous nous décrire votre infrastructure de production actuelle ?

Antoine Perrin : Notre infrastructure de production est constituée de plusieurs services qui communiquent via un broker RabbitMQ. La plupart des services sont écrits en python qui convient très bien pour tout ce qui est traitement du language naturel et Machine Learning (grâce aux nombreuses librairies open source - ntlk, scikit-learn, scipy, numpy).

Nos APIs sont exposées via des serveurs web nginx + uWSGI + python et nos services communiquent avec des backends variés en fonction des besoins :

  • Couchbase pour nos vues matérialisées et le cache distribué ;
  • ElasticSearch pour nos moteurs de recherche ;
  • Cassandra pour le stockage de timeseries d'analytics et besoins spécifiques en termes d'accès aux données (ex : vues matérialisées de matrices pour la recommandation).

Notre brique Core est constituée essentiellement de Titan, une base Graphe distribuée construite par dessus un backend de stockage Cassandra et un backend d'indexation ElasticSearch.

Enfin, notre pipeline d'analytics est constituée de jobs PIG que nous exécutons sur un cluster HDinsight (solution Hadoop-as-a-service de Microsoft Azure). Les résultats sont ingérés dans Cassandra pour le reporting et l'analytics.

Pour le monitoring, nous avons un mix de Nagios et Logstash + ElasticSearch + Kibana.

InfoQ FR : Vous semblez gérer des problématiques de clustering et de performances sur vos stockages de données, est-ce critique pour votre activité ? Peut-on avoir une idée du volume de données sur lequel vous travaillez ?

Antoine Perrin : La question du stockage et de la performance du requêtage des données est critique pour toute activité qui traite de gros volumes en quasi-temps réel. Du point de vue purement économique, cela permet de traiter plus de data avec moins de ressources. Du point de vue de la performance, on peut gagner énormément en faisant attention à la façon dont est stockée la donnée dans notre graphe. Par exemple, on évitera les accès réseau en colocalisant les données propres à des noeuds reliés et susceptibles d'être explorés dans une même requête. Nous travaillons quotidiennement sur des volumes de 300 à 400 GB, avec un historique de plusieurs TB.

InfoQ FR : Parmi les offres de postes actuellement ouverts chez vous, deux sont dédiées au domaine de la sécurité. Ces données sont-elles sensibles ?

Antoine Perrin : Les données que nous stockons sont pour la plupart les données de nos clients (enseignes de grande distribution et marques nationales). Parmi ces données, certaines sont publiques par exemple les données sur les produits, et d'autres sont privées, notamment les données d'interactions des utilisateurs. Une donnée privée est une donnée sensible. Nos clients nous choisissent parce que nous attachons une grande importance à la sécurité de leurs données.

InfoQ FR : Cassandra est au coeur de votre architecture, qu'est-ce qui vous a permis de choisir cette base plutôt qu'une autre ? Qu'apporte son couplage avec Titan ?

Antoine Perrin : Comme évoqué tout à l'heure, nous avons trois utilisations principales de Cassandra : analytics aggrégées en timeseries, vues matérialisées pour la recommandation et en tant que backend pour Titan.

De façon générale, Cassandra est le roc de notre infrastructure. La techno est ultra robuste et très bien outillée. Ces points ont joué très fort dans le choix de Cassandra.

Cependant, l'essentiel est de choisir la base adaptée à son usage. Ne pas avoir à contraindre la base pour des cas d'utilisation tordus facilite grandement l'administration. Cassandra convient très bien pour le stockage et requêtage de timeseries. Le modèle de stockage des données dans Cassandra permet de stocker dans un même row, l'évolution d'une métrique au cours du temps, puis de requêter des ranges de date très simplement.

Titan est un moteur de graphe agnostique en termes de backend et permettait à l'époque de choisir entre Cassandra ou HBase. Par souci de cohérence de la stack, et aussi par simplicité opérationnelle, nous avions choisi Cassandra. Le couplage de Titan avec Cassandra confère à notre graphe le meilleur des deux mondes : une persistence alliant robustesse, haute disponibilité, scalabilité linéaire, etc... et une interface graphe très expressive, particulièrement adaptée aux modèles de données fortement connectés.

InfoQ FR : L'adoption du cloud par opposition à des hébergeurs classiques était-elle évidente pour vous, et ce choix a-t-il eu des répercussions sur votre architecture et votre manière de travailler ?

Antoine Perrin : Nous avons débuté directement avec un hébergement dans le cloud, la question ne s'est donc pas posée au début. Sans legacy avec un hébergeur classique, notre architecture a été pensée pour le cloud en nous efforçant de suivre les bonnes pratiques grapillées sur les blogs tech. Pour aller vite et itérer sur des technos, c'est parfait.

InfoQ FR : Quelles évolutions d'architecture et de production envisagez-vous dans un futur proche ?

Antoine Perrin : Dans les grandes lignes :

  • Découpler notre architecture encore plus, dans un esprit microservices ;
  • Passer sur docker pour tous ces services ;
  • Maintenir et renforcer notre graphe : Titan va bientôt faire la release de la version 0.5, nous avons actuellement la version 0.4.4 en production ;
  • Passer sur Spark pour le datamining ;
  • Mettre en place un accès HIVE / SHARK à la donnée brute pour l'équipe BI ;
  • Et c'est déjà pas mal !

InfoQ FR : Vous avez quelques projets hébergés sur Github/CodePlex/etc, pouvez-vous nous donner quelques détails sur ces projets et sur votre implication dans l'open-source ?

Antoine Perrin : Nous avons deux focus principaux en termes de projet open-source, les technologies GraphDB et l'écosystème Azure. Nous commençons tout juste à contribuer publiquement à ces deux écosystèmes, le meilleur est à venir ! Sur github aujourd'hui :

  • graphalchemy : un Object Graph Mapper écrit en python, compatible avec l'ensemble des bases de données graphe Blueprints (Titan, Neo4j, etc...). L'idée est de fournir une API similaire à celle de SQLAlchemy pour interagir avec les graphdb, via les endpoints REST. Cette version est encore très early stage.
  • talend-titan-connector : un connecteur Talend que nous avions développé lors de notre migration depuis des bases SQL / MongoDB vers Titan. Nous utilisons maintenant un ETL maison, ce projet n'est plus maintenu.
  • learning-svm-struct : un fork d'une librairie de machine learning que nous avons utilisé pour un projet de recherche académique.
  • à venir très prochainement, deux librairies de tooling autour de la plateforme HDinsight (Hadoop-as-a-service de Microsoft Azure) qui facilitent l'interaction avec la plateforme pour les dev/ops, notamment pour les utilisateurs linux.

Merci Antoine d'avoir répondu à nos questions !

 

Inscrivez-vous dès à présent à l'événement Azure Camp qui a lieu ce mardi 24 juin.

Evaluer cet article

Pertinence
Style

Contenu Éducatif

BT