Les coulisses techniques de BlaBlaCar BlaBlaCar opte pour une exploitation automatisée

Pour accompagner la montée en charge et gérer son architecture hybride, donc hétérogène, Francis Nappez a misé sur une automatisation des tâches d'administration et de provisioning des serveurs. "Provisionner des machines se réalise aujourd’hui par scripts, en déroulant des stratégies en fonction des rôles que vont tenir les machines. Nous sommes capables de dire que tel serveur, par son adresse IP, son adresse MAC... doit jouer tel ou tel rôle dans notre architecture", explique le directeur technique de BlaBlaCar.  Pour gérer ses déploiements, l'équipe technique de BlaBlaCar a fait le choix des solutions Foreman pour le provisioning et Chef pour la gestion des configurations. "Cela peut être un serveur Web au rôle relativement simple, cela peut-être une base de données. Dans ce cas, il y a tout un scénario pour installer la machine, la synchroniser au niveau des données, mettre en place le monitoring, déclarer la disponibilité pour son utilisation par l’application, etc", égraine Fr.ncis Nappez.

Déploiement automatisé des machines virtuels par rôles

Photo prise dans un data center de BlaBlaCar. © BlaBlaCar

Avec Foreman et Chef, BlaBlaCar a pu complètement automatiser le déploiement de machines par rôles, que ce soit sur ses serveurs matériels, virtualisés (sous VMware) ou des instances Amazon Web Services. "Chef est un référentiel, mais aussi une manière de travailler", souligne le responsable. "Tout le monde connait très exactement ce qu’il y a sur chaque machine. Tout est décrit dans les scripts, le process automatisé est lisible, transparent, tout est traçable. Pour une équipe d'infrastructure qui compte aujourd’hui une quinzaine de personnes c’est très sain d’avoir cette base de code commune, solide, afin de pouvoir gérer toutes ces machines."

Avec son équipe d'architectes, Francis Nappez consolide aussi sa plateforme. "Ce que nous souhaitons faire maintenant, c’est automatiser l’installation de racks entiers. Notre croissance nous amène en effet aujourd’hui à devoir déployer des racks de serveurs complets." Objectif : ne plus avoir à se déplacer sur site pour mettre en production un nouveau rack. Celui-ci est acheté à un prestataire local qui l'installe physiquement dans le data center. Ensuite, l'idée est de pouvoir gérer à distance toutes les configurations et installations de serveur de manière automatisée. "Une fois un rack connecté au réseau, on veut pouvoir déployer l’intégralité des serveurs en fonction de leurs rôles. Pour réaliser cette tâche,  nous sommes en train d’ajouter Collins [le projet de tumblr] pour mettre tous les nouveaux serveurs en parking", indique Francis Nappez.

CoreOS envisagé pour supporter les containers

Pour la suite, BlaBlaCar envisage un OS encore plus générique, comme CoreOS, et de pouvoir déployer des containers dessus. "L’objectif est de devenir complètement agnostiques en termes hardware, et d’avoir une procédure applicable aussi bien sur notre cloud qu'AWS", précise le directeur technique. 

Rocket mis en production avant la fin de l'année

Pour le déploiement des applications elles-mêmes, la prochaine itération de l'infrastructure BlaBlaCar sera basée sur les containers. "Cela va bien dans le sens de ce que nous cherchons à faire, c'est-à-dire être étanche aux enjeux du matériel et gérer des serveurs physiques à Paris ou à Miami, des instances Amazon Web Services à Singapour et à Sao Paolo. En fonction de la position géographique, nous prendrons ce qu’il y a de plus évident et de plus facile à gérer", souligne Francis Nappez. "Dans cette optique, nous allons déployer en place Rocket [le fork de Docker développé par l'équipe de CoreOS] pour pouvoir déployer un service, un container de base de donnée ou de serveur web à n’importe quel endroit de la même manière."

La première étape de cette démarche : transformer les applications BlaBlaCar afin qu'elles soient plus orientée services qu’elles ne le sont déjà. "Nous travaillons en permanence afin de découper plus finement notre application. Ensuite, nous voulons déployer des services dans des containers en fonction des ressources machines nécessaires, de la position géographique. Nous sommes en cours de déploiement dans notre datacenter parisien et avant Noël, nous auront mis en place Rocket."