L'architecture serveurs de Tumblr
Tumblr est une plateforme de blogs plutôt populaire, puisqu'elle enregistre aujourd'hui environ 15 milliards de pages vues par mois. Les administrateurs systèmes viennent de faire un retour d'expérience concernant l'architecture serveurs qu'ils ont mise en place. Linux et plusieurs logiciels libres sont bien entendu utilisés massivement pour supporter un tel trafic.
Au départ, la start-up comptait 4 ingénieurs pour administrer le service. Mais, elle a dû faire face à une croissance de 30% par mois de son trafic. Aujourd'hui, elle compte environ 20 ingénieurs qui doivent gérer un trafic de 500 millions de pages vues par jour, avec des pics de 40 000 requêtes par seconde. Le tout fonctionne sur environ 1000 serveurs et génère 3 To de données par jour.
Tumblr est composé de deux parties distinctes, les blogs publics Tumbleblog et le Dashboard :
- L'affichage des blogs est non dynamique et facile à mettre en cache.
- L''interface de dashboard est un peu comme la timeline de Twitter : les utilisateurs écrivent en permanence, ce qui génère beaucoup de trafic. Sur 500 millions de pages vues par jour, 70% du trafic concerne le dashboard.
Voici les détails des logiciels et des matériels utilisés par les équipe de Tumblr. De nombreux logiciels libres sont présents et GNU/Linux reste le choix principal pour faire tourner les serveurs :
Logiciels utilisés
- Mac OS X pour le développement, Linux (CentOS, Scientific Linux) en production
- Apache, PHP, Scala, Ruby
- Redis, HBase, MySQL
- Varnish, HA-Proxy, nginx,
- Memcache, Gearman, Kafka, Kestrel, Finagle
- Thrift, HTTP
- Func - a secure, scriptable remote control framework and API
- Git, Capistrano, Puppet, Jenkins
Matériels utilisés
- 500 serveurs web
- 200 serveurs de bases de données (beaucoup d'entre eux font partie d'un pool en "spare", et sont activés en cas de panne)
- 47 pools
- 30 shards
- 30 serveurs memcache
- 22 serveurs Redis (base de données scalable de type NoSQL qui stocke des clés/valeurs)
- 15 serveurs Varnish
- 25 noeuds haproxy
- 8 serveurs Nginx
- 14 serveurs de traitement de jobs (Kestrel + Gearman)
L'expérience qu'ils ont retenue
- Il faut tout automatiser
- Il vaut mieux accroître MySQL plutôt que les applications
- Redis est incroyable
- Les performances du langage de programmation Scala sont fantastiques
- Abandonnez les projets dont vous n'êtes pas sûr qu'ils fonctionneront
- Embauchez de nouvelles personnes uniquement parce qu'elles correspondent à votre équipe et parce qu'elles peuvent faire le travail
- Construisez votre projet autour des compétences de votre équipe
- Lisez les journaux et les articles de blogs, ils sont une excellente source d'inspiration
- N'hésitez pas à interroger des personnes (Facebook, Twitter, LinkedIn...) qui font le même métier que vous, afin de bénéficier de leurs expériences
- N'utilisez pas bêtement de nouvelles technologies. Il vaut mieux par exemple connaître le fonctionnement de HBase et Redis, avant leur mise en production, en les utilisant dans des projets pilotes ou dans des rôles où les dommages sont limités.
Si vous voulez plus de détails, c'est par ici que cela se passe :
highscalability.com
3 Commentaires pour "L'architecture serveurs de Tumblr"
Flux des commentaires de cet article Ajouter un commentaireExcellent article, bien rédigé. J'ai eu l'impression d'être en immersion dans les backstages de Tumblr. Merci d'avoir fait découvert cet univers du libre.
je ne comprenais pas trop l'intérêt de memcache et de redis, un peu double emploi.
mais c'est juste historique:
"Slowly moving from memcache to Redis. Would like to eventually settle on just one caching service. Performance is on par with memcache."
Faudrait passer le tout sous du NoSQL ! MongoDB par exemple. Plus facile à sharder et le contenu publié s'y prête plutôt bien.