Les coulisses techniques de Dropbox

Les coulisses techniques de Dropbox Confronté à une montée en charge sans précédent, le spécialiste du stockage de fichier en mode cloud a décidé de réinternaliser en partie ses systèmes hébergés jusqu'alors chez AWS. Le point sur sa nouvelle infrastructure.

Fondé en 2008, Dropbox revendique 500 millions d'utilisateurs au niveau mondial, dont 375 millions en dehors des Etats-Unis. Depuis quelques années, la société basée à San Francisco a effectué un virage stratégique. Ciblant jusqu'alors avant tout le grand public, elle s'attaque désormais au marché de l'entreprise. Plus de 8 millions d'organisations ont recours à son offre de stockage de fichiers en mode cloud. Une montée en puissance qui a amené Dropbox à renforcer la robustesse de sa plateforme en se dotant d'une infrastructure propre. Au départ, l'éditeur avait en effet fait le choix du cloud public pour aller plus vite... Le cœur de son service, à savoir le stockage de fichiers, reposait historiquement sur Amazon Web Services (AWS)

Le projet de nouvelle infrastructure a été lancé fin 2013. Nom de code du chantier : Magic Pocket. Deux ans et demi après, en mars 2016, Dropbox annonçait que 90% des données de ses utilisateurs étaient hébergées sur ses propres serveurs.

Optimiser le ratio performance / coût de l'infrastructure

Aditya Agarwal est le CTO de Dropbox. © Dropbox

Au-delà des gains de performance technique attendus, Dropbox entendait dans le même temps réaliser des économies de coûts. Sur AWS, son système devait compter sur des gabarits de machine (Amazon S3) avec des profils donnés, à la fois en termes de RAM, de stockage, de CPU et de cadence de processeur. Des gabarits donc assez standard, et par conséquent pas toujours bien optimisés pour ses besoins en matière de traitement. "L'idée était de partir sur des machines mieux adaptées à notre problématique, avec une capacité de stockage plus importante et moins de CPU par exemple", explique Aditya Agarwal, CTO de Dropbox.

Pour améliorer encore les traitements, et in fine rationaliser les ressources machines et les coûts, Dropbox comptait également sur une couche logicielle spécialement taillée pour la configuration matérielle retenue. D'où une réécriture de la logique applicative de Dropbox (initialement développée en Go) en Rust. "C'est un langage qui consomme beaucoup moins de mémoire pour gérer le stockage en bloc", indique-t-on chez Dropbox. Sur ce point, Aditya Agarwal n'hésite pas à faire le parallèle avec le mode de conception d'Apple. "Dropbox est un peu l'iPhone du stockage de fichiers, notre philosophie étant en effet d'optimiser les couches logicielle et matérielle, l'une par rapport à l'autre", pointe le CTO.

Pourquoi Dropbox a-t-il opté pour le stockage en bloc ? D'abord parce qu'il s'agit d'un modèle adapté à une infrastructure de stockage massivement distribuée et "scale-out", c'est-à-dire à travers laquelle de nouvelles baies peuvent être ajoutées à l'infini en fonction de la montée en charge. "Mais c'est aussi un environnement intéressant en matière de sécurité car il permet de séparer les fichiers de la manière dont ils sont stockés physiquement. Cela rend le système plus difficile à compromettre", ajoute Aditya Agarwal. En vue d'affiner encore le ratio performance/coût, Dropbox commence également à avoir recours au stockage SSD. Des expérimentations sont aussi réalisées en matière de disques SMR (pour Shingled Magnetic Recording) dans l'optique d'améliorer encore la densité du stockage (voir aussi l'interview de Preslav Le sur Infoq).

Un système matériel et logiciel personnalisé

Dans le cadre du projet Magic Pocket, les systèmes matériels déployés par Dropbox sont donc, eux-aussi, personnalisés. Ils sont conçus en lien avec des constructeurs d'équipements, notamment asiatiques. Une fois designées, les baies sont installées au sein de data centers situés aux Etats-Unis, et suffisamment espacés les uns des autres pour éviter les pertes de données, en cas de catastrophe naturelle par exemple. Des centres de données qui ne sont pas construits par Dropbox, mais mis à disposition par des prestataires. 

AWS demeure utilisé comme infrastructure en Europe

Disposant désormais de sa propre infrastructure, Dropbox a dû faire le délicat apprentissage de la planification des capacités. La société a aussi mis au point son propre moteur de capacity planning. Elle dispose de datascientists et d'experts en Analytics qui ont pour mission de prédire les besoins en ressources informatiques, anticiper leur répartition entre les centres de données, pour plusieurs types de workload... "Il s'agit aussi d'évaluer l'évolution du marché des différents segments de matériel, anticiper les courbes de prix des technologies de stockage, mais aussi les mouvements d'Intel et AMD en matière de puce...", précise Aditya Agarwal. En aval, toute la chaîne d'approvisionnement en équipements et composants informatiques a été mise en place. Des ingénieurs hardware, réseau... et des acheteurs ont été recrutés. 

En termes d'économie, quel est le bilan du projet Magic Pocket ? "Il est à la hauteur de ce que nous attendions", affirme le CTO de Dropbox. "Je ne peux pas donner d'indicateurs précis. Mais l'annonce réalisée en juin que nous avions un cash flow positif a été réalisée trois à quatre mois après l'annonce du projet Magic Pocket. Ce n'est pas un hasard." AWS est-il pour autant abandonné ? La réponse est non. Le cloud d'Amazon demeure d'actualité. Il reste même une brique clés de la stratégie de croissance de Dropbox puisqu'il est utilisé pour le premier hébergement proposé par le service en dehors des Etats-Unis - qui se situe en Europe dans les data centers d'Amazon en Allemagne.

Un réseau mondial pour booster la performance

Quant aux nouveaux systèmes Magic Pocket, ils ont été installés dans des data centers basés pour la plupart en Virginie, sur la Côte Est des Etats-Unis. Cette centralisation des infrastructures engendrant des performances plus faibles pour les utilisateurs distants, Dropbox a annoncé fin 2016 le déploiement d'un réseau mondial de 11 points de présence (ou PoP). Cinq sont installés aux Etats-Unis, trois en Asie, et trois en Europe - plus précisément au Royaume-Uni, aux Pays-Bas et en Allemagne (voir la carte ci-dessous). Sous la forme de serveurs de proxy, ces PoP accélèrent la liaison avec les data centers de la société californienne - en évitant d'avoir à attendre l'accusé de réception (TCP) nécessaire pour se connecter. En aval, ils sont reliés aux data centers via un backbone maison qui permet de s'affranchir des liaisons, parfois peu fiables, des fournisseurs d'accès à Internet publics.

Réseau mondial de points de présence de Dropbox. © Dropbox

Un déploiement continu avec des mises à jour deux fois par jour

En termes de R&D, Dropbox s'est orienté, sans surprise, vers un cycle de déploiement continu. "A la manière de Google et Facebook, nous combinons l'analyse des données d'utilisation de Dropbox avec notre vision du marché ainsi que notre intuition pour créer et faire évoluer nos produits au fil de l'eau. Nous nous posons en permanence la question de savoir ce que nos clients et utilisateurs veulent vraiment", explique Aditya Agarwal. "Partant de là, nous ne sommes pas dans un cycle de développement linéaire avec la sortie d'un nouveau produit tous les deux ans, mais nous testons et itérons en permanence. C'est mon rôle d'accompagner les équipes dans cette dynamique tout en gardant à l'esprit les exigences de performances évoquées plus haut, qui nous permettent de répondre aux contraintes de nos entreprises clientes."

A quel rythme sont effectuées les mises en production de nouvelle version ? Jusqu'à deux fois par jour sur la déclinaison web de Dropbox. "Sur nos applications pour desktop, nous sommes l'éditeur le plus rapide au monde. Toutes les deux semaines, ces applications font l'objet d'une mise à jour poussée en toile fonds. Sur iOS et Android, nous poussons de nouvelles versions toutes les deux semaines et demi", confie le CTO.  Pour réaliser cette prouesse, Dropbox a développé sa propre infrastructure d'intégration continue. En matière de gestion de version (VCS), la société disposait historiquement d'une solution maison bâtie à partir de l'outil open source Perforce (écrit en Python). Aujourd'hui, 80% du code est désormais géré par l'outil de VCS Git.

Pour industrialiser ses process de mise en production, Dropbox a aussi créé un moteur d'auto-mise à jour. "Il s'agit d'une brique absolument critique de notre infrastructure qui fait l'objet de toutes les attentions car si nous la perdons nous ne pouvons plus rien faire. Comme vous pouvez l'imaginer, elle est hébergée sur nos propres infrastructures et pilotée en interne", insiste Aditya Agarwal. Pour assurer la sécurité de cette brique, Dropbox a déployé son propre réseau de diffusion de contenu (CDN). Et l'entreprise peut faire appel, en plus, à des CDN de secours, comme Akamai ou Cloudflare. 

La direction technique de Dropbox en bref
Nombre de personnes en R&D 600 à 700 personnes (en incluant l'ingénierie produit, infrastructure, les développements web, d'apps mobiles...) sur un effectif total de 1600.
Langages  Rust (gestion du stockage), Python (logique applicative), Java (application Android), CoffeeScript, Typescript, C/C++...
Système serveur Linux
Base de données MySQL (journal de fichiers)
Matériel Design spécifique 
CDN CDN maison, Akamai et Cloudflare
Cloud AWS demeure utilisé pour l'hébergement des données clients proposé en Europe (utilisation des data centers d'AWS en Allemagne)