SlideShare une entreprise Scribd logo
1  sur  24
Télécharger pour lire hors ligne
Une application sans framework en 2019
Afup day Lille 2019 - Rodrigue Villetard
Mon contexte
- Application dite “de gestion”
- Durée de vie de l’application estimée à 5+ années
- Rythme d’évolution en dents de scie
- Peu de contraintes de performance
- Développement en solo
- Engagé sur la maintenance
Mon objectif en tant que développeur
- Développer et livrer le premier lot : être payé
- Avoir un coût de maintenance réduit sur la durée de vie du projet
- Réduire la frustration de devoir retourner sur un “vieux” projet
La tentation des « getting started in less than 5 »
- Démarrage et livraison ultra rapide des premières itérations
- Pas de question existentielle : on suit les bonnes pratiques
- On dégoupille du CRUD à la seconde avec les générateurs cli
- Le projet avance bien dès le début, tout le monde est content et on se
concentre sur le swag pour les démos clients.
Sauf que…
On réalise souvent tardivement que l’application ne se
résout pas à quatre lettres.
Productivité
Vie du projet
Première fonctionnalité
autre que CRUD,
Et premier bidouillage
Coincé dans le CRUD !
Sauf que…
Ces 5 dernières années :
- 3 versions majeures de symfony
- 10 versions majeures de laravel
- Incertitudes Zend framework <> laminas
- Silex abandonné
- …
Retourner 2 ans plus tard sur un projet avec 3 versions majeures de retard, c’est pénible.
Faire les montées de versions, c’est pénible
Reprendre les anciennes bonnes pratiques, c’est pénible
Encore en plus que…
Les frameworks ne viennent pas seuls : chacun y va de son système d’extension
(Bundles, Plugins, etc.)
Le cycle de vie des extensions est généralement plus imprévisible que celui des
frameworks.
FosUserBundle anyone?
Mais quand même…
- Documentation
- Qualité générale
- Communauté
- Rapidité de développement
- Intégration de nouveaux développeurs sur le projet
- Curiosité d’essayer les nouveautés
- …
Conclusion sur les tentations
Dans mon cas, j’ai favorisé la stabilité dans le temps de mon projet plutôt que de profiter des
atouts d’un framework.
(et faut bien avouer que ça avait l’air d’être un exercice de style rafraîchissant)
Choix de la philosophie et de l’architecture du projet
- Domain Driven Design
- Hexagonal architecture
- CQRS simplifié
- Post inheritance age of OOP
Domain Driven Design (Kent Beck)
Couplage intense entre l’organisation du métier et l’implémentation logicielle
Architecture hexagonale (Alistair Cockburn)
Aucune classe ou interface tierce
À l’intérieur de l’hexagone !
Les drivers et adapters font le pont
entre notre système et leur fonction.
CQRS Simplifié
Point d’entrée **unique** dans l’hexagone
Post inheritance age of OOP
Sauf que…
Productivité ressentie (et réelle) au début du projet
Premier retour d’expérience
L’implémentation des infrastructures (base de données, router et inversion de contrôle
notamment) est consommatrice de temps, complexe et sans réel intérêt pour l’application.
Chaque petit pas en avant nécessite une réflexion sur l’architecture (et ralenti
l’implémentation)
Le réflexe primaire de recréer un framework est un combat de chaque instant
Intégration sous contrôle de librairies tierces
- Se prémunir des breaking change
- Restreindre la surface exposée à ce qui est utilisé par
l’application
- Homogénéité du “style” de l’application
On bénéficie alors d’implémentations éprouvées, sûres et de qualités sans
affaiblir ou tordre notre architecture.
Ma règle sur ce projet : Les librairies tiers n’ont pas le droit d’
être visibles depuis l’intérieur de l’hexagone :
Productivité
Intégration de librairies tierces
Effet positif des librairies tierces
Composer.json
- Éviter au maximum les implémentations astucieuses
- Typage le plus fort possible (ValueObjects, Interface, Type hints)
- Utilisation d’outils d’analyses statiques (phpstan)
- Tests unitaires (phpunit)
- Tests fonctionnels (behat)
- Clean code et lint (php-cs-fixer)
- Intégration continue sévère
- Choix de dépendances à faible risque
Stratégie de maintenance facile en place
- Vivre le stress
- Vivre le doute du client face aux premières livraisons
- Vivre l’aventure et les grandes (re)découvertes
- Un voyage qui se prépare
Conclusion, se passer d’un framework, c’est :
Rendez-vous dans 5 pour vous dire si ça valait le
coût !
Kudos techniques et communautaires
Merci, mangez des pommes et bon week end !
Rodrigue Villetard – @gorghoa
=

Contenu connexe

Tendances

5- [ASP.NET Core] Devops : VSTS, Git, Azure, Docker, Linux
5- [ASP.NET Core] Devops : VSTS, Git, Azure, Docker, Linux5- [ASP.NET Core] Devops : VSTS, Git, Azure, Docker, Linux
5- [ASP.NET Core] Devops : VSTS, Git, Azure, Docker, LinuxYasmine Amrani
 
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testableAgile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testableAssociation Agile Nantes
 
Tdd en action - découverte
Tdd en action - découverteTdd en action - découverte
Tdd en action - découverteEric Mignot
 
20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation MavenArnaud Héritier
 
Agile tour 2015 alliés contre les défauts
Agile tour 2015   alliés contre les défautsAgile tour 2015   alliés contre les défauts
Agile tour 2015 alliés contre les défautsJulien Jakubowski
 
Allons plus loin avec Selenium
Allons plus loin avec SeleniumAllons plus loin avec Selenium
Allons plus loin avec SeleniumSOAT
 
"5 fausses idées reçues sur l’UX" par Joel Schillio
"5 fausses idées reçues sur l’UX" par Joel Schillio "5 fausses idées reçues sur l’UX" par Joel Schillio
"5 fausses idées reçues sur l’UX" par Joel Schillio TheFamily
 
Intégration continue transco
Intégration continue transcoIntégration continue transco
Intégration continue transcolaurent_opnworks
 
Solutions Linux 2010 - Maîtrise du développement PHP
Solutions Linux 2010 - Maîtrise du développement PHPSolutions Linux 2010 - Maîtrise du développement PHP
Solutions Linux 2010 - Maîtrise du développement PHPJean-Marc Fontaine
 
Revues de code - Forum PHP 2010
Revues de code - Forum PHP 2010Revues de code - Forum PHP 2010
Revues de code - Forum PHP 2010Jean-Marc Fontaine
 
JCertif 2012 : Integration continue avec Jenkins
JCertif 2012 : Integration continue avec JenkinsJCertif 2012 : Integration continue avec Jenkins
JCertif 2012 : Integration continue avec JenkinsRossi Oddet
 
Industrialiser PHP - Open World Forum 2011
Industrialiser PHP - Open World Forum 2011Industrialiser PHP - Open World Forum 2011
Industrialiser PHP - Open World Forum 2011Jean-Marc Fontaine
 

Tendances (14)

5- [ASP.NET Core] Devops : VSTS, Git, Azure, Docker, Linux
5- [ASP.NET Core] Devops : VSTS, Git, Azure, Docker, Linux5- [ASP.NET Core] Devops : VSTS, Git, Azure, Docker, Linux
5- [ASP.NET Core] Devops : VSTS, Git, Azure, Docker, Linux
 
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testableAgile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
 
Tdd en action - découverte
Tdd en action - découverteTdd en action - découverte
Tdd en action - découverte
 
Université du soir - TDD
Université du soir - TDDUniversité du soir - TDD
Université du soir - TDD
 
20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven
 
Agile tour 2015 alliés contre les défauts
Agile tour 2015   alliés contre les défautsAgile tour 2015   alliés contre les défauts
Agile tour 2015 alliés contre les défauts
 
Allons plus loin avec Selenium
Allons plus loin avec SeleniumAllons plus loin avec Selenium
Allons plus loin avec Selenium
 
"5 fausses idées reçues sur l’UX" par Joel Schillio
"5 fausses idées reçues sur l’UX" par Joel Schillio "5 fausses idées reçues sur l’UX" par Joel Schillio
"5 fausses idées reçues sur l’UX" par Joel Schillio
 
Intégration continue transco
Intégration continue transcoIntégration continue transco
Intégration continue transco
 
Solutions Linux 2010 - Maîtrise du développement PHP
Solutions Linux 2010 - Maîtrise du développement PHPSolutions Linux 2010 - Maîtrise du développement PHP
Solutions Linux 2010 - Maîtrise du développement PHP
 
Revues de code - Forum PHP 2010
Revues de code - Forum PHP 2010Revues de code - Forum PHP 2010
Revues de code - Forum PHP 2010
 
JCertif 2012 : Integration continue avec Jenkins
JCertif 2012 : Integration continue avec JenkinsJCertif 2012 : Integration continue avec Jenkins
JCertif 2012 : Integration continue avec Jenkins
 
Industrialiser PHP - Open World Forum 2011
Industrialiser PHP - Open World Forum 2011Industrialiser PHP - Open World Forum 2011
Industrialiser PHP - Open World Forum 2011
 
Normandy JUG integration Continue
Normandy JUG integration ContinueNormandy JUG integration Continue
Normandy JUG integration Continue
 

Similaire à Une application sans framework en 2019

conception et réalisation plateforme collaboratif basant sur la methode agile...
conception et réalisation plateforme collaboratif basant sur la methode agile...conception et réalisation plateforme collaboratif basant sur la methode agile...
conception et réalisation plateforme collaboratif basant sur la methode agile...Sid Ahmed Benkraoua
 
Génie Logiciel.pptx
Génie Logiciel.pptxGénie Logiciel.pptx
Génie Logiciel.pptxLatifaBen6
 
L’informatique efficience
L’informatique efficienceL’informatique efficience
L’informatique efficienceMichel Bruchet
 
Processus d’intégration continue et outils
Processus d’intégration continue et outilsProcessus d’intégration continue et outils
Processus d’intégration continue et outilsAgile Tour 2009 Québec
 
Chapitre 1 - Introcution & cycles de développement - Etudiant.pptx
Chapitre 1 - Introcution & cycles de développement - Etudiant.pptxChapitre 1 - Introcution & cycles de développement - Etudiant.pptx
Chapitre 1 - Introcution & cycles de développement - Etudiant.pptxssuserec8501
 
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement MicrosoftChristophe HERAL
 
Cours Génie Logiciel 2016
Cours Génie Logiciel 2016Cours Génie Logiciel 2016
Cours Génie Logiciel 2016Erradi Mohamed
 
Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...
Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...
Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...Xavier Lacot
 
Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, ré...
Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, ré...Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, ré...
Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, ré...Association Agile Nantes
 
Comment récupérer un projet Web pourri ... et réussir à travailler dessus.
Comment récupérer un projet Web pourri ... et réussir à travailler dessus.Comment récupérer un projet Web pourri ... et réussir à travailler dessus.
Comment récupérer un projet Web pourri ... et réussir à travailler dessus.Guillaume RICHARD
 
2.2 cycles de vie
2.2 cycles de vie2.2 cycles de vie
2.2 cycles de vieHarun Mouad
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache MavenArnaud Héritier
 
De l’open source à l’open cloud
De l’open source à l’open cloudDe l’open source à l’open cloud
De l’open source à l’open cloudRobert Viseur
 
NightClazz Build Tools & Continuous Delivery
NightClazz Build Tools & Continuous DeliveryNightClazz Build Tools & Continuous Delivery
NightClazz Build Tools & Continuous DeliveryZenika
 
presentationSCRUM.pptx
presentationSCRUM.pptxpresentationSCRUM.pptx
presentationSCRUM.pptxFaouziRBEIHI
 
a Supply Chain a pour mission de gérer de bout en bout les flux
a Supply Chain a pour mission de gérer de bout en bout les fluxa Supply Chain a pour mission de gérer de bout en bout les flux
a Supply Chain a pour mission de gérer de bout en bout les fluxDanielMohamed4
 
Joseph Glorieux & Mathieu Brun Maintenant que mon delivery pipeline est en pl...
Joseph Glorieux & Mathieu Brun Maintenant que mon delivery pipeline est en pl...Joseph Glorieux & Mathieu Brun Maintenant que mon delivery pipeline est en pl...
Joseph Glorieux & Mathieu Brun Maintenant que mon delivery pipeline est en pl...matteo mazzeri
 

Similaire à Une application sans framework en 2019 (20)

conception et réalisation plateforme collaboratif basant sur la methode agile...
conception et réalisation plateforme collaboratif basant sur la methode agile...conception et réalisation plateforme collaboratif basant sur la methode agile...
conception et réalisation plateforme collaboratif basant sur la methode agile...
 
Génie Logiciel.pptx
Génie Logiciel.pptxGénie Logiciel.pptx
Génie Logiciel.pptx
 
L’informatique efficience
L’informatique efficienceL’informatique efficience
L’informatique efficience
 
Processus d’intégration continue et outils
Processus d’intégration continue et outilsProcessus d’intégration continue et outils
Processus d’intégration continue et outils
 
Chapitre 1 - Introcution & cycles de développement - Etudiant.pptx
Chapitre 1 - Introcution & cycles de développement - Etudiant.pptxChapitre 1 - Introcution & cycles de développement - Etudiant.pptx
Chapitre 1 - Introcution & cycles de développement - Etudiant.pptx
 
Method XP
Method XP Method XP
Method XP
 
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
 
3 prototypage
3 prototypage3 prototypage
3 prototypage
 
Cours Génie Logiciel 2016
Cours Génie Logiciel 2016Cours Génie Logiciel 2016
Cours Génie Logiciel 2016
 
Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...
Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...
Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...
 
Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, ré...
Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, ré...Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, ré...
Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, ré...
 
Comment récupérer un projet Web pourri ... et réussir à travailler dessus.
Comment récupérer un projet Web pourri ... et réussir à travailler dessus.Comment récupérer un projet Web pourri ... et réussir à travailler dessus.
Comment récupérer un projet Web pourri ... et réussir à travailler dessus.
 
2.2 cycles de vie
2.2 cycles de vie2.2 cycles de vie
2.2 cycles de vie
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
 
De l’open source à l’open cloud
De l’open source à l’open cloudDe l’open source à l’open cloud
De l’open source à l’open cloud
 
Etude des Frameworks PHP
Etude des Frameworks PHPEtude des Frameworks PHP
Etude des Frameworks PHP
 
NightClazz Build Tools & Continuous Delivery
NightClazz Build Tools & Continuous DeliveryNightClazz Build Tools & Continuous Delivery
NightClazz Build Tools & Continuous Delivery
 
presentationSCRUM.pptx
presentationSCRUM.pptxpresentationSCRUM.pptx
presentationSCRUM.pptx
 
a Supply Chain a pour mission de gérer de bout en bout les flux
a Supply Chain a pour mission de gérer de bout en bout les fluxa Supply Chain a pour mission de gérer de bout en bout les flux
a Supply Chain a pour mission de gérer de bout en bout les flux
 
Joseph Glorieux & Mathieu Brun Maintenant que mon delivery pipeline est en pl...
Joseph Glorieux & Mathieu Brun Maintenant que mon delivery pipeline est en pl...Joseph Glorieux & Mathieu Brun Maintenant que mon delivery pipeline est en pl...
Joseph Glorieux & Mathieu Brun Maintenant que mon delivery pipeline est en pl...
 

Une application sans framework en 2019

  • 1. Une application sans framework en 2019 Afup day Lille 2019 - Rodrigue Villetard
  • 2. Mon contexte - Application dite “de gestion” - Durée de vie de l’application estimée à 5+ années - Rythme d’évolution en dents de scie - Peu de contraintes de performance - Développement en solo - Engagé sur la maintenance
  • 3. Mon objectif en tant que développeur - Développer et livrer le premier lot : être payé - Avoir un coût de maintenance réduit sur la durée de vie du projet - Réduire la frustration de devoir retourner sur un “vieux” projet
  • 4. La tentation des « getting started in less than 5 » - Démarrage et livraison ultra rapide des premières itérations - Pas de question existentielle : on suit les bonnes pratiques - On dégoupille du CRUD à la seconde avec les générateurs cli - Le projet avance bien dès le début, tout le monde est content et on se concentre sur le swag pour les démos clients.
  • 5. Sauf que… On réalise souvent tardivement que l’application ne se résout pas à quatre lettres. Productivité Vie du projet Première fonctionnalité autre que CRUD, Et premier bidouillage Coincé dans le CRUD !
  • 6. Sauf que… Ces 5 dernières années : - 3 versions majeures de symfony - 10 versions majeures de laravel - Incertitudes Zend framework <> laminas - Silex abandonné - … Retourner 2 ans plus tard sur un projet avec 3 versions majeures de retard, c’est pénible. Faire les montées de versions, c’est pénible Reprendre les anciennes bonnes pratiques, c’est pénible
  • 7. Encore en plus que… Les frameworks ne viennent pas seuls : chacun y va de son système d’extension (Bundles, Plugins, etc.) Le cycle de vie des extensions est généralement plus imprévisible que celui des frameworks. FosUserBundle anyone?
  • 8. Mais quand même… - Documentation - Qualité générale - Communauté - Rapidité de développement - Intégration de nouveaux développeurs sur le projet - Curiosité d’essayer les nouveautés - …
  • 9. Conclusion sur les tentations Dans mon cas, j’ai favorisé la stabilité dans le temps de mon projet plutôt que de profiter des atouts d’un framework. (et faut bien avouer que ça avait l’air d’être un exercice de style rafraîchissant)
  • 10. Choix de la philosophie et de l’architecture du projet - Domain Driven Design - Hexagonal architecture - CQRS simplifié - Post inheritance age of OOP
  • 11. Domain Driven Design (Kent Beck) Couplage intense entre l’organisation du métier et l’implémentation logicielle
  • 12. Architecture hexagonale (Alistair Cockburn) Aucune classe ou interface tierce À l’intérieur de l’hexagone ! Les drivers et adapters font le pont entre notre système et leur fonction.
  • 13. CQRS Simplifié Point d’entrée **unique** dans l’hexagone
  • 15. Sauf que… Productivité ressentie (et réelle) au début du projet
  • 16. Premier retour d’expérience L’implémentation des infrastructures (base de données, router et inversion de contrôle notamment) est consommatrice de temps, complexe et sans réel intérêt pour l’application. Chaque petit pas en avant nécessite une réflexion sur l’architecture (et ralenti l’implémentation) Le réflexe primaire de recréer un framework est un combat de chaque instant
  • 17. Intégration sous contrôle de librairies tierces - Se prémunir des breaking change - Restreindre la surface exposée à ce qui est utilisé par l’application - Homogénéité du “style” de l’application On bénéficie alors d’implémentations éprouvées, sûres et de qualités sans affaiblir ou tordre notre architecture. Ma règle sur ce projet : Les librairies tiers n’ont pas le droit d’ être visibles depuis l’intérieur de l’hexagone :
  • 18. Productivité Intégration de librairies tierces Effet positif des librairies tierces
  • 20. - Éviter au maximum les implémentations astucieuses - Typage le plus fort possible (ValueObjects, Interface, Type hints) - Utilisation d’outils d’analyses statiques (phpstan) - Tests unitaires (phpunit) - Tests fonctionnels (behat) - Clean code et lint (php-cs-fixer) - Intégration continue sévère - Choix de dépendances à faible risque Stratégie de maintenance facile en place
  • 21. - Vivre le stress - Vivre le doute du client face aux premières livraisons - Vivre l’aventure et les grandes (re)découvertes - Un voyage qui se prépare Conclusion, se passer d’un framework, c’est :
  • 22. Rendez-vous dans 5 pour vous dire si ça valait le coût !
  • 23. Kudos techniques et communautaires
  • 24. Merci, mangez des pommes et bon week end ! Rodrigue Villetard – @gorghoa =