Les coulisses techniques de BlaBlaCar Une architecture logicielle de plus en plus orientée microservices

Historiquement, BlaBlaCar était un site développé en PHP. Mais aujourd'hui, la plateforme technique s'est diversifiée avec beaucoup de Java et Python pour répondre à des besoins spécifiques. "Pour certains backends, il est essentiel d’être en Java, je pense notamment à la base de données Cassandra. Java commence donc à prendre une certaine place dans notre architecture, mais pour l’instant je dirais que 20% du code que nous produisons est en Python, 10% en Java, et 70% en PHP", détaille le CTO de BlaBlaCar. Sur la couche PHP, qui gère notamment la partie frontend du site, BlaBlaCar vient de migrer vers Symfony 2, avec l'aide de SensioLabs - la société fondée par le créateur du framework PHP Fabien Potencier.

Le moteur de recherche ElasticSearch sous le capot

Francis Nappez est le CTO de BlaBlaCar. © BlaBlaCar

Entre les services développés dans les divers langages qu'il utilise, BlaBlaCar a mis en place le moteur de message haute performance RabbitMQ. "L’idée, c’est de décharger au maximum les serveurs de frontend grâce à un process d’asynchronisation des tâches, RabbitMQ jouant le rôle d’étape intermédiaire, le temps que tous les traitements aient bien été réalisés sans ralentir l’expérience utilisateur", explique Francis Nappez.

En termes de bases de données, l’essentiel des informations de BlaBlaCar est stocké sur  le SGBD relationnel MariaDB. Actuellement, le service de BlaBlaCar repose sur 3 clusters MariaDB. Mais autour, divers systèmes ont été mis en place afin de soulager la base relationnelle et d’apporter d’autres possibilités de traitement de données. "Nous utilisons ElasticSearch depuis plusieurs années maintenant. La première version que nous avons installée devait être la 0.19 . Nous avons commencé très tôt car nous avons rapidement estimé qu’il s’agissait d’une solution vraiment innovante et prometteuse" confie le CTO. "Nous avions déployé au départ le moteur de recherche Solr mais certains des problèmes rencontrés n’étaient pas résolus avec cette solution. Nous avons alors misé sur ElasticSearch. Nous ne regrettons absolument pas ce choix car c’est un outil que nous utilisons aujourd’hui de manière intensive, que ce soit pour le moteur de recherche du site, le backoffice l’exploite à très grande échelle."

Redis pour le cache, Cassandra pour la messagerie

Outre ces deux briques clés, les architectes de BlaBlaCar ont opté pour Redis afin d'assurer les stockages de type clé/valeur,  pour le cache persistant ou des compteurs divers. Mais aussi pour Couchbase pour toutes les données relatives aux sessions. Une solution qui présente "une très bonne disponibilité et de bonnes performances" selon le directeur technique. La dernière brique à avoir fait son apparition dans l'architecture BlaBlaCar : la base de données NoSQL Cassandra. "Toute la messagerie que nous proposons aux utilisateurs de notre service fonctionne sur Cassandra", précise Francis Nappez. "Nous avons observé que le volume des échanges de messages était de plus en plus important entre nos membres et que nous devions mettre en place une solution capable de monter en puissance d'un point de vue technique."