Your SlideShare is downloading. ×
0
Lucas Bonnet Pierre Couzy
◦ Dans le temps◦ Dans l’environnement d’exécution◦ Dans les évolutions
   Les prérequis ?    ◦ Le runtime PHP    ◦ Les extensions    ◦ Logging   L’appli ?    ◦ Paramétrage    ◦ La base de don...
Un premier impact sur les versions majeures     Fonctions obsolètes     Vieux workarounds qui cessent de fonctionner    ...
   Installez php sans extensions   Activez le reporting   Ajoutez le strict minimum   Mettez php.ini au carré   Ne je...
   Calendar : installé ou pas ?   Mb_string : en mod_php sur 5.2 en mutu, si    des sites activent mb_string les autres ...
   À faire sur la bécane de dev et après chaque    mise en prod et à garder dans les docs
   Les composants tiers (FW, plugins, etc.)   Les paramètres de déploiement   Les paramètres de fonctionnement   L’adh...
   Des paramètres regroupés   Différenciés par    environnement de    déploiement   Différenciés par nature    ◦ appli/...
   Le minimum syndical    ◦ Une couche technique d’abstraction    ◦ Un référentiel pour les requêtes custom   PDO    ◦ P...
   A votre avis ?    ◦   Images uploadées    ◦   Sessions    ◦   Fichiers auto-générés    ◦   Logs    ◦   Code uploadé pa...
   Quelques questions simples    ◦   Conventions ?    ◦   Permissions ?    ◦   Abstraction ? (wrappers etc)    ◦   Limite...
   Fichiers auto-générés   Vignettes   Sessions   Paramétrage des logs    ◦ Log errors = on    ◦ display_errors = off ...
   Les 5 principales causes couvrent 86% des    attaques recensées   Comment se couvrir ?   Coverity   Php lint
   Séparez les données    ◦ UGC    ◦ Données de structure / modules / etc   Exemple : Drupal, un nouveau module    ◦   L...
   C’est quoi l’adresse de ton SMTP ?    ◦ Si c’est pour quelques mails l’hébergeur peut      éventuellement le fournir  ...
   Profils de charge inattendus    ◦ Un appel synchrone à FB oublié dans un coin sur la      home   La base s’éloigne   ...
Un process par                           Chargement de                 Gestion d’un pool                                  ...
http://forge.bearstech.com/trac/wiki/DebianLampLenny
   Optimiser, c’est mal    ◦ En dev      Avant la mise en prod        Par copier/coller de trucs sur internet
   Sur la bécane    ◦   Cache d’opcode    ◦   Cache de résolution dns/filesystem    ◦   User code ?    ◦   Caches de rend...
   Tables à croissance infinie   Requêtes non cachées   Requêtes impliquant un table scan   Select * from MyHugeNewsTa...
   Mon premier déploiement    ◦ Coupez le réseau de la machine du développeur et      filez-lui une clé USB.   Pour les ...
Développer et déployer une application php maintenable
Développer et déployer une application php maintenable
Développer et déployer une application php maintenable
Développer et déployer une application php maintenable
Développer et déployer une application php maintenable
Upcoming SlideShare
Loading in...5
×

Développer et déployer une application php maintenable

2,479

Published on

PHP Tour Lille 2011

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,479
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
34
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Voir comment phpparse ses includes
  • Transcript of "Développer et déployer une application php maintenable"

    1. 1. Lucas Bonnet Pierre Couzy
    2. 2. ◦ Dans le temps◦ Dans l’environnement d’exécution◦ Dans les évolutions
    3. 3.  Les prérequis ? ◦ Le runtime PHP ◦ Les extensions ◦ Logging L’appli ? ◦ Paramétrage ◦ La base de données ◦ Les autres données La prod ? ◦ Le serveur ◦ Les caches ◦ Retour sur la base de données Le déploiement
    4. 4. Un premier impact sur les versions majeures  Fonctions obsolètes  Vieux workarounds qui cessent de fonctionner  Nouveaux bugsMais aussi sur les versions mineures  Corrections apportées suite à l’analyse par CoVerity  Gestion d’erreur parfois subtilement différente  Exemples : Eval, PDOEt enfin selon l’OS  Profil de perf TRES différent entre 5.2 et 5.3 sous WindowsLe choix du runtime va avoir de très grosses conséquences  Soit on fige une version de PHP en prod  Soit on sait recetter l’appli sur une nouvelle version de …
    5. 5.  Installez php sans extensions Activez le reporting Ajoutez le strict minimum Mettez php.ini au carré Ne jetez pas les extensions qui ne vous servent pas ? ◦ On est pas d’accord sur le sujet.
    6. 6.  Calendar : installé ou pas ? Mb_string : en mod_php sur 5.2 en mutu, si des sites activent mb_string les autres en “profitent” Au fait, quand on ajoute une extension à une install existante, on prend quelle version ? Un cauchemar particulier sous Windows ◦ Prenez les versions VC9 NTS pour IIS, et VC6 TS pour Apache
    7. 7.  À faire sur la bécane de dev et après chaque mise en prod et à garder dans les docs
    8. 8.  Les composants tiers (FW, plugins, etc.) Les paramètres de déploiement Les paramètres de fonctionnement L’adhérence à la base de données Le filesystem Etc.
    9. 9.  Des 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
    10. 10.  Le minimum syndical ◦ Une couche technique d’abstraction ◦ Un référentiel pour les requêtes custom PDO ◦ Pas complet, mais on a pas mieux. Une parenthèse sur les ORM
    11. 11.  A votre avis ? ◦ Images uploadées ◦ Sessions ◦ Fichiers auto-générés ◦ Logs ◦ Code uploadé par un admin (depuis l’IHM Web)
    12. 12.  Quelques questions simples ◦ Conventions ? ◦ Permissions ? ◦ Abstraction ? (wrappers etc) ◦ Limites à comprendre  Nb de fichiers/folders par …  Limites sur un nom de fichier ?  Permissions sur répertoires : pas toujours dispo
    13. 13.  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
    14. 14.  Les 5 principales causes couvrent 86% des attaques recensées Comment se couvrir ? Coverity Php lint
    15. 15.  Séparez 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 ◦ l’upgrade est faite par code
    16. 16.  C’est quoi l’adresse de ton SMTP ? ◦ Si c’est pour quelques mails l’hébergeur peut éventuellement le fournir ◦ Si c’est pour spammer on passe par un service dédié et externe (critsend, etc.) Tu peux m’ouvrir un accès FTP ? ◦ Pour de la mise en prod ? ◦ Pour de la mise à dispo d’exports divers et variés ◦ Pour du reparamétrage
    17. 17.  Profils de charge inattendus ◦ Un appel synchrone à FB oublié dans un coin sur la home La base s’éloigne ◦ Lag qui passe de 1 à 10 ms Saturations disque / RAM / réseau Oui, j’ai laissé l’historique dans la base, pourquoi tu demandes ça ?
    18. 18. Un process par Chargement de Gestion d’un pool FastCGI ISAPI & mod-phpCGI requête PHP in-process de process (surrogate IIS ou process Apache) Avantage Avantage Avantages • Très stable • Très performant • Plus rapide que CGI • Plus stable Inconvénient Inconvénients qu’ISAPI/mod_php • Permet de • *Très* lent sous • Stabilité fonctionner sans Windows (coût • Réentrance réentrance énorme de création d’un process)
    19. 19. http://forge.bearstech.com/trac/wiki/DebianLampLenny
    20. 20.  Optimiser, c’est mal ◦ En dev  Avant la mise en prod  Par copier/coller de trucs sur internet
    21. 21.  Sur la bécane ◦ Cache d’opcode ◦ Cache de résolution dns/filesystem ◦ User code ? ◦ Caches de rendu divers et variés ◦ Cache de bdd Entre bécanes ◦ Sessions dans memcache/redis/.. Au cul des bécanes ◦ Varnish (cookie de session anyone ?)
    22. 22.  Tables à croissance infinie Requêtes non cachées Requêtes impliquant un table scan Select * from MyHugeNewsTable … Order by rand() Fonctionnellement, une jointure est équivalente à une boucle. Les BDD savent optimiser les requêtes identiques (par exemple les requêtes paramétrées) ◦ Il y toujours PDO::ATTR_EMULATE_PREPARES si vous en avez besoin
    23. 23.  Mon premier déploiement ◦ Coupez le réseau de la machine du développeur et filez-lui une clé USB. Pour les suivants, automatisez ◦ Aujourd’hui ce n’est pas la norme … Et on est polis Un contrôleur de source ça peut garder plein de trucs ◦ Y compris une appli qui n’est pas sous contrôle de source avant l’arrivée en prod
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×