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
  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 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, ...
  28. 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
  29. 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
  30. 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, ...)
  31. 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