Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Industrialiser son ou ses projets WordPress - WordCamp Paris 2014

Amaury Balmer
January 17, 2014

Industrialiser son ou ses projets WordPress - WordCamp Paris 2014

WordPress est le CMS le plus utilisé sur Internet. Sa mythique installation en 5 minutes a permis de le démocratiser à un tel point qu’une grande majorité de ses utilisateurs sont des non-techniciens. Un CMS grand public, mais aussi un CMS de plus en plus apprécié et demandé par les professionnels.

Il devient alors nécessaire d’appliquer les méthodes d’industrialisation des projets web standards à son CMS préféré. La présentation veillera à présenter les mécanismes clefs de l’industrialisation d’un projet WordPress avec un discours adapté à l’ensemble des populations concernées par un projet web: le client, le chef de projet, le développeur et le devops (hébergeur/sysadmin).

Amaury Balmer

January 17, 2014
Tweet

More Decks by Amaury Balmer

Other Decks in Technology

Transcript

  1. + Industraliser ses projets WordPress WordCamp Paris 2014

  2. + Votre orateur n  Amaury BALMER n  CTO de l’agence

    BE API n  Ancien de la team WP-FR n  Co-auteur du book WordPress by Pearson n  WP Addict since 2005 ! n  Twitter n  @herewithme n  @be_api n  Web n  herewithme.fr n  beapi.fr n  amaury@balmer.fr
  3. + Pourquoi cette conférence ? n  5 ans de péripétie

    à BeAPI n  Taille d’équipe en constante évolution n  Nouvelles technologies n  Contraintes clientes n  La TMA prend une part de + en + importante
  4. + Industrialiser ?

  5. + Il y a fort longtemps

  6. + Aujourd’hui

  7. + Objectifs n Qualité n Fiabilité

  8. + Industrialiser ses projets informatiques, ses projets PHP !

  9. + THE CHECKLIST n  Faire appel à des experts n 

    Former les équipes n  Appliquer une convention de programmation n  Utiliser un dépot de code n  Utiliser un framework n  Adopter un IDE de développement n  Outil de ticketing n  Tests unitaires n  Tests fonctionnels n  Analyse statique n  Intégration continue n  Déploiement automatisé
  10. Facile !

  11. Industrialiser WP != PHP

  12. + Pourquoi ? n  WP couvre un périmètre très large

    n  Budget n  Fonctionnalité n  Client n  Trouver le bon ratio n  Des méthodes applicables à tout type de projet
  13. Automatiser les tâches répétitives

  14. Organiser le projet et les équipes

  15. + Au sommaire 1.  Un environnement de développement au TOP

    ! 2.  Combien d’environnements pour un projet ? 3.  Industrialiser les déploiements de son applicatif 4.  Comment recetter efficacement ses projets ? 5.  Quelle organisation pour la TMA ?
  16. + 1/5 Un environnement de développement au TOP ! Public:

    développeurs
  17. Piège n°1 : Utiliser l’éditeur de code de WordPress

  18. +

  19. Désactiver le !

  20. define('DISALLOW_FILE_EDIT',  true);  

  21. Piège n°2 : Editer directement les fichiers sur le serveur

  22. + Corruption de fichiers n  Prévoir le pire n  Incidents

    externe: n  Coupure de courant n  Coupure de connexion internet n  Plantage système n  Quota disque atteint n  Perte totale ou partielle de son travail
  23. Piège n°3 : Gérer un historique… manuellement L

  24. +

  25. STOP !

  26. 1 – Versionner le code source

  27. Qui ? Quand ? Quoi ?

  28. Visionner les différences

  29. Rollback

  30. + Quel outil de SCM ? n  Centralisé n  Simple

    à apprendre n  Gestion des branches chaotique n  Merge catastrophique n  WordPress l’utilise… n  Décentralisé n  Plus complexe à maitriser n  Gestion des branches incroyable n  Merge qui fonctionne n  Github SVN GIT
  31. 2 - Développer en local

  32. WAMP, MAMP, LAMP

  33. Mais ça, c’était (bien) avant ;)

  34. Say hello to "works on my machine" bugs.

  35. + Différences n  Système hôte (Windows/Linux/Mac OS) n  Version de

    PHP/Apache/MySQL n  Dimensionnement de la machine (RAM/CPU/DISK)
  36. + Dépendances n  Memcached n  Cache objet n  Elastic Search

    n  Recherche sémantique n  Il est parfois impossible d’installer ces softs sur Windows ou Mac !
  37. L’avenir = Virtualisation

  38. None
  39. Say goodbye to "works on my machine" bugs.

  40. +

  41. Vos outils de développement en local

  42. Code exécuté dans la VM !

  43. + Pour commencer n  Genesis WordPress n  https://github.com/genesis/wordpress n  Salty

    WordPress n  https://github.com/humanmade/Salty-WordPress n  VIP Quickstart n  https://github.com/Automattic/vip-quickstart
  44. + 2/5 Combien d’environnements pour un projet ? Public :

    tous
  45. Au minimum 2 !

  46. + Développement Qualif interne / Intégration Qualification Production

  47. Surdimensionné ?

  48. Comment cloner efficacement un site WP ?

  49. + Rappel technique WordPress Fichiers Base de données

  50. + Export / Import de la BDD n  Classique :

    PhpMyAdmin n  Alternative : Adminer n  Serveur : mysql / mysqldump n  Spécialisé : n  bigdump n  mysqldumper
  51. + Copie des fichiers n  Serveur à serveur : n 

    RSYNC n  LFTP n  CurlFTPS ! n  Alternative n  Création d’une archive, transfert, puis extraction n  Téléchargement en local puis renvoi… L
  52. URL absolues L http://example.com/page2/

  53. + Méthodes à oublier n  Constantes n  define('WP_HOME','http://example.com');   n 

    define('WP_SITEURL','http://example.com');   n  Requêtes SQL n  Rechercher/remplacer dans le fichier d’export SQL n  Plugins
  54. + Méthodes à considérer n  Scripts PHP autonome & générique

    ! n  Search Replace DB n  https://github.com/interconnectit/Search-Replace-DB n  DBSR: Database Search & Replace n  https://github.com/DvdGiessen/DBSR n  Plus fiable, plus rapide
  55. + 3/5 Industrialiser les déploiements de son applicatif

  56. 1 – Déployer du code

  57. Ajouter, Modifier, Supprimer

  58. Quelques principes

  59. Code de production = Code identifié et versionné

  60. Interdire les MAJ depuis le CMS Prévoir le pire… define('DISALLOW_FILE_MODS',

     true);  
  61. Déployer en qualif comme en production !

  62. Le déploiement pour tous !

  63. Déploiement automatisé

  64. + Automatisation d’actions n  Backup complète n  Vérifier que l’environnement

    est prêt à recevoir une nouvelle version (espace disque, charge serveur) n  Récupérer les modifications à appliquer n  Appliquer les modifications n  Nettoyer les caches applicatifs s’ils existent n  Et à tout moment : Rollback ! n  Prévoir le pire
  65. + Solutions open-source n  Capistrano / Webistrano n  Ruby n 

    Fabric n  Python
  66. Complexe & lié à SSH

  67. + Quels types d’accès ? 0 1 2 3 4

    5 6 0 2 4 6 8 10 Marge de manoeuvre Complexité
  68. Semi-industrialiser ses déploiements ?

  69. Alernative 1: Déployer avec le SCM

  70. svn update / git pull

  71. Alternative 2: Avec Git et FTP

  72. git ftp https://github.com/git-ftp/git-ftp

  73. Alternative 3 : Solutions “On demand” Rapide, simple mais payant

    !
  74. + A tester ! n deployhq.com n beanstalkapp.com n ftploy.com

  75. Un déploiement peut générer des actions back-office !

  76. 2 – Y’a pas que le code dans la vie

    !
  77. Scripter les actions back-office liées à un déploiement

  78. Exemple : Advanced Custom Fields Migration de la version 3

    vers 4
  79. 2 possibilités

  80. Ecrire et exécuter un script PHP

  81. + <?php   $blogs  =  get_blogs();     foreach  (

     $blogs  as  $blog  )  {    switch_to_blog(  $blog-­‐>blog_id  );      activate_plugin(  'bacf-­‐addon1/acf-­‐addon1.php',  true  );    activate_plugin(  'bacf-­‐addon2/acf-­‐addon2.php',  true  );    activate_plugin(  'bacf-­‐addon3/acf-­‐addon3.php',  true  );         }
  82. WP-CLI ! wp-cli.org

  83. wp-­‐cli  plugin  enable  ‘acf-­‐addon1’  –-­‐network   wp-­‐cli  plugin  enable  ‘acf-­‐addon2’

     –-­‐network   wp-­‐cli  plugin  enable  ‘acf-­‐addon3’  –-­‐network  
  84. 3 - Aucun accès ?

  85. Générer des archives différentielles avec le SCM

  86. git archive / svn ???

  87. Générer la liste des fichiers à supprimer avec le SCM

  88. git diff --name-status svn diff --summarize

  89. Documenter les livraisons Prévoir le pire…

  90. + 4/5 Comment recetter efficacement ses projets ? GDP /

    Client
  91. Le cahier de recette

  92. Idée reçue : “Je connais le périmètre du projet par

    coeur”
  93. Prévoir le pire !

  94. L’écrire dès que les développements sont lancés !

  95. + Groupe Test Réussi Espace utilisateur Créer un compte sans

    FB Oui Créer un compte avec FB Non Modifier son avatar Oui Modifier ses informations personnelles Oui Modifier son mot de passe Oui Supprimer son compte Oui Créer une galerie Oui Ajouter une photo Non Etc…
  96. Chiant, long et répétitif …

  97. Le rééxécuter à chaque déploiement !

  98. Effets de bord

  99. Chiant, long et répétitif …

  100. Automatisez-les !

  101. Selenium

  102. + Kesako ? n  Extension Firefox n  Enregistrer un scénario

    n  Créer un compte utilisateur n  Ajouter une photo n  Ajouter un commentaire n  Exécuter un scénario ponctuellement n  Application Java n  Executer massivement des scénarios n  Firefox n  Chrome n  IE Selenium IDE Selenium WebDriver
  103. Webdriver = Java

  104. +

  105. Mise en place complexe

  106. Privilégier les solutions “On demand”

  107. + A tester ! n saucelabs.com n browserstack.com/automate n  nerrvana.com n  testingbot.com

  108. Maintenance préventive

  109. + 5/5 Quelle organisation pour la TMA ? GDP /

    Client / Dev
  110. TMA = Tierce Maintenance Applicative Corrections & évolutions

  111. 1 demande cliente = 1 ticket

  112. Adopter un outil de ticket

  113. Redmine / Trac / Jira !

  114. + 1 ticket n  Date de création n  Rapporteur n 

    Sujet n  Description n  Captures d’écran n  Navigateurs affectés n  Etc.
  115. Prédiction trop aléatoire sur la date de mise en production

  116. Considérer son projet comme un applicatif

  117. Numérotation des versions de l’application

  118. Adopter une politique de versionning adaptée

  119. 1 ticket = 1 branche dans le SCM

  120. Complexe ? Tout dépend du SCM…

  121. 1 version = 1 à n tickets

  122. Le chef de projet et le client maitrisent le cycle

    de vie du projet
  123. Créer une version

  124. Fusion des branches dites “de tickets” dans la version stable

  125. Tag de la version dans le SCM

  126. GIT, GIT, GIT

  127. + C’est déjà fini ! Si peu…

  128. Passionné(e) par ces problématiques ? BE API recrute ! recrutement@beapi.fr

  129. Merci de votre attention ! Des questions ?