php : écrire et déployer des applications maintenables !

40
Christophe Villeneuve Consultant PHP Alter Way Ecrire et déployer une appli PHP maintenable Pierre Couzy Relation technique FLOSS Microsoft 7 Février 2012

Upload: microsoft-developpeurs

Post on 22-Apr-2015

209 views

Category:

Technology


3 download

DESCRIPTION

Microsoft s'est intéressé de plus en plus à l'écosystème PHP ces dernières années afin de lui offrir un accueil de choix. Christophe Villeneuve et Pierre Couzy feront le tour des bonnes habitudes à acquérir, notamment les aspects spécifiques à Windows. Paramétrage, sécurité, déploiement, extensions, outils, ORM, etc. Session interactive, venez avec vos questions !

TRANSCRIPT

Page 1: PHP : écrire et déployer des applications maintenables !

Christophe VilleneuveConsultant PHP

Alter Way

Ecrire et déployer une appli PHP maintenable

Pierre CouzyRelation technique FLOSS

Microsoft

7 Février 2012

Page 2: PHP : écrire et déployer des applications maintenables !

Pourquoi nous ?

Christophe Villeneuve Pierre Couzy

Page 3: PHP : écrire et déployer des applications maintenables !

Select login from user where id=31

Select password from user where id=31

If (password === pwd) select …

Machin = select toto from …

If ! cache(« machin ») Cache(« machin ») = Machin

blabla

Un petit quiz ?

Select * from MaTable order by rand()

C’est corrigé ?Oui.Testé ?Oui, la page fonctionne au poilBon, on déploie !

Page 4: PHP : écrire et déployer des applications maintenables !

Les incontournablesOutilsRuntimeExtensions

Code et dépendances ParamétrageLes donnéesLes autres points

La productionLe serveurL’optimisationLe cacheLe déploiement

Par où commencer ?

Page 5: PHP : écrire et déployer des applications maintenables !

Les incontournables

Page 6: PHP : écrire et déployer des applications maintenables !

Les outils

http://www.flickr.com/photos/fruhjk/5145895601/sizes/z/in/photostream/

Page 7: PHP : écrire et déployer des applications maintenables !

Les outils

Liés avec le système d'exploitationLinux, 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)

Page 8: PHP : écrire et déployer des applications maintenables !

Le runtime

Page 9: PHP : écrire et déployer des applications maintenables !

La version de PHP

PHP 5.3 & +PHP 5.2

Page 10: PHP : écrire et déployer des applications maintenables !

La version de PHPL'OS

Profil de performance différent entre les différentes versions PHP (5.2 et 5.3 pour windows)

Impact sur les versions majeuresFonctions obsolètesVieux workarounds qui cessent de fonctionnerNouveaux bugs

Impact sur les versions mineuresCorrections apportées suite à l'analyse par CoVerityGestion d'erreurs parfois subtilement différenteExemples : Eval / PDO

Choix du runtime va avoir de grosses conséquences

Le graal : recetter l'application sur une nouvelle versionLa vraie vie : Figer une version de PHP en prod

Page 11: PHP : écrire et déployer des applications maintenables !

PHP 5.4Comment s'y préparer ?

Un overview des nouveautés et différencesServeur HTTP → php -S localhost:8000Les traitsE_STRICT couvert par error_reporting (E_ALL)

L'impact sur vos applicationsEvolutions des ARRAYsEconomie de mémoire en désactivant

des données venant de $_POST

L'impact sur windows

Page 12: PHP : écrire et déployer des applications maintenables !

Les extensions

Page 13: PHP : écrire et déployer des applications maintenables !

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 IISVC 6 TS (Apache) : NON, stop, laissez tomber !

Page 14: PHP : écrire et déployer des applications maintenables !

ExtensionsInstaller PHP sans extensionsActiver le reportingAjouter le strict minimumMettez php.ini au carré

Ne pas jeter

Les extensions inutiles

Page 15: PHP : écrire et déployer des applications maintenables !
Page 16: PHP : écrire et déployer des applications maintenables !

Gestion versions/extensions

Ça reste un problème délicat

Page 17: PHP : écrire et déployer des applications maintenables !

phpinfo()

A vérifier sur la bécane de développement et après mise en prod et à garder dans les docs

Page 18: PHP : écrire et déployer des applications maintenables !

L'application

OK, peut-être que tout n’est pas écrit en PHP dans cette illustration.

Page 19: PHP : écrire et déployer des applications maintenables !

Paramétrage

Page 20: PHP : écrire et déployer des applications maintenables !

Le paramétrage

© symfony

Page 21: PHP : écrire et déployer des applications maintenables !

Regrouper les paramètres

© Wordpress 

Page 22: PHP : écrire et déployer des applications maintenables !

A retenirParamè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

Page 23: PHP : écrire et déployer des applications maintenables !

Les données

Page 24: PHP : écrire et déployer des applications maintenables !

Base de donnéesLe minimumUne couche technique

d'abstractionUn référentiel pour les

requêtes custom

PDOPas complet

Une parenthèse sur les ORM ?

NoSQL ?

Page 25: PHP : écrire et déployer des applications maintenables !

ORM ou pas ORM ?Les gros :

Doctrine, Propel

Les petits :Micro-ORMKohana, Paris, ADODB

Vous devez faire un choix :Plus c'est gros moins on le comprendQuand on choisit un composant, on le supporte (on maintient les versions, on suit les patches, etc.)

Aucun ORM = plein de problèmes

Page 26: PHP : écrire et déployer des applications maintenables !

NoSQL  ?

PourMontée en charge séduisanteGestion de déploiement familière

ContreQui s’y frotte …

Pour en savoir plus remontez dans le temps

(session était à 13h00)

Page 27: PHP : écrire et déployer des applications maintenables !

Les autres points

Page 28: PHP : écrire et déployer des applications maintenables !

Mise à jourPage offline pour MAJ

au lieu de couper le serveur et de manger des 404...

Stratégie de mise à jourSéparer les donnéesUGCDonnées de structure / modules / etc

Exemple : Drupal (un nouveau module)Le filesystemLa base de donnéesMême sans contenus utilisateurL'upgrade est fait par code

Page 29: PHP : écrire et déployer des applications maintenables !

Log,trace,instrumentation ? Fichiers auto-générés Vignettes Sessions Paramétrage des logs

Log errors = onDisplay_errors = offE_STRICT (!!)E_ALLE_DEPRECATEDE_NOTICE

Page 30: PHP : écrire et déployer des applications maintenables !

Sécurité 5 premiers trous => 86% en 2010

InjectionCross Site Scripting (XSS)Violation d'authentification et de sessionRéférences directes non sécurisées à un objetFalsification de requête intersite (CSRF)

Comment se protéger ?Vega (http://subgraph.com)PHP Lint (http://www.icosaedro.it/phplint/)

Page 31: PHP : écrire et déployer des applications maintenables !

Production & perfs

Page 32: PHP : écrire et déployer des applications maintenables !

Montée en chargeRéseau

Temps de réponse plus long

→ Lag qui passe de 1 à 10 ms

Base de données

L'historique est dans la base de données

→ Pourquoi la question ?

Code

Profils de charge inattendus

→ Un appel synchrone à FB oublié sur la Home Page

Matériel

Quelques mégas sur disque,

→ c'est raisonnable ?

Page 33: PHP : écrire et déployer des applications maintenables !

De CGI à FastCGI

Page 34: PHP : écrire et déployer des applications maintenables !

Et ça marche ?

http://forge.bearstech.com/trac/wiki/DebianLampLenny

Page 35: PHP : écrire et déployer des applications maintenables !

OptimisationOptimiser c'est malEn DEVAvant la mise en prodPar copier / coller des trucs sur internet

Page 36: PHP : écrire et déployer des applications maintenables !

Gestion du cache Sur le serveurCache d'opcodeCache de résolution dns/filesystemUser code ?Caches de rendu divers et variésCache de Base de données

Entre bécancesSession dans APC / Memcache...

Au cul des bécances Varnish / Akamaï (Session de cookie ?)

Page 37: PHP : écrire et déployer des applications maintenables !

Le déploiement

Page 38: PHP : écrire et déployer des applications maintenables !

Il reste... le déploiement

FTP / FTPsSMTP

Quelques emails Votre hébergeur

Pour du SPAMService dédié et externe (cristend,etc.)

OutilsSendGridSarbacaneEMailing Automate (EMA)

En PHP EmailingphpList

Pour la mise en prod

Exports divers et variés

Reparamétrage

Page 39: PHP : écrire et déployer des applications maintenables !

Conclusion Automatiser la chaine de build

Tout ce qui a été vu avantUne passe sur l'analyseur statique de codeUne passe sur le générateur de docUn rapport et tagger la version dans le contrôleur

Si vous ne pouvez pasFaîtes installer l'application par quelqu'un d'autreNe déranger pas cette personne lors de l'install

Tout livrer et documenter l'installation

Page 40: PHP : écrire et déployer des applications maintenables !

Merci ! Questions ?

hellosct1