Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Retour d'expérience du SymfonyLive 2016 - sfPot...

Retour d'expérience du SymfonyLive 2016 - sfPot à Lille de juin 2016

Alexandre Salomé

June 16, 2016
Tweet

More Decks by Alexandre Salomé

Other Decks in Programming

Transcript

  1. Monolith Repositories with Git Fabien Potencier • Le mono-dépôt est

    utilisé par Google et Facebook • Deux approches : mono-dépôt ou multi-dépôts • Le découpage d’un dépôt est compliqué et demande beaucoup d’expérience ◦ On sépare ou on fusionne en fonction des découvertes • Les avantages du mono-dépôt : ◦ Atomic Massive Changes (standard de codage, couplage d’une modification) ◦ Pas limité au PHP : PHP, Javascript, Go, Python, Java… ◦ Plus facile de comprendre les tenants et aboutissants des modifications ◦ Moins de management : 1 outil de ticket, 1 dépôt, 1 version ◦ Pas de gestion de dépendances (pas de multi-versions) - exemple avec composer • Multi-dépôt a des avantages (taille humaine, ACL, tests automatisés) • Symfony = mono-dépôt et multi-dépôts • Subtree split a montré ses limites sur Symfony • Fabien a développé un outil en Go : splitsh - le contacter pour plus d’infos. Jeudi - 09:15 Vidéo
  2. Guard dans la vraie vie Jérémy Romey • Nouveau composant

    (2.8, 3.0) • Facilite la création d’une méthode d’authentification • Une seule classe à implémenter (contre 3 avant) Jeudi - 10:00 Slides
  3. R2D2 to BB8 Vincent Chalamon • La migration progressive est

    un sujet complexe • Méthode de migration progressive utilisée ◦ On crée le modèle cible et les IHM cibles (20%) ◦ On migre les données (80%) • Des nouvelles bonnes pratiques ◦ Sémantique de données ◦ Tests unitaires et fonctionnels ◦ Échouer, c’est cool ! ◦ MVP sur le produit ◦ Socle technique est durable • Utilisation d’un LegacyBundle • 3 étapes ◦ Loaders ◦ Transformers ◦ Double écriture. Jeudi - 11:10 Slides
  4. PHP Meminfo ou la chasse aux memory leak Benoit Jacquemont

    • L’avantage de PHP : on traite une requête PHP, on jète tout • Mais parfois, les traitements sont plus longs (les tâches CRON) • Explications sur la gestion de mémoire en PHP ◦ Refcount ◦ Références cycliques • Présentation d’une extension PHP : meminfo ◦ Permet de connaître l’état de la mémoire ◦ Identifier les sources de fuite mémoire • Quelques bonnes pratiques Jeudi - 11:55 Slides
  5. Retour d'expérience Reactive Architecture et Microservices Fabien Meurillon • Présentation

    des architectures SOA ◦ Une application = Un domaine métier ◦ Probablement pas plus de 5 aggrégats • The reactive manifesto ◦ Responsive, resilient, elastic, message driven • Canonical Data Model ◦ Une représentation au delà des langages • ApiBundle : l’ambassadeur d’un micro-service • Utilisation d’un ESB pour lier ces briques. Jeudi - 14:30 Slides
  6. Le réveil du Workflow Grégoire Pineau • Nouveau composant Symfony

    : Workflow • Né le 1er décembre 2013 • Explications sur la méthode de développement ◦ Lire le code ◦ Échanger avec la communauté ◦ Analyser les solutions existantes (Finite) • Choix de workflow net ◦ Extension des réseaux de Petri ◦ Toutes les fonctionnalités ne sont pas implémentées. Jeudi - 15:15 Slides - Démo
  7. ElasticSearch chez BlaBlaCar Olivier Dolbeau • Utilisation intensive chez BlaBlaCar

    ◦ Recherche à facettes = 5 millions de recherche par mois, 2 millions d’indexation par mois ◦ Création d’alertes ◦ Logs système et applicatif ◦ Routes favorites, axes populaires ◦ FAQ • Techniques avancées pour le moteur de recherche ◦ Aggrégats Jeudi - 16:30 Slides
  8. Performance au quotidien dans un environnement Symfony Xavier Leune •

    700 millions de pages vues par mois → Performance indispensable • Choix de Symfony • Non-choix de Doctrine → no-RM = requêtes SQL • ESI + Cache HTTP (utilisation de la validation, 304 Not Modified) • Pas de compilation en production • Déploiement automatisé • Utilisation de Blackfire ◦ Tests de performance automatisés Jeudi - 17:15 Slides
  9. PSR-6 & Symfony Cache : de la perf en standard

    Nicolas Grekas PSR-6 • Nouveau standard du FIG (Framework Interop Group) pour le cache • Désigné pour des besoins simples et intermédiaires • 2 interfaces: CacheItemPoolInterface et CacheItemInterface Symfony Cache • Implémentation stricte de la PSR • Plusieurs Adapters ◦ Apcu, Array, Redis, Doctrine, etc.. • Rapide • Intégration et QA Symfony ! • Plus que PSR dans le futur. Vendredi - 09:45 Slides
  10. Sécurité web: pirater pour mieux protéger Alain Tiemblo Password Hashing

    → Utiliser un “salt” par utilisateur + un bon algo Brute Force Password Reset (savoir si un utilisateur a un compte sur le site) → Toujour un message de sucès, limiter le nombe de reset par jour Brute Force Login → Limiter le nombre d’essai par email et durée Cross-Site Scripting (XSS) → Sanitize (HTMLPurifier), ne pas utiliser “raw”, utiliser des cookies “HttpOnly” Clickjacking → Utiliser le header “X-Frame-Options” SMS Verification Hacks → Bloquer le nombre d’essai et la durée de validité. Limiter l’envoi de SMS ! Envoyer le contexte avec le code de vérification Cross-Site Request Forgery (CSRF) → Token CSRF (form + login) Website Crawling → difficile à protéger… Stratégie par temps / IP / Autres et donner un score à chaque règle. Afficher un CAPTCHA en cas de dépassement. Vendredi - 10:55 Slides
  11. Aller plus loin avec Doctrine2 André Tapia Etendre le vocabulaire

    DQL: Ajouter des fonctions comme IFNULL() Events: LifeCycleCallbacks ({pre,post}Persist, {pre,post}Update, {pre,post} Remove, postLoad) et autres (loadClassMetadata, {pre,on,post}Flush) Optim performance - “Clear” la Unit Of Work - Désactiver le logger SQL - Transaction autour d’une boucle, commit à la fin - Select “partial” Développer plus rapidement: - Hydrator custom - Filters Vendredi - 11:40 Slides
  12. Refondre un moteur de règles avec l'expression language de symfony2

    ABBAS Hussein Objectif: Scorer une transaction de carte bleue avec un moteur de règles Point de départ, “Ruler”: - Lent - Expressions écrites en json - Impossibilité de faire un “AND” et un “OR” Passage de “Ruler” à l’ExpressionLanguage: - 450 loc → 15 loc pour le moteur - Règles en langage naturel (+ court et + compréhensible) - 2 fois plus rapide Vendredi - 14:15 Slides
  13. Sécurité et HTTP Romain Neutron Sécurisation côté client • X-XSS-Protection

    ⇒ Filtre anti XSS dans le navigateur • X-Content-Type-Options ⇒ Application strict du type MIME (plus de détection auto par le navigateur) • X-Frame-Options ⇒ Empêche le clickjacking en empechant l’affichage de votre site dans une iframe • Strict-Transport-Security ⇒ HTTS obligatoire • Content-Security-Policy ⇒ Limiter ce qui peut-être executé dans le navigateur + Subresource Integrity ⇒ Préciser le hash des resources qui seront chargées + Public Key Pinning ⇒ protection contre l’usurpation d’identité contre les certificats frauduleux émis par des autorités de certification compromises. Vendredi - 15:00 Slides
  14. Construire des applications cloud natives Ori Pekelman • Passage d’une

    stack LAMP à une stack NVMPESRRKCCDX ◦ Nginx, Varnish, MariaDB/Postgres, PHP-FPM, Symfony, NodeJS, ElasticSearch/Solr, Redis/RabbitMQ/Kafka, Ceph/Gluster, Docker/LXC • Des technologies utiles pour créer une application scalable/distribuable ◦ Frontend et caches HTTP ◦ Bases de données • Slides très fournies et complètes • Ori, il est vraiment drôle. Vendredi - 16:10 Slides
  15. Références Merci à SensioLabs pour ces 2 jours et merci

    aux sponsors pour l’animation ! Le dépôt officiel : https://github.com/SymfonyLive/paris-2016-talks