Retour d’expérience sur l’intégration de symfony2 chez M6Web M6Web a opéré une transition de Java vers PHP il y a de nombreuses années mais a commencé a réaliser des applications Symfony2 depuis 18 mois. Nous verrons ensemble les différentes étapes qui ont été franchies et quelles stratégies ont été adoptées pour opérer cette transition. Comment M6Web intègre le code legacy à Symfony2 ? Les bundles et librairies que nous avons développés pour adapter le socle SF2 à nos besoins et à nos contraintes d’exploitation. Comment le code est déployé dans notre data-center ou sur AWS. Ce que le framework a changé dans l’organisation des équipes. Et enfin, sur quels critères nous choisissons de construire une application avec Symfony2 ou une autre technologie. M6Web est une filiale à 100% de M6, en charge des offres digitales et interactives du groupe.
3. Responsive Design
offres digitales et
interactives du Groupe M6
~20 sites : Clubic – JeuxVideo.fr – AchetezFacile
6play - 60M Vidéos Vues / mois
Catchup + Live + socialTV
« moins de 200 rps t’es pas sérieux »
« on est pas un centre de R&D »
13. Responsive Design
symfony-m6-edition
pour en finir avec pomme c / pomme v
Faciliter la création des projets
Diminuer Supprimer « le coût » de la qualité
composer create-project m6/symfony-m6-edition .
--repository-url=http://satis/ -s dev
14. « Qui veut faire quelque
chose trouve un moyen.
Qui ne veut rien faire
trouve une excuse. »
15. Responsive Design
transition
sf2 first !
Pas de régressions
Chaque projets est indépendant
Séparer le legacy via du SOA
Intégrer les contrôleurs sf2 en 1er dans la stack
16. Responsive Design
+ = (depuis 18 mois)
• HTTP 1.1 / config des contrôleurs
• $> php app/console router:debug
• Service Container
• Bundles
• Plein de gens géniaux autour
28. Responsive Design
Testing
comme tout le monde
• Tests Atoum => OK – ~20K assertions par projet
• Unitaire
• Fonctionnel => toutes les routes testées
• Behat => trop lent ?
29. Responsive Design
“Et c’est quoi l’IP de la
base de données ?”
• config_prod.yml:
imports:
- { resource: /srv/resource/db/doctrine/
image.yml }
30. « PHP est fait pour tout et
pour tous »
Rasmus Lerdorf (Forum PHP 2012)
37. Responsive Design
Architecture
for noob
• Amortissez tout sur un cache / sf2 au bon endroit
• Ne vous couplez pas à une archi non scalable
• 1 gros appel pas performant versus n … et la
webperf ?
• « Mieux vaut être prudent que désolé »
38. Responsive Design
REST
in peace
• « c’est pas REST » => OSEF
• Doit intégrer vos contraintes de charges
/v1/contents/12?revision=3
Learn the rules like a pro
so you can break them like an artist.
— Pablo Picasso