Symfony et Sonata Project chez Canal+

2,791 views

Published on

L’usage de Symfony2, l’organisation du code et l’usage du projet Sonata chez Canal+ pour répondre aux enjeux de la refonte d’une partie de la plateforme web. La plateforme présente de nombreux challenges techniques : SDK, API privée, API publique restful+hal, création de contenus riches, huit applications différentes avec une base de code commune, etc. Comment il a été possible d’améliorer certaines parties de Sonata ainsi que l’approche choisie pour la création de certains composants transverses.

Published in: Internet
  • Be the first to comment

Symfony et Sonata Project chez Canal+

  1. 1. SymfonyetSonataProject chezCanal+
  2. 2. 22 •  Sonata Project Lead dev •  15% des installations de Symfony •  Polyglot: Python, Go, Javascript, Puppet, etc … •  @th0masr •  github.com/rande ThomasRabaix ArchitecteLogiciel ekino.
  3. 3. 33 Canal+ Refonte de certains backoffices de gestion de contenu: •  8 applications dans un repo git •  2 APIs : Une API interne et une API Publique •  1 SDK : pour consommer l’API publique
  4. 4. 44 Structuredefichiers adaptéeaubesoin •  Chaque application doit pouvoir être isolée •  Pas de dépendance entre applications •  Même base de code (Component) apps logs cache src/CanalPlus Component Bundle/App1Bundle app1_prod.log app1_prod app1 App1Kernel.php web config
  5. 5. 55 •  ./console app1 your:command •  Un point d’entrée pour symfony •  clear cache: rm –rf cache/* #win •  Tests unitaires sur l’ensemble du code des applications •  Réduction de la dette technique car les applications sont mises à jour à chaque évolution •  Makefile: « One tool to rule them all » •  Réalité des projets web: bower, npm, gulp, capistrano, scss, bash, pip, bundler, etc …. •  make install •  make update Structure de fichiers adaptés au besoin
  6. 6. 66 Symfony2écosystème •  2550 bundles •  FosRestBundle •  FosUserBundle •  Nelmio •  LiipMonitor •  Sonata’s Bundles
  7. 7. 7
  8. 8. 8
  9. 9. 99 •  L’AdminBundle permet de gagner du temps pour la création d’IHM standard •  Permet d’inclure des fonctionnalités riches grâce à ReactJS (ou autres solutions) •  Création d’un SonataRestAdminBundle pour administrer des API RestFul •  Une IHM unique pour croiser les données d’API ou d’une base de données •  Gestion des droits provenant de Symfony Sonata AdminBundle Le pivot de la l’administration des données •  Permet l’édition de contenus •  Gestion des règles métiers •  Gestion des rôles
  10. 10. 1010 •  Intégration des fonctionnalités de resize dynamique de nginx => en c; en cache; ça booste … •  POC pour utiliser thumbor pour le crop intelligent d’image •  Stockage des médias sur Amazon •  Budget is the limit Sonata MediaBundle L’agrégateur des sources multimédia •  Rajout d’un mode mosaïque •  Rajout d’une arborescence pour retrouver les médias facilement. •  Intégration de médias interne du SI Canal+ grâce à la création de « providers » spécifiques
  11. 11. 1111 •  Création de blocs métier pour se connecter aux web services existants •  La complexité est cachée aux utilisateurs. •  Intégration facile avec Akamai (CDN) •  Facilité grâce à Symfony et Sonata qui intègrent les notions de cache HTTP Sonata PageBundle L’intégrateur de flux pour des pages riches. •  Amélioration de l’ergonomie de l’administration d’une page •  « SharedBlock » réutilisation de blocs sur plusieurs pages.
  12. 12. 1212 •  RestFul API with JSON+HAL •  HateosBundle: création de ressources HAL à partir d’annotations •  Il n’existe pas de client pour consommer ces ressources •  Création d’un librairie: https://github.com/ekino/php-hal-client •  Permet de naviguer dans les réponses HAL •  Option pour intégrer JMS Serializer: •  Ressources => Objets Rest Json+Hal
  13. 13. 13 Bref… …ekinorecrute… …LasuiteauPHPTOUR2015 http://www.afup.org/pages/phptourluxembourg2015/index.php

×