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

Avatar for Alexandre Salomé

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