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

Silex, retour sur un an d'utilisation

Silex, retour sur un an d'utilisation

Support initialement présenté lors du symfony Live Paris 2013

Mikael RANDY

April 04, 2013
Tweet

More Decks by Mikael RANDY

Other Decks in Programming

Transcript

  1. Paris, le 5 avril 2013
    Silex, retours sur
    un an d’expérience
    Symfony Live Paris 2013
    1
    vendredi 5 avril 13

    View Slide

  2. Paris, le 5 avril 2013
    La loi des 2 pieds
    2
    vendredi 5 avril 13
    * Loi des 2 pieds
    ! * Si vous n'êtes en train d'apprendre ou de contribuer, passez à autre chose
    ! * Ne vous sentez pas obligé de rester ici
    * Cette conférence n'est pas technique
    ! * On apprend pas comment utiliser Silex
    ! * Un simple retour d'expérience, pour partager les erreurs, succès
    ! * A la fin, un regard sur cette année passée

    View Slide

  3. Paris, le 5 avril 2013
    Me, my and myself
    Mikael Randy
    @mikaelrandy
    3
    vendredi 5 avril 13
    * Qui je suis ?
    * Développeur PHP depuis 8 ans

    View Slide

  4. Paris, le 5 avril 2013
    4
    vendredi 5 avril 13
    * The ebook alternative
    * Startup dans le monde du livre numérique

    * Plateforme compléte de diffusion et de lecture de livres numériques

    * Silex
    * Pour voir si vous avez suivi ;)
    * Nous allons y revenir ...
    * Ruby
    * J'ai vu d'autres choses, d'autres approches, car je pense "le bon outil pour le bon
    besoin"
    * Symfony
    * Découverte en 2007 (Symfony 1.0 !)
    * Application en SSII (responsable technique)
    * Migration progressive jusque Symfony2.0

    View Slide

  5. Paris, le 5 avril 2013
    5
    vendredi 5 avril 13
    * Membre actif de l'AFUP
    * Coordinateur de l'antenne lyonnaise

    View Slide

  6. Paris, le 5 avril 2013
    Le contexte
    6
    vendredi 5 avril 13
    * Présentation du contexte générale entourant cette année précédente

    View Slide

  7. Paris, le 5 avril 2013
    L’entreprise
    • Startup
    • Tout à construire
    7
    vendredi 5 avril 13
    * Startup
    * Nouvelle société
    * Nouvelle branche (livre numérique)
    * Tout à construire, tout à faire, sur une équipe réduite

    View Slide

  8. Paris, le 5 avril 2013
    Le projet
    8
    vendredi 5 avril 13
    * Projet de 0
    * Liberté totale sur tout les choix
    * Seule contrainte : il va falloir le maintenir

    View Slide

  9. Paris, le 5 avril 2013
    L’équipe
    • Experts (ou presque)
    • Sentiment d’être contraint
    9
    vendredi 5 avril 13
    * Equipe d'experts
    => 2 séniors, 1 débutante avec de grands idéaux
    => Expérience significative en Symfony 1/2
    * Le sentiment d'être plus souvent contraint qu'aidé par le framework

    View Slide

  10. Paris, le 5 avril 2013
    Les projets
    10
    vendredi 5 avril 13
    * Sur les projets de la société (PHP, Symfony, Silex, Ruby bulk, Rails), 2 retenus
    * Projets typiques pour appuyer mon propos

    View Slide

  11. Paris, le 5 avril 2013
    Warehouse
    • Entrepôt de livres numériques
    • Beaucoup de traitements métiers
    • Uniquement des API
    11
    vendredi 5 avril 13
    * Un projet qui sort des sentiers battus
    * Beaucoup de traitements métiers
    * Stockage de fichier, watermarking, protection DRM, ...
    * On utilise pas trop les fonctionnalités du Framework
    * Uniquement des APIs
    * Part minime du fonctionnement général

    View Slide

  12. Paris, le 5 avril 2013
    Backend
    • Ecrans d'administration
    • Ecrans de reporting de données
    • Connexion/profils utilisateurs
    12
    vendredi 5 avril 13
    * Un projet "classique"
    * Des écrans qui servent d'interfaces pour création/modification de données
    * Un peu de calcul, mais sans plus
    * Profils utilisateurs
    * Ecrans à contenu adaptables

    View Slide

  13. Paris, le 5 avril 2013
    Les débuts, l’euphorie
    • Grisé par la feuille blanche
    • Récupération des bonnes idées
    • Arborescence
    • ORM
    • Twig
    • Adaptation de ce qui gène
    • Controleurs partagés
    13
    vendredi 5 avril 13
    * Feuille blanche
    * Grisé par le "tout à faire"
    * Euphorie du début
    * On récupère les bonnées idées
    * Arborescence
    * Découpage propre
    * ORM
    * Doctrine
    * On garde toute la couche
    * Twig
    * C'est tellement pratique de l'utiliser
    * On adapte celles qui nous gènes
    * Controlleurs partagés
    * On construit des controlleurs qui sont réutilisables, et utilisés par plusieurs routes

    View Slide

  14. Paris, le 5 avril 2013
    La maintenance,
    la désillusion
    14
    vendredi 5 avril 13
    * Puis, un jour, il faut maintenir le projet
    * Le backend évolue
    * il faut rajouter des écrans
    * Modifier les traitement métiers

    View Slide

  15. Paris, le 5 avril 2013
    ORM
    «Mais pourquoi on a gardé ça ?»
    Tout ce qu’on voulait éviter,
    les contraintes sans la souplesse
    15
    vendredi 5 avril 13
    * Système rigide
    * Qui n’a jamais pesté après Doctrine pour faire une requête un peu compliquée ?
    * Perte de performances
    * Verbosité

    View Slide

  16. Paris, le 5 avril 2013
    Sécurisation
    • Chaque controleur vérifie l’utilisateur
    16
    vendredi 5 avril 13
    * D’un code simple, on est tombé dans le simpliste
    * Duplication de code
    * Difficulté de maintenance, d’évolution

    View Slide

  17. Paris, le 5 avril 2013
    Tasks
    «Mais pourquoi on a pas utilisé le composant Console ?»
    On a réinventé la roue
    17
    vendredi 5 avril 13
    * Emporté par l'élan, on a fait une monumentale erreur
    * Ecriture de notre propre librairie de commandes CLI, mais fonctionnellement loin du
    composant Symfony

    View Slide

  18. Paris, le 5 avril 2013
    Tasks
    «Mais pourquoi on a pas utilisé le composant Console ?»
    On a réinventé la roue
    Et en plus, elle est carrée :/
    18
    vendredi 5 avril 13
    * Emporté par l'élan, on a fait une monumentale erreur
    * Ecriture de notre propre librairie de commandes CLI, mais fonctionnellement loin du
    composant Symfony

    View Slide

  19. Paris, le 5 avril 2013
    Configuration
    • Gestion et accès
    • Valeurs par défaut
    • Gestion multi-environnement
    19
    vendredi 5 avril 13
    * Gestion et accès facile
    * Pimple est cool ...
    * ... mais il faut l'alimenter :/
    * Valeurs par défaut
    * Comment éviter 10mn de configuration à chaque MEP
    * Gestion multi-environnement
    * ça semble simple, hein ;)

    View Slide

  20. Paris, le 5 avril 2013
    Entamons un
    refactoring
    20
    vendredi 5 avril 13
    * Bon, on prend un peu de temps et on reprend un peu ça

    View Slide

  21. Paris, le 5 avril 2013
    ORM-- ; DBAL++
    • Retrait de l’ORM
    • Conservation de la couche DBAL
    21
    vendredi 5 avril 13
    * Retrait ORM
    * Tout ce qui est Entity, Repository, bref, le code auto-généré
    * On ne passera plus par du code pour accéder à la base de données
    * Conservation de la couche DBAL
    * Facilité d'accès à la connexion
    * Gestion des erreurs
    * Protection des requêtes
    * Encapsulation "simple"

    View Slide

  22. Paris, le 5 avril 2013
    Sécurisation
    «Comment faire sans le composant Security ?»
    Middleware Silex
    22
    vendredi 5 avril 13
    * C'est pas super, mais c'est un quickwin

    View Slide

  23. Paris, le 5 avril 2013
    Difficultés de migration
    • Eviter le «tremblement de terre»
    • Cohabitation
    • Difficulté de maintenir 2 versions en
    parallèle
    23
    vendredi 5 avril 13
    * Refactoring "tremblement de terre"
    * On ne peux pas investir X jours sans produire de la valeur
    * On fait la base, le nécessaire, puis ça sera du continue
    * Cohabitation
    * On est plus devant une feuille vierge
    * On "paye la note"
    * Maintenance
    * Une petite modif ? Ah bah non, c'est dans un code à migrer

    View Slide

  24. Paris, le 5 avril 2013
    Dans le dur
    24
    vendredi 5 avril 13
    * Vous devez vous dire qu'on est enfin sur de bons rails ?
    * EH BAH NON !

    View Slide

  25. Paris, le 5 avril 2013
    Tiens, une nouvelle
    bonne idée !
    • Instauration de la notion de services
    • Tiens, une 3ème organisation
    25
    vendredi 5 avril 13
    * A force de se renseigner, on trouve de nouvelles idées
    * Le découpage est plus proche de notre approche par profil
    * ça colle, on y va
    * Nouvelle organisation
    * Alors que le refactoring précédent n'est pas terminé, on s'apprète à introduire une 3ème
    approche
    * Alerte
    * On va trop vite, on se laisse trop porter par le vent

    View Slide

  26. Paris, le 5 avril 2013
    Tiens, une nouvelle
    bonne idée !
    • Instauration de la notion de services
    • Tiens, une 3ème organisation
    ALERTE ROUGE !
    26
    vendredi 5 avril 13
    * A force de se renseigner, on trouve de nouvelles idées
    * Le découpage est plus proche de notre approche par profil
    * ça colle, on y va
    * Nouvelle organisation
    * Alors que le refactoring précédent n'est pas terminé, on s'apprète à introduire une 3ème
    approche
    * Alerte
    * On va trop vite, on se laisse trop porter par le vent

    View Slide

  27. Paris, le 5 avril 2013
    La réconciliation
    27
    vendredi 5 avril 13

    View Slide

  28. Paris, le 5 avril 2013
    Dis-cu-tons !
    • Notre vision a fortement changée en
    quelques mois
    • Sur Silex
    • Sur notre métier
    • On se pose et on parle
    28
    vendredi 5 avril 13
    * Vision
    * En quelques mois, on est fortement monté en compétences sur Silex (intrinsèque et
    bonnes pratiques)
    * Nous avons découvert notre métier, et ses contraintes
    * Capable de voir et comprendre les erreurs qui ont été faites
    * Discussion
    * On prend le temps de se poser, d'échanger sur les bonnes idées, les gros ecueils, ...

    View Slide

  29. Paris, le 5 avril 2013
    Refactoring, bis
    • Nouvel arbitrage
    • Nouvel investissement
    • Guidelines pour éviter que ça ne se
    reproduise
    29
    vendredi 5 avril 13
    * Il faut trancher en fonction de différents indicateurs
    * Gène à la maintenance
    * Portée de la modification
    * Temps de développement
    * On se donne des bonnes pratiques, à suivre pour la cohérence générale et pour ne pas que
    ça se reproduise

    View Slide

  30. Paris, le 5 avril 2013
    Conclusion
    30
    vendredi 5 avril 13

    View Slide

  31. Paris, le 5 avril 2013
    Retour sur les projets
    • Presque tout les retours concernent le
    backend
    • Warehouse principalement pour les bonnes
    pratiques
    31
    vendredi 5 avril 13
    * Backend
    * La plupart des retours auraient pu être évités dans un contexte plus formel
    * Chacun est parti dans son coin, sur ses bonnes pratiques, sans le cadre du framework
    * Warehouse
    * Quelques errements, mais globalement maitrisé
    * L’erreur principale concerne surtout le composant Console

    View Slide

  32. Paris, le 5 avril 2013
    Si c’était à refaire
    • Backend : Symfony2
    • Warehouse : Silex
    32
    vendredi 5 avril 13
    * Backend
    * Symfony : Trop besoin d'outils déjà existant
    * On a trop réinventé la roue sur ce projet
    * Warehouse
    * On continuerais avec Silex
    * Ce projet contient principalement du code business, sans trop de code classique
    * Trop peu d'utilisation des composants de Symfony, trop de hors chemin
    * On est persuadé que Symfony nous aurais demandé du travail d'adaptation (Bundle,
    modèle, ...)

    View Slide

  33. Paris, le 5 avril 2013
    Les leçons à retenir
    • Indicateur : nombre de composants utilisés
    • Se poser la question des composants utiles
    tôt
    • Est-ce un projet « standard » ?
    33
    vendredi 5 avril 13
    * Réinstallation composant
    * Si on en installe trop, c'est qu'on fait quelque chose de mal
    * Quels composants ?
    * Se poser la question au plus tôt de ce qu'il faut
    * Projet standard
    * Si Symfony convient, pourquoi vouloir en sortir ?
    * Ne pas se laisser porter par le vent des nouveautés

    View Slide

  34. Paris, le 5 avril 2013
    Questions ?
    @mikaelrandy
    34
    vendredi 5 avril 13

    View Slide