Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7
description
Transcript of Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7
![Page 1: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/1.jpg)
1/66 • Drupal : worst current practice • © OSInet
Drupal : Best Worst current practice
Par Frédéric G. Marand
![Page 2: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/2.jpg)
2/66 • Drupal : worst current practice • © OSInet
Drupagora
Paris le 14 novembre 2014
![Page 3: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/3.jpg)
3/66 • Drupal : worst current practice • © OSInet
DRUPAGEDDON
![Page 4: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/4.jpg)
5/66 • Drupal : worst current practice • © OSInet
CAS D'ÉCOLE : DRUPAGEDDON
LES DONNÉES
https://www.drupal.org/SA-CORE-2014-005
https://www.drupal.org/PSA-2014-003
EN PRODUCTION : un site qui ne suit pas les bonnes pratiques ades difficultés à appliquer la MàJ rapidement• Combien de minutes avant de déployer sur votre site ?• Pourquoi si longtemps ?• Comment améliorer ?• Comment gérer les suites ?
Introduction
![Page 5: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/5.jpg)
6/66 • Drupal : worst current practice • © OSInet
OSInet,UN REGARD SPÉCIFIQUE DANS
L’ÉCOSYSTÈME DRUPAL
![Page 6: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/6.jpg)
7/66 • Drupal : worst current practice • © OSInet
CONTRIBUTEURS AUX PROJETS LIBRES
OSInet• Contributeurs Drupal depuis
2005 • 100 % de l’effectif est
contributeur Drupal core 8 • Autres contributions depuis 94 :
Apache, Beego, Doctrine ODM,FirebirdSQL, MongoDB,Monolog, Samba, Silex…
Frédéric G. Marand• (Co-)auteur et (co-)correcteur
de plusieurs Security Advisories Drupal
• Mainteneur Drupal 7 core XML-RPC
• Mainteneur des contribs(References…)
http://www.osinet.fr
http://bit.ly/drupalosinet
@OSInet
http://drupal/u/fgm
Introduction
![Page 7: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/7.jpg)
8/66 • Drupal : worst current practice • © OSInet
ACTIVITÉ
AUDIT CONSEIL
ARCHITECTURELEAD DÉV
Introduction
![Page 8: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/8.jpg)
9/66 • Drupal : worst current practice • © OSInet
L’AUDIT TECHNIQUE DRUPAL
Problèmes récurrents motivant les audits :• Délais• Performance• Sécurité (réponse aux pénétrations)
Les principales erreurs se répètent par ignorance :évitez-les
Introduction
![Page 9: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/9.jpg)
11/66 • Drupal : worst current practice • © OSInet
Quand les erreurs sont-ellesconstatées ?
• Durant l’acquisition• Durant la réalisation• Durant le fonctionnement
• Lors des visites anonymes
• Lors de l'utilisation en connecté
• Lors des opérations d'exploitation
Introduction
![Page 10: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/10.jpg)
12/66 • Drupal : worst current practice • © OSInet
Quelles sont les erreurs les plusfréquentes ?
• Délais (coûts) excessifs de réalisation• Régressions durant le développement de code• Coûts excessifs en infrastructure• Failles XSS et autres• Performance front insuffisante• Performance back insuffisante
Introduction
![Page 11: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/11.jpg)
13/66 • Drupal : worst current practice • © OSInet
Qui est source d’erreurs ?
• L’agence réalisatrice : mauvaises techniques de réalisation• Le studio graphique : maquettes ignorant les spécificités de
build Drupal• L’hébergeur : ignorance des contraintes spécifiques de
Drupal• La communauté Drupal et Open Source en général : peu de
modules / thèmes (aucun ?) ont le même niveau d’exigencequalité que Drupal core
• Le donneur d’ordres : analyse insuffisante des besoins,exigences inappropriées
Introduction
![Page 12: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/12.jpg)
15/66 • Drupal : worst current practice • © OSInet
BUY
![Page 13: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/13.jpg)
16/66 • Drupal : worst current practice • © OSInet
Propriété intellectuelle
Bloquer sur cession de propriété vs concession de licence
• Définition du besoin• Certification de conformité (compliance)
Ignorer l’impact de la viralité de la GPL sur les projetsDrupal• Code source PHP, JS• Assets graphiques• Contenus• Look-and-feel
PS I am nota lawyer.
Achat
![Page 14: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/14.jpg)
17/66 • Drupal : worst current practice • © OSInet
Le cas des appels d’offres publics
Achat
• Difficulté à déclarer un marché infructueux mêmequand il devrait l’être
• Ne pas être à jour sur le CCAG-PI / CCAG-TIC etles circulaires associées
• Définition de l’objet du marché : site vs logiciel• Procédures de recette : spécification vs agilité
![Page 15: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/15.jpg)
18/66 • Drupal : worst current practice • © OSInet
Choix des prestataires : principauxproblèmes
Agences de communicationtraditionnelles➔ Pas assez techniques pour
les projets importants
SSII (ESN) / SSLL (ENL)traditionnelles➔ Pas assez créatives pour
les projets importants
Spécialistes AMOA➔ Retour sur coût difficile à
évaluer avant un premieréchec
Drupalshops➔ Pas assez disponibles,
problèmes d’agrémentdans les grands comptes,pas assez deconnaissances autres
Achat
![Page 16: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/16.jpg)
19/66 • Drupal : worst current practice • © OSInet
BUILD
![Page 17: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/17.jpg)
20/66 • Drupal : worst current practice • © OSInet
Maîtrised'ouvrage
![Page 18: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/18.jpg)
22/66 • Drupal : worst current practice • © OSInet
Ne pas savoir choisir sa version core : 6, 7,8 et son type de développement
— Ces temps-ci…
• Projets courts, à courte durée de vie (événementiel, one-off) :
7, build basique
• Projets plus longs, livrés début 2015, destinés à une refonte
assez rapide : 7, build best practice (cf session Best Practice)
• Projets plus longs, livrés mi-2015, destinés à un cycle de vie
plus long : 8, build best practice
• Évoluer les sites bloqués en 6 en mode découplé/composant.
• Ne plus lancer de nouveaux projets en 6
Build
![Page 19: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/19.jpg)
23/66 • Drupal : worst current practice • © OSInet
Ne pas savoir définir ses choix en matièrede versions contrib
« STABLE ONLY » : de plus en plus, dans les projetsDrupal, « stable » est synonyme d'« obsolescent »
⇒ coûts de maintenance adaptative
« ANYTHING GOES » : risque que les constructeursutilisent des modules expérimentaux, sans cycle demise à jour disponible, voire non maintenus
⇒ coûts de maintenances corrective et adaptative
Build
![Page 20: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/20.jpg)
24/66 • Drupal : worst current practice • © OSInet
Et plus...
• Ne pas réceptionner au fil de l’eau — pendant lesitérations — pour intercepter rapidement lesdivergences (héritage du cycle en V)
• Lors des réceptions d’itération, ne pas vérifier l’état de propreté du site (installation from scratchpossible, absence de doublons fonctionnels, detraces de composants abandonnés...)
Build
![Page 21: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/21.jpg)
25/66 • Drupal : worst current practice • © OSInet
Processus dedéveloppement
![Page 22: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/22.jpg)
26/66 • Drupal : worst current practice • © OSInet
Ne pas utiliser de gestionnaire de versions
...DU TOUT (dernier en date observé : ce mois-ci !)
...EFFICACEMENT :• code commenté en production au lieu d’être dans
une révision• commentaires de commit inutilisables• commits trop espacés• pas de process de branching réfléchi (eg: git flow,
github flow…)
Build
![Page 23: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/23.jpg)
27/66 • Drupal : worst current practice • © OSInet
Créer un site par accumulation demodules contrib à portée limitée
• Souci additionnel de qualité, fragilité, maintenanceet MàJ
• Sauf dans le cas de couverture à 100 % de lafonctionnalité, l’adaptation est à long terme pluscoûteuse qu’un spécifique
Build
![Page 24: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/24.jpg)
28/66 • Drupal : worst current practice • © OSInet
Créer un site par accumulation dechangements, sans mécanisme de
déploiement• Génération des fichiers
• Drush Makefile / Composer : – Avantages: dépôt léger, MàJ permanente
– Inconvénients : dépendance sur la disponibilité du réseau, non-compliance,MàJ permanente = risque de casse
• Vendoring : – Avantages : disponibilité, rapidité, compliance
– Inconvénients : défaut de MàJ automatique, dépôt lourd
• Profil(s) d’installation Drupal• Chargement des données par migration (Migrate API)
Build
![Page 25: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/25.jpg)
29/66 • Drupal : worst current practice • © OSInet
Hacker core/contrib
Build
• Rarement nécessaire : le plus souvent, c’est unmanque de connaissances
• Si nécessaire, committer les patches de façonreproductible (ex : drush makefile, répertoirepatches …)
![Page 26: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/26.jpg)
30/66 • Drupal : worst current practice • © OSInet
Développer en PHP brut, sans passer parles API Drupal
Exemples typiques, souvent sources de problèmesde sécurité :• API de bases de données natives au lieu de DB
API/Schema API (injection SQL)• Accès aux superglobals, notamment $_GET (XSS)• Stockage de données privées dans $_COOKIE au
lieu de $_SESSION (mascarade)• Actions de modification sur GET sans jeton ou
formulaire non protégé (CSRF)
Build
![Page 27: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/27.jpg)
31/66 • Drupal : worst current practice • © OSInet
Développer sans visibilité des erreurs auniveau maximal (error_reporting = -1)
Build
• Les notices et warnings s’accumulent durant ledéveloppement
• En fin de projet, on constate des massesd’insertions dans dblog (2014 : 1500 insertionswatchdog/seconde sur un site) et plus le temps decorriger donc on le désactive
• Du coup, plus de suivi des vraies alertes
![Page 28: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/28.jpg)
33/66 • Drupal : worst current practice • © OSInet
Tests de recette et montée en charge
Ne pas faire de TMC : toutva bien sur les postes dedéveloppement / recette
Tester sur unenvironnement non iso-prod
Tester depuis un postelocal, notamment le serveurfront
Tester uniquement enanonyme
Build
![Page 29: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/29.jpg)
34/66 • Drupal : worst current practice • © OSInet
Négliger la prise en compte des pratiquespermettant l’internationalisation
• Formats en dur (dates, nombres, monnaies) au lieudes API Drupal
• Assemblage de chaînes traduites :exemple t($a) . t($b)
• Chaînes de texte non traduites dans les templateset modules
Build
![Page 30: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/30.jpg)
35/66 • Drupal : worst current practice • © OSInet
OWN
![Page 31: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/31.jpg)
36/66 • Drupal : worst current practice • © OSInet
Hébergement
![Page 32: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/32.jpg)
37/66 • Drupal : worst current practice • © OSInet
Confondrehébergement etinfogéranceUn site de production abesoin d’un infogérant (services système) etnon simplement d’unhébergeur (location dematériel etinfrastructure pour leranger)
• Backups• Configuration, MàJ et
monitoring du serveurWeb et ses modules,PHP et ses extensions,bases de données,serveurs de cache,serveur de filed’attentes, etc
Own
![Page 33: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/33.jpg)
38/66 • Drupal : worst current practice • © OSInet
Déployer sans cached’opcodes ou sansmonitoring
• PHP 5.3 ou 5.4 : APC,PHP 5.5 : Opcache
• Monitoring : apc.php,ocp, opcache-status, opcache-gui…
Own
![Page 34: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/34.jpg)
39/66 • Drupal : worst current practice • © OSInet
Déployer unMemcached sanscomprendre saconfiguration
• settings.php : clusters, bins, préfixe...• extension, persistence, stratégie de
hashing, ucp/tcp, text/binaire…• slab size• Monitoring: phpmemcacheadmin,memcache.php…
• Un memcached mal réglé peut êtrebeaucoup plus lent qu’un cache en basede données
• Typique :• entrées > 1 Mo et slab size par
défaut• multisites sans préfixe,• bins saturés,• mélange chaud/froid, gaspillage
d’allocation• Documenté à partir de Drupal 7.33
Own
![Page 35: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/35.jpg)
40/66 • Drupal : worst current practice • © OSInet
Déployer sur unsystème de fichiersinapproprié
• Écritures synchrones :NFS système sansaccélérateur
• lstat() lentsprovoqués pourinclude_once -> tunerealpath cache
Own
![Page 36: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/36.jpg)
41/66 • Drupal : worst current practice • © OSInet
Maintenanceapplicative :corrective etadaptative
![Page 37: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/37.jpg)
42/66 • Drupal : worst current practice • © OSInet
Own
Ne pas appliquer les MàJ de sécurité dansles délais
Pourquoi ne pas lesappliquer ?
• Rigidités entre mainteneur etinfogérant (procédures dedéploiement)
• Absence de réactivité dumainteneur
• Difficultés de MàJ :typiquement conséquencedes hacks core/contrib
![Page 38: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/38.jpg)
43/66 • Drupal : worst current practice • © OSInet
Own
![Page 39: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/39.jpg)
44/66 • Drupal : worst current practice • © OSInet
Travailler sanslogger
CAUSES TYPIQUES :• Désactivation de dblog
faute d’avoir codé àerror_reporting élevé, pour faire face auxmasses de notices
• Absence d’utilisation desyslog ou d’un mécanismeplus tolérant commemongodb_watchdog
Own
![Page 40: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/40.jpg)
45/66 • Drupal : worst current practice • © OSInet
FRONT :
PERFORMANCE
![Page 41: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/41.jpg)
46/66 • Drupal : worst current practice • © OSInet
Gestion decache
![Page 42: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/42.jpg)
47/66 • Drupal : worst current practice • © OSInet
Cache de pagesinterne
• Cache interne désactivé(cache enabled :décoché)
• Expiration trop courte :limitation à la scalabilitéinterne (liée à l’infrapropre) et non externe(web scale)
Front
![Page 43: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/43.jpg)
48/66 • Drupal : worst current practice • © OSInet
Pages non cachables • Écriture dans $_SESSION ou$_COOKIE pour les anonymes
• démarrage de session quimarque la page non cachable
• génération complète au hitsuivant
• grosse limite de scalabilitéramenant les anonymes à peuprès au niveau des connectés
• Utilisation de Varnish et/ou d’unCDN ou autre reverse proxy,mais émission par le code d’en-têtes de non-cachabilité
• suppression de la scalabilitéexterne
• inutilité complète de ces outils
Front
![Page 44: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/44.jpg)
49/66 • Drupal : worst current practice • © OSInet
Désaccord sur ladurée du cache
• Technique → longéditorial → court
• En l’absence d’unestratégie claire, forteprobabilité d’uneabsence de prise encharge technique valide
Front
![Page 45: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/45.jpg)
50/66 • Drupal : worst current practice • © OSInet
Agrégation des assets
• Désactivée pour le CSS et/ou le JS• généralement, ce n’est pas un oubli, mais le
prestataire indique que le site ne fonctionne pasavec : c’est le signe d’une erreur de réalisation, leplus souvent pour le code JS
• Simple : il y a des mécanismes d’agrégationavancée plus efficaces, comme le module advagg,notamment si on utilise un CDN avec le moduleCDN
Front
![Page 46: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/46.jpg)
51/66 • Drupal : worst current practice • © OSInet
Domain sharding
Front
• ABSENCE :• Les cookies sont émis par les clients sur les
requêtes d’asset
• Avec Varnish ou un autre reverse proxy : nécessiteun VCL spécifique pour permettre de les ignorer etservir quand même de cache
• EXCÈS : multiplication des requêtes DNS pour lesclients
![Page 47: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/47.jpg)
52/66 • Drupal : worst current practice • © OSInet
Et tous les problèmes du back office pour les
pages non cachées...
![Page 48: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/48.jpg)
53/66 • Drupal : worst current practice • © OSInet
BACK
![Page 49: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/49.jpg)
54/66 • Drupal : worst current practice • © OSInet
Requêtes sortantes durant le cycle depage
• La durée des pages devient > au temps de réponsede la ressource externe et peut bloquer
• Core:• update (uniquement pour les admins et sur
certaines pages)• aggregator, si poormanscron n’a pas été désactivé
SOLUTION Consommer dans des scripts CLI lancés parcron ou, mieux, depuis un worker de messaging externe(ex : Beanstalkd)
Back
![Page 50: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/50.jpg)
56/66 • Drupal : worst current practice • © OSInet
Pic de charge inexpliqué après unelongue durée sans problème
TYPIQUE Utilisation d’un memcached avec l’erreur t($var) et la taille de cache_locale vient de dépasser 1Mo
VARIANTE Sur un site en évolution, une nouvelle version estbeaucoup plus lente en production qu'en développement
CONFIRMATION Déboguer l’utilisation du cache avecHeisencache ou XHprof
SOLUTION À court terme, augmenter la slab size, etrapidement corriger pour revenir à une taille normale
Back
![Page 51: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/51.jpg)
57/66 • Drupal : worst current practice • © OSInet
Siteglobalementlent sans picspécifique
![Page 52: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/52.jpg)
58/66 • Drupal : worst current practice • © OSInet
Cache de blocs désactivé
CAUSE Typiquement un ou plusieurs modules denode_access
CONFIRMATION Configurer stark pour n’avoir quele bloc contenu, basculer dessus momentanément, etcomparer : il devrait être considérablement plusrapide
SOLUTION 1 Repenser la logique de contrôled’accès aux données
SOLUTION 2 Introduire du cache dans chaque bloc
Back
![Page 53: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/53.jpg)
59/66 • Drupal : worst current practice • © OSInet
Back
Cache de données
PROBLÈME 1 Cache désactivé — courant sur lessites construits sur Views et Panels
MALGRÉ le cache intégré de Views (durée) et ViewsContent Cache (invalidation)
ET MALGRÉ Panels Hash Cache
PROBLÈME 2 Utilisé à niveaux multiples
⇒ Cache de données, puis de fragments, puisd’assemblages, puis de rendu, puis de blocs … = n aller-retours vers le serveur de cache là où un seul suffirait
DIAGNOSTIC Heisencache (PerformanceSubscriber)
Too much of agood thing is
wonderful
![Page 54: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/54.jpg)
60/66 • Drupal : worst current practice • © OSInet
Cache de variables toujours en MISS
CAUSE TYPIQUE Un variable_set dans un hook du cyclede page : hook_boot / hook_init / hook_exit, functionde shutdown, etc
ORIGINE Confusion entre settings/config/state(formalisés en D8)
DIAGNOSTIC var_dump(debug_backtrace(FALSE)) dans variable_set() et remonter la pile pour trouver lecoupable
VARIANTE Autres caches toujours en MISS
SOLUTION GÉNÉRALE Heisencache (WriteSubscriber)
Back
![Page 55: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/55.jpg)
61/66 • Drupal : worst current practice • © OSInet
Trop grand nombre de requêtes SQL
DIAGNOSTIC devel.module ou utiliser lesfonctions de trace de l’API DB
SOLUTION Manuelle
Back
![Page 56: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/56.jpg)
62/66 • Drupal : worst current practice • © OSInet
Trop grand nombre d’interventions dehook, notamment sur les nodes
CAUSE TYPIQUE Trop de modules
SOLUTION Réduire le nombre d’implémentationsen repensant la logique fonctionnelle
HACK hook_module_implements_alter() pour supprimer les situations connues comme nepouvant donner lieu à une modification en pratique— difficile et fragile, mais résultats rapides
Back
![Page 57: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/57.jpg)
63/66 • Drupal : worst current practice • © OSInet
Autres problèmes courants
Opérations en boucle (node_load, node_view) aulieu d’opérations multiples(node_load_multiple)
Back
![Page 58: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/58.jpg)
64/66 • Drupal : worst current practice • © OSInet
CONCLUSION
![Page 59: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/59.jpg)
65/66 • Drupal : worst current practice • © OSInet
Conclusion
La clef : compétence
• Compétence du maître d'ouvrage (MOA) :déléguer n’est pas ignorer ⇒ se faire bienentourer et suivre son projet
![Page 60: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/60.jpg)
66/66 • Drupal : worst current practice • © OSInet
Conclusion
![Page 61: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/61.jpg)
67/66 • Drupal : worst current practice • © OSInet
Conclusion
La clef : compétence
• Compétence du maître d'ouvrage (MOA) :déléguer n’est pas ignorer ⇒ se faire bienentourer et suivre son projet
• Compétences internes ou AMOA• Compétence du maître d'œuvre (MOE)
![Page 62: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/62.jpg)
68/66 • Drupal : worst current practice • © OSInet
Mesurer pour agir
Conclusion
• Savoir quoi mesurer• Savoir sur quoi agir
selon la mesure
![Page 63: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/63.jpg)
69/66 • Drupal : worst current practice • © OSInet
Adapter
Adapter les pratiques à la taille du projet
En-dessous de quelques milliers de visites/jour,le stack Drupal/LAMP pardonne à peu près toutsauf l’absence de MàJ.
Conclusion
![Page 64: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7](https://reader036.fdocument.pub/reader036/viewer/2022062320/559b829c1a28ab18458b458d/html5/thumbnails/64.jpg)
70/66 • Drupal : worst current practice • © OSInet
PASSEZ NOUS DIRE BONJOUR !
Frédéric G. Marand (fgm) Outi Munter (outi)
www.osinet.fr