Symfony à la télé

7 242 vues

Publié le

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.

Publié dans : Technologie
0 commentaire
8 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
7 242
Sur SlideShare
0
Issues des intégrations
0
Intégrations
3 576
Actions
Partages
0
Téléchargements
34
Commentaires
0
J’aime
8
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Symfony à la télé

  1. 1. symfony à la télé @omansour http://tech.m6web.fr
  2. 2. Oracle 7 PHP 3 symfony 0.6.3 wolfenstein 3D
  3. 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 »
  4. 4. http://tech.m6web.fr/monitoring-applicatif-pourquoi-et-comment/
  5. 5. http://tech.m6web.fr/vis-ma-vie-sysadmin-forumphp.html
  6. 6. Responsive Design $nbDevs < $nbProjects $nbDevs < $nbTechnos 306 repo GIT 150 domaines actifs PHP 5.2 - 5.3 – 5.4 – 5.5 MySQL 5.1 – 5.5 / innodb - myIsam Redis – Memcached - Varnish RabbitMQ – ZeroMQ NodeJS – Perl - shell
  7. 7. we all write bad code
  8. 8. http://tech.m6web.fr/la-poo-canada-dry/
  9. 9. 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
  10. 10. «  Qui veut faire quelque chose trouve un moyen. 
 
 Qui ne veut rien faire trouve une excuse. »

  11. 11. 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
  12. 12. 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
  13. 13. Responsive Design OSS spirit 117 bundles et composants
  14. 14. http://tech.m6web.fr/composer-installation-without-github.html
  15. 15. Responsive Design Bundles
 https://github.com/M6Web/ •  Redis + RedisBundle + RedisMock + cache-extra •  Statsd + StatsdBundle •  DomainUserBundle •  FirewallBundle (ip filtering) •  LogBridgeBundle …
  16. 16. Responsive Design Statsd
 http://tech.m6web.fr/how-we-use-statsd/ •  « Gardez les yeux ouverts sur la prod » •  Consistent hashing •  Bind sur des évènements •  Config basique dans chaque projet
 « fait le job »
  17. 17. Responsive Design config_prod.yml
  18. 18. Responsive Design LogBridgeBundle
 https://github.com/M6Web/LogBridgeBundle •  Log les requests / responses •  compatible monolog
  19. 19. Responsive Design DomainUserBundle
 http://tech.m6web.fr/api-a-consommer-avec-moderation/ •  Customise ton API par sous domaine •  routing •  cache •  parameters
  20. 20. app/config/users/raoul.yml http://raoul.monapi.fr
  21. 21. Responsive Design Testing
 comme tout le monde •  Tests Atoum => OK – ~20K assertions par projet •  Unitaire •  Fonctionnel => toutes les routes testées •  Behat => trop lent ?
  22. 22. 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 }
  23. 23. « PHP est fait pour tout et pour tous »
 Rasmus Lerdorf (Forum PHP 2012)
  24. 24. « bof »
 
 Olivier Mansour (Symfony Live 2014)
  25. 25. varnish nginx nginx + lua nodejs symfony2 Perf  (rps/server)  
  26. 26. Responsive Design perfs != speed
 “en gros” Mais  en  gros  :   •  varnish  :  1ms   •  ngnix  :  4ms   •  nodejs  :  10ms   •  Sf2  :  qq  centaines     de  ms?!     http://tech.m6web.fr/refonte-de-notre-systeme-de-vote/
  27. 27. varnish nginx nginx + lua nodejs symfony2 nb lignes de code 
 (sans péter un câble) 300   30  000   30  
  28. 28. https://github.com/newsapps/beeswithmachineguns $> siege --concurrent=100 -b --time=30S -q <URL> http://tech.m6web.fr/benchmarking-websockets-avec-nodejs/
  29. 29. https://github.com/newsapps/beeswithmachineguns $> siege --concurrent=100 -b --time=30S -q <URL> http://tech.m6web.fr/benchmarking-websockets-avec-nodejs/
  30. 30. 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é »
  31. 31. 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
  32. 32. BEFORE Mobile   devices   Live   broadcast   events   contents   Bmeline  calculaBon   Synchronis ed  events  
  33. 33. AFTER Mobile   devices   Live   broadcast   events   contents   Bmeline  calculaBon   Synchroni sed   events   Timeline(s)     contents   PHP  5.4  +  SF2  +  MySQL  
  34. 34. « Difficile à voir. Toujours en mouvement est l'avenir. »
 
 Maître Yoda
  35. 35. hOp://ask.fm/omansour_    

×