Silex, retour sur un an d'utilisation

Silex, retour sur un an d'utilisation

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

9978dcc1b086f83cc615b6961c97f504?s=128

Mikael RANDY

April 04, 2013
Tweet

Transcript

  1. Paris, le 5 avril 2013 Silex, retours sur un an

    d’expérience Symfony Live Paris 2013 1 vendredi 5 avril 13
  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
  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
  4. Paris, le 5 avril 2013 4 vendredi 5 avril 13

    * The ebook alternative * Startup dans le monde du livre numérique<br /> * Plateforme compléte de diffusion et de lecture de livres numériques<br /> * 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
  5. Paris, le 5 avril 2013 5 vendredi 5 avril 13

    * Membre actif de l'AFUP * Coordinateur de l'antenne lyonnaise
  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
  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
  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
  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
  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
  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
  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
  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
  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
  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é
  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
  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
  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
  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 ;)
  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
  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"
  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
  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
  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 !
  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
  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
  27. Paris, le 5 avril 2013 La réconciliation 27 vendredi 5

    avril 13
  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, ...
  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
  30. Paris, le 5 avril 2013 Conclusion 30 vendredi 5 avril

    13
  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
  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, ...)
  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
  34. Paris, le 5 avril 2013 Questions ? @mikaelrandy 34 vendredi

    5 avril 13