Dailymotion : un tournant avec Symfony
Dailymotion, l’un des plus grands sites indépendants de divertissement vidéo au monde, est désormais propulsé par Symfony. Classé parmi les 60 sites les plus visités au monde, Dailymotion a enregistré en décembre 2008 plus de 41,9 millions d’utilisateurs uniques et plus de 922 millions de vidéos visionnées en ligne (source : comScore, décembre 2008). C’est également le deuxième site français le plus visité à l’échelle mondiale.
Les débuts de Dailymotion
Fondé en 2005, le site Dailymotion a toujours été propulsé par PHP et géré par une équipe interne de développeurs. Au fil des années, ils ont créé un framework personnalisé pour faire fonctionner leur plateforme.
Cependant, à mi-2008, ils ont décidé d’abandonner leur framework maison pour migrer vers un framework open-source.
Dailymotion en chiffres
Pour mieux comprendre l’architecture de Dailymotion, voici quelques chiffres clés :
- 50 machines PHP gérant environ 5000 pages PHP par seconde.
- 17 serveurs de bases de données.
- 30 machines memcache offrant un total de 210 Go de mémoire de stockage.
- 60 Gb/s de bande passante.
- 1,2 pétaoctet de stockage.
- Plus de 430 machines au total, incluant celles utilisées pour l’encodage vidéo et le moteur de recherche.
Pourquoi migrer vers un framework open-source ?
Malgré une équipe de plus de 10 développeurs dédiée à la maintenance du site, Dailymotion souhaitait se concentrer davantage sur son activité principale plutôt que sur la gestion et l’amélioration de son framework maison.
Avec le temps, le maintien de ce framework interne devenait de plus en plus complexe et chronophage : ajouter de nouvelles fonctionnalités, les documenter, former les nouveaux développeurs, et assurer la cohérence du système.
Le choix d’un framework open-source avec une grande communauté leur a permis de se libérer de ces contraintes. Olivier Poitrey, cofondateur et CTO de Dailymotion, résume ainsi les avantages :
- Ne pas réinventer la roue.
- Réduire le volume de code à maintenir.
- Respecter de meilleures conventions de codage.
- Implémenter facilement des processus modernes comme les tests unitaires et fonctionnels.
Pourquoi Symfony ?
Avec un rythme de développement effréné, où de nouvelles fonctionnalités sont ajoutées presque quotidiennement, réécrire le site de zéro était impossible. Dailymotion avait besoin d’une solution permettant une migration progressive, tout en continuant à développer de nouvelles fonctionnalités.
Symfony était le candidat idéal pour plusieurs raisons :
- Popularité : Symfony est l’un des frameworks PHP les plus connus, utilisé par de nombreux sites à fort trafic.
- Modularité : Les composants de Symfony sont bien découplés, permettant leur utilisation indépendamment du reste du framework.
- Flexibilité : Il est facile de modifier ou d’étendre les comportements par défaut de Symfony pour répondre à des besoins spécifiques.
Le processus de migration
Le principal défi de la migration était de minimiser les perturbations en introduisant Symfony par petites étapes.
Première étape : gérer les requêtes
Symfony a d’abord été utilisé pour traiter les requêtes, les transmettre à l’ancien code, récupérer les réponses, puis les renvoyer au navigateur. Cette intégration a été facilitée par la classe sfRequestHandler de Symfony 2.0, choisie pour sa rapidité, bien qu’elle n’ait pas encore été rendue publique.
Migration des règles mod_rewrite
Les règles de réécriture d’URL ont ensuite été migrées vers le système de routing de Symfony. La flexibilité de ce dernier a permis à Dailymotion d’étendre son comportement pour répondre à ses besoins uniques.
Tests massifs
Pour assurer une migration en toute confiance, l’équipe a écrit plus de 5000 tests unitaires et fonctionnels, en utilisant Lime et le navigateur de test de Symfony.
Et après ?
Bien que Dailymotion utilise Symfony depuis moins d’une semaine, les prochaines étapes de la migration sont déjà planifiées :
- Intégration des contrôleurs Symfony.
- Utilisation des fonctionnalités avancées comme sfI18n, sfUser, et sfCookieSessionStorage.
- Adoption du conteneur de services Symfony 2.0.
- Passage au système de modèle Doctrine.
Une conclusion humoristique
« Vous utilisez encore YouTube pour vos vidéos ? Il est temps que nous passions tous à Dailymotion ! » 😉
Cette migration vers Symfony marque une étape importante pour Dailymotion, leur permettant de se concentrer sur leur cœur de métier tout en bénéficiant de l’innovation et du support de la communauté open-source.
Laisser un commentaire