· Événements

Symfony Live, on vous raconte
(jour 2)

1ère Présentation : « Qui veut gagner une carrière de développeur ? » Par Thomas Gx

Présentation sympathique pour commencer la journée avec des questions marrantes notamment sur des polémiques qui ont pu apparaître dans le développement.

2ème Présentation : « Architecture Inutile ? » par Jérôme Vieilledent

Jérôme nous parle d’architecture et nous explique son évolution sur les dernières années :  avant nous avions du code « spaghetti » qui créé de la dette technique avec une complexité importante, une maintenabilité difficile et une évolutivité très risquée ; à l’heure actuelle PHP continue d’être vu par certaines personnes comme un langage qui produit du code « spaghetti », cependant nos architectures ont considérablement évoluées. 20170331_094728

Les microservices peuvent, quant à eux, apporter leur lot de complexité s’ils sont mal pensés. L’important est donc plus de respecter des principes simples comme :

  • SOLID pour Single Responsibility Principle Open/Closed principle Liskov substitution principle Interface seggregation principle Dependency Inversion Principle
  • DRY :Don’t Repeat Yourself
  • KISS : Keep It Stupidly Simple

Jérôme nous a ensuite parlé de DDD (Domain Driven Design) en prenant l’exemple d’un cas concret avec un code extrêmement complexe présent dans un unique fichier et un code découplé dans une vingtaine de classes avec une complexité faible, une maintenabilité et évolutivité simplifiées.

3ème Présentation : Déployer une app Symfony dans un PaaS  par Tristan Darricau

Tristan a commencé par nous énoncer différentes catégories de services :

  • IaaS : Infrastructure as a Service
  • CaaS : Container as a Service : Comment lancer des container ? Docker…
  • PaaS : Plateorm as a Service : BDD ect…
  • SaaS : Software as a Service

Avec le PaaS on va coder l’infrastructure avec l’application et faire de l’automatisation. On n’utilisera pas d’outils de provisioning mais des hooks git et des outils de build. Ensuite on doit répondre aux problèmes de variables propres aux environnements (credentials, password…). La meilleure méthode est de créer des variables d’environnement et de les utiliser avec le nouveau composant de Symfony, Dotenv. Les migrations SQL sont dépendantes à la fois de l’application et de Doctrine (l’ORM par défaut dans un projet Symfony). L’idée est donc de passer par les hooks git, builder un projet, gérer les migrations SQL et déployer l’ensemble sur un serveur en configurant les variables d’environnements (RUN).

 

4ème Présentation :  Sécurité web : et si on continuait à tout casser ? Par Alain Tiemblo

Alain a commencé par nous parler de DDOS, de Checklist puis à énumérer un grand nombre d’entreprises connues qui se sont fait pirater leurs bases de données avec des mots de passes non sécurisés (stockés en plain text, md5 ou sha1 sans salt). Alain a ensuite énuméré différentes solutions pour répondre à cette problématique dont l’utilisation de bcrypt.

Photo Symfony live 3

5ème Présentation : Créer des webapps modernes avec Symfony, ReactJS et API Platform par Kévin Dunglas

L’objectif d’API Plateform est de fournir un framework basé sur Symfony™ afin de pouvoir créer une API rapidement en déclarant un modèle. API Plateform permet de respecter les principes REST en allant jusqu’à l’utilisation des hypermedias, la spécification JSON-LD et Hydra pour documenter l’API.

API Platform crée donc automatiquement des API en se basant sur des entités/DTO. Il permet de créer des API orientées ressources et non services.

Photo Symfony live 4

6ème Présentation : Tout ce qu’un dev devrait savoir à propos d’Unicode par Nicolas Grekas

Après une brève histoire sur des jeux de caractères présents dans le web, Nicolas nous a parlé du standard Unicode et des différentes problématiques qui pour certaines restent non résolues.

 

7ème Présentation : Optimisations de performances avec PHP 7 par Julien Pauli

Le compilateur : PHP7 dispose d’un compilateur entièrement réécrit basé sur un APT (Apstract Syntax Tree), compilateur plus lent mais lorsqu’on utilise un système de cache type OPCache cela est transparent.

En interne : consommation du CPU plus faible, variables optimisées, les « hashtables » (les tableaux) ont été entièrement réécrit avec de nouvelles notions comme les « packed arrays » (tableaux qui sont des listes avec des clés de caractères numériques triées par ordre croissant. On peut optimiser le traitement des chaînes de caractères avec OPCache en augmentant la valeur de la clé « opcache.interned_strings_buffer » qui par défaut est à 4mo (au moins mettre du 32 ou 64mo sur une application Symfony). En PHP7 l’inclusion de variables dans les doubles quotes (« ) est plus performant que la concaténation avec des point (.).

Le futur : JIT, Just In Time compilation viendra optimiser PHP avec des gains de performance qui pourront égaler ceux qui sont apparus entre PHP5 et 7 et qui devrait peut être voir le jour en 2020 avec la sortie de PHP8.

Lightning Talk : Fabien Bourigault avec le Lock Component

Le Lock Component, qui arrive avec Symfony™ 3.3, est supposé être simple et fiable dans sa mise en œuvre, son utilisation peut avoir un intérêt lorsqu’on fait notamment de la persistance distribuée (par exemple avec plusieurs frontaux et un cache redis).

lock_component

 

Au terme de ces 2 jours 100 % Symfony, nos collaborateurs ont pu apprécier des présentations riches en informations et en conseils, mais aussi profiter d’échanges conviviaux avec toute la communauté symfoniste.

BTW ! Clever Age organise des conférences sur différents sujets autour du web (CIAM, Drupal 8, digitalisation des entreprises…). Pour recevoir toutes les informations sur nos prochains évènements inscrivez-vous à la newsletter ci-dessous.

Ajouter un commentaire

Un commentaire

  1. Nos Symfonistes étaient présents au Symfony Live le jeudi 30 et vendredi 31 mars, ils nous racontent. […]

    Répondre

Ajouter un commentaire

Votre adresse email ne sera pas publiée. Les champs obligatoires sont indiqués par un astérisque.

Vous pouvez utiliser les balises et attributs HTML suivants dans votre commentaire : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre>