Développer et déployer une application php maintenable

3 002 vues

Publié le

PHP Tour Lille 2011

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
3 002
Sur SlideShare
0
Issues des intégrations
0
Intégrations
7
Actions
Partages
0
Téléchargements
42
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive
  • Voir comment phpparse ses includes
  • 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

    ×