Archive for November, 2013

Dropbox et 200 millions d’utilisateurs

Thursday, November 7th, 2013

 

Lors d’une récente conférence, l’un des Site Reliability Engineer de Dropbox à présenté quelques éléments clef de leur infrastructure (pour la petite histoire il était précédemment chez Youtube ;_).

Pour mémoire, Dropbox est un service cloud qui permet de stocker et de partager des fichiers. Il faut aussi savoir qu’il a fallut 4 ans à Dropbox pour passer à 100 millions d’utilisateurs, mais seulement 10 mois pour les 100 millions suivant ! Avec de tels chiffres on peut aisément imaginer les impacts sur l’infrastructure.

Alors, comment Dropbox gère une infrastructure capable d’accueillir 200 millions d’utilisateur et le milliard de fichier qu’ils stockent chaque jour ?

En l’occurrence, cela représente plus de 10000 serveurs physiques et un nombre important de service Amazon. Et oui, Dropbox n’utilise pas exclusivement les services d’EC2 mais à aussi ses propres serveurs et datacenters selon un modèle souvent appelé hybride. Plus précisement, la partie metadata  est stocké sur ses propres serveurs tandis que les fichiers eux même sont stocké sur Amazon S3. Au passage des instances EC2 sont utilisé pour faire parler ces deux mondes entre-eux.

Autre point important, avec de tels volumes les changements sont à la fois énorme et de par le modèle économique incertains ! Pour Dropbox, cela implique qu’il est fondamental d’en tenir compte dans les développement afin d’être souple, mais aussi que le mixe entre hébergement interne et externe doit être toujours connus car selon eux cela requiert des outils différent pour les gérer.

Résultat ? Au lieu d’essayer de capitaliser sur des images standard de déploiement, Dropbox à préférer capitaliser sur Puppet pour unifier les installation, l’inventaire et la gestion du cycle de vie !

Cela étant, tout n’est pas rose et il reste des chalenges chez Dropbox :

* gérer efficacement les thumbnail photo : une première étape à était franchit en passant a n mode batch/http qui leur a permis en gain de performance de 40.

* améliorer le débit “client” lors des synchros, point important car directement perceptible. La encore une étape à était franchie en permettant d’utiliser plusieurs connections en parallèle (le retour du p2p ;-) ce qui à permit de gagner un facteur 2.5 (voir 4 dans certaines régions du globe !)

* dernier et non de moindre : la latence de d’Amazon S3, comme chacun le sait Amazon S3 n’offre que peut de garantie, il est donc difficile d’avoir un contrôle sur les performances dans ce contexte pourtant c’est un point important pour le perçut et l’usage du produit. Pour pouvoir avancer, Dropbox s’appuie sur un monitoring important et une gestion de connections de type pool.

Mais comme le dit le présentateur, quand on ne contrôle pas toutes les variables seul l’expérimentation fait avancer et de même dans le cadre de la scalabilité, parfois les solutions les plus évidentes ne sont pas les bonnes.