Ecrire et déployer une appli PHP maintenable

1 060 vues

Publié le

Conférence 'Ecrire et déployer une appli PHP maintenable' présentée au TechDays 2012 à Paris par Christophe Villeneuve et Pierre Couzy

Publié dans : Technologie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
1 060
Sur SlideShare
0
Issues des intégrations
0
Intégrations
2
Actions
Partages
0
Téléchargements
16
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Ecrire et déployer une appli PHP maintenable

  1. 1. Ecrire et déployer uneappli PHP maintenable Christophe Villeneuve Pierre Couzy Consultant PHP Relation technique FLOSS Alter Way Microsoft 7 Février 2012
  2. 2. Pourquoi nous ?Christophe Villeneuve Pierre Couzy
  3. 3. Un petit quiz ?Select * from MaTable order by rand() Select login from user where id=31 Select password from user where id=31 If (password === pwd) select …Machin = select toto from … C’est corrigé ? Oui.If ! cache(« machin ») Testé ? Cache(« machin ») = Machin Oui, la page fonctionne au poil Bon, on déploie !blabla
  4. 4. Par où commencer ? Les incontournables Outils Runtime Extensions Code et dépendances  Paramétrage Les données Les autres points La production Le serveur L’optimisation Le cache Le déploiement
  5. 5. Les incontournables
  6. 6. Les outilshttp://www.flickr.com/photos/fruhjk/5145895601/sizes/z/in/photostream/
  7. 7. Les outils Liés avec le système dexploitation Linux, Mac, Windows Environnement embarqué (AMP) Wampserver, EasyPHP, Xampp, Mampp, WebMatrix IDE (Editeurs dits intelligents) Eclipse, NetBean, PHPstorm, Zend Studio (y a même VS.php pour Visual Studio)
  8. 8. Le runtime
  9. 9. La version de PHP PHP 5.2 PHP 5.3 & +
  10. 10. La version de PHP LOS Profil de performance différent entre les différentes versions PHP (5.2 et 5.3 pour windows) Impact sur les versions majeures Fonctions obsolètes Vieux workarounds qui cessent de fonctionner Nouveaux bugs Impact sur les versions mineures Corrections apportées suite à lanalyse par CoVerity Gestion derreurs parfois subtilement différente
  11. 11. PHP 5.4Comment sy préparer ? Un overview des nouveautés et différences Serveur HTTP → php -S localhost:8000 Les traits E_STRICT couvert par error_reporting (E_ALL) Limpact sur vos applications Evolutions des ARRAYs Economie de mémoire en désactivant des données venant de $_POST Limpact sur windows
  12. 12. Les extensions
  13. 13. Les extensions, c’est facile ! Calendar : installé ou pas ? Mb_string : en mod_php sur 5.2 en mutualisé Si l’un active mb_string les autres en profitent Si vous ajoutez une extension dans une install existante, vous prenez quelle version ? La fin du cauchemar sous Windows  VC 9 NTS pour IIS VC 6 TS (Apache) : NON, stop, laissez tomber !
  14. 14. Extensions Installer PHP sans extensions Activer le reporting Ajouter le strict minimum Mettez php.ini au carré Ne pas jeter Les extensions inutiles
  15. 15. Gestion versions/extensionsÇa reste un problème délicat
  16. 16. phpinfo() A vérifier sur la bécane de développement et après mise en prod et à garder dans les docs
  17. 17. LapplicationOK, peut-être que tout n’est pas écrit en PHP dans cette illustration.
  18. 18. Paramétrage
  19. 19. Le paramétrage © symfony
  20. 20. Regrouper les paramètres © Wordpress 
  21. 21. A retenir Paramètres regroupés Différenciés par environnement de déploiement Différenciés par nature appli / infra / opti / … Préférez des formats texte … et documentés © Joomla
  22. 22. Les données
  23. 23. Base de données Le minimum Une couche technique dabstraction Un référentiel pour les requêtes custom PDO Pas complet Une parenthèse sur les ORM ? NoSQL ?
  24. 24. ORM ou pas ORM ? Les gros : Doctrine, Propel Les petits : Micro-ORM Kohana, Paris, ADODB Vous devez faire un choix : Plus cest gros moins on le comprend Quand on choisit un composant, on le supporte (on maintient les versions, on suit les patches, etc.) Aucun ORM = plein de problèmes
  25. 25. NoSQL  ? Pour Montée en charge séduisante Gestion de déploiement familière Contre Qui s’y frotte … Pour en savoir plus remontez dans le temps (session était à 13h00)
  26. 26. Les autres points
  27. 27. Mise à jour Page offline pour MAJ au lieu de couper le serveur et de manger des 404... Stratégie de mise à jour Séparer les données UGC Données de structure / modules / etc Exemple : Drupal (un nouveau module) Le filesystem La base de données Même sans contenus utilisateur Lupgrade est fait par code
  28. 28. Log,trace,instrumentation ? Fichiers auto-générés Vignettes Sessions Paramétrage des logs Log errors = on Display_errors = off E_STRICT (!!) E_ALL E_DEPRECATED E_NOTICE
  29. 29. Sécurité 5 premiers trous => 86% en 2010 Injection Cross Site Scripting (XSS) Violation dauthentification et de session Références directes non sécurisées à un objet Falsification de requête intersite (CSRF) Comment se protéger ? Vega (http://subgraph.com) PHP Lint (http://www.icosaedro.it/phplint/)
  30. 30. Production & perfs
  31. 31. Montée en chargeCode RéseauProfils de charge inattendus Temps de réponse plus long→ Un appel synchrone à FB → Lag qui passe de 1 à 10 msoublié sur la Home PageBase de données MatérielLhistorique est dans la base de Quelques mégas sur disque,données → cest raisonnable ?→ Pourquoi la question ?
  32. 32. De CGI à FastCGI
  33. 33. Et ça marche ? http://forge.bearstech.com/trac/wiki/DebianLampLenny
  34. 34. Optimisation Optimiser cest mal En DEV Avant la mise en prod Par copier / coller des trucs sur internet
  35. 35. Gestion du cache Sur le serveur Cache dopcode Cache de résolution dns/filesystem User code ? Caches de rendu divers et variés Cache de Base de données Entre bécances Session dans APC / Memcache... Au cul des bécances Varnish / Akamaï (Session de cookie ?)
  36. 36. Le déploiement
  37. 37. Il reste... le déploiement SMTP FTP / FTPs Quelques emails Pour la mise en prod  Votre hébergeur Exports divers et variés Pour du SPAM  Service dédié et externe Reparamétrage (cristend,etc.) Outils  SendGrid  Sarbacane  EMailing Automate (EMA) En PHP  Emailing  phpList
  38. 38. Conclusion Automatiser la chaine de build Tout ce qui a été vu avant Une passe sur lanalyseur statique de code Une passe sur le générateur de doc Un rapport et tagger la version dans le contrôleur Si vous ne pouvez pas Faîtes installer lapplication par quelquun dautre Ne déranger pas cette personne lors de linstall Tout livrer et documenter linstallation
  39. 39. Merci ! Questions ? hellosct1

×