SlideShare uma empresa Scribd logo
1 de 54
Baixar para ler offline
Drupal
Bonnes Pratiques
Bonnes pratiques - Partie 1
➢ Architecture
➢ Sécurités
➢ Performances
Architecture
Architecture
➢ Structurer votre contenu
➢ Configurer l’affichage
➢ Organiser les fonctionnalités
Architecture
CONTENU
Architecture: Contenu
Le contenu est l’essence de votre site, sa raison d’exister.
Première étape : déterminer la structure.
Une architecture de contenu claire permet de garantir :
○ Bonne performance.
○ Meilleure expérience utilisateur.
○ Maintenance facilitée.
Architecture: Contenu
➢ Planifier vos structures :
○ Champs
○ Types de contenus
○ Vues
○ ...
Architecture: Contenu
Erreur: Trop de types de contenus différents.
Conséquence: Confusion pour les créateurs de contenus.
Exemple: Des types de contenus “News” et “Articles” qui
sont quasiment identiques.
Solution: Réutiliser et standardiser les types de contenus.
Architecture: Contenu
Erreur: Nouveaux champs pour chaque type de contenu.
Conséquence: Gaspillage de ressources et freine la
performance.
Exemple: Un champ ville de l’établissement et ville de
l’enseignant.
Solution: Réutiliser et standardiser les champs.
Architecture: Contenu
Erreur: Des types de contenus sans nodes.
Conséquence: Un type de contenu non nécessaire ajoute
une complexité inutile.
Solution: Réévaluer vos besoins quand vous concevez
votre site.
Architecture
Affichage
Architecture: Affichage
Drupal est un outil puissant qui permet
d’afficher du contenu dans différentes régions,
différents formats, et avec des affichages
divers.
Architecture: Affichage
➢ Planifier l’architecture d’affichage.
➢ Optimiser et réutiliser autant que possible.
➢ Commencer avec un thème de base solide.
➢ La facilité pour changer l’apparence du site
est une indication de la bonne architecture
d’affichage.
Architecture: Affichage
Erreur: Une nouvelle Vue pour chaque liste.
Exemple: Trois vues distinctes pour des emplois à
Londres, Paris et Lisbonne.
Solution: Analyser chaque Vue que vous créez pour
déterminer si vous pouvez réutiliser une Vue existantes.
Architecture: Affichage
Erreur: Code PHP dans la base de données ou dans des
fichiers templates.
Exemple: Un code PHP qui détermine la visibilité des
blocks de score dans une section sports.
Solution: Écrire le code PHP, ou des requêtes SQL dans
des modules.
Architecture
Site / Fonctionnalité
Architecture: Site / Fonctionnalité
➢ Gardez votre site léger, en utilisant le minimum de code
et modules.
➢ Utilisez les modules contrib à chaque fois que
c’est possible au lieu d’écrire du code spécifique.
➢ Devenez un expert des modules contrib clés, tels que
Vues et Panels.
➢ Suivez les standards Drupal pour le code personnalisé.
➢ Réévaluez votre architecture régulièrement.
Architecture: Site / Fonctionnalité
Erreur: Trop de rôles qui rendent la maintenance et les
contrôles de sécurité compliqués.
Exemple: Un site avec de nombreux rôles, mais la plupart
non utilisés.
Solution: Évaluer les rôles et permissions pour votre site.
Regrouper par rôles fonctionnels permet d’allouer
facilement les permissions.
Architecture: Site / Fonctionnalité
Erreur: Créer du code personnalisé alors qu’un module
contrib répond déjà à ce besoin.
Exemple: Un module pour créer des formulaires qui
peuvent être envoyés par mail aux administrateurs de site.
Solution: Dans ce cas, le module largement testé
Webform offre cette fonctionnalité, avec beaucoup de
flexibilité.
Assurez-vous qu’aucun module contrib ne répond pas déjà
à vos besoins.
Architecture: Site / Fonctionnalité
Erreur: Toucher au core ou aux modules contrib. Le
comportement deviendra imprévisible. Les mises à jour
difficiles.
Solution: Si le core ou le contrib ne répond pas
exactement à votre besoin, vous pouvez construire un
module personnalisé qui utilise des hooks.
Architecture: Site / Fonctionnalité
Erreur: Personnaliser du code avec les mauvais hooks.
Exemple: En utilisant hook_init, qui se charge sur chaque
page, pour un élément utilisé uniquement sur la page
d’accueil.
Solution: Planifier avec soin votre utilisation de code
personnalisé. Trouver les bons hooks et la bonne syntaxe
en utilisant la documentation http://api.drupal.
org/api/drupal.
Architecture: Never hack core !
Architecture: Never hack core !
Y a t-il des exceptions à cette règle ?
NON
Architecture
OUTILS
Architecture: Outils
Theme Developer :
www.drupal.org/project/devel_themer
En activant ce module, vous pouvez passer votre souris sur
différents emplacements de la page pour voir à quel
template correspond chaque section.
Architecture: Outils
Hacked! :
www.drupal.org/project/hacked
Ce module scanne les modules
et détermine s’ils ont été modifiés.
Utilisé avec le module Diff,
les résultats vous disent quelles lignes changé.
A ne surtout pas utiliser sur un sites en production !
Sécurités
Sécurités
Les bonnes pratiques en matière de sécurité
sont essentielles pour protéger votre site contre
les attaques des hackers.
Sécurités
Drupal intègre un haut niveau de sécurité lorsqu’il est utilisé
correctement.
Toutes les interventions visant à configurer votre site
peuvent toutefois introduire de nouveaux risques.
Il est donc important de n’accorder des autorisations de
configuration qu’aux utilisateurs de confiance.
Sécurités: MAJ Noyau & Modules
Vous pouvez omettre la mise à jour de certains modules
lorsque cette mise à jour n’apporte que des corrections ou
des améliorations qui n’ont pas d’effet direct sur votre site.
En revanche, il est toujours préférable d’appliquer les
mises à jour de sécurité le plus rapidement possible.
Sécurités: Password
Les mots de passe peuvent potentiellement créer des
brèches dans la sécurité de votre site.
Servez-vous du module Password Policy pour imposer une
série de contraintes à vos utilisateurs lors de la définition
de leurs mots de passe.
www.drupal.org/project/password_policy
Sécurités: Types de fichiers
Limitez les types de fichiers autorisés et réservez le droit
de chargement aux utilisateurs de confiance uniquement.
Adaptez vos autorisations en fonction des types de
contenus spécifiques et vérifiez les types de fichiers
autorisés pour le chargement de champs.
Sécurités
Attaques !!
Sécurités: Attaques !!
➢ À éviter :
○ Injection SQL
○ XSS—Cross-site scripting
○ CSRF—Cross-site request forgery
Sécurités: Injection SQL
Erreur: Utiliser des requêtes SQL au lieu de l’API Drupal.
Exemple:
db_query("select * from table where id=$_GET[‘id’]");
permet une attaque du type
.com/index .php?id=1 union select * from users;
Solution: Utiliser la couche d’abstraction de base de
données de Drupal.
Sécurités: XSS--Cross-site scripting
Erreur: L’affichage des paramètres visiteurs sans les vérifier permet d’injecter
des scripts côté client dans les pages visualisées par d’autres utilisateurs.
Exemple:
<?php echo "Your number is ". $_GET['id']; ?>
permet les attaques du type index.php?id=<script>alert("UAAAT??");
</script>
Solution: Nettoyer les entrées des utilisateurs non fiables avant tout retour au
navigateur pour rendu.
docs.acquia.com/articles/introduction-cross-site-scripting-xss-and-drupal
Sécurités: CSRF--Cross-site request forgery
Erreur: URL contenant des caractères génériques (%) qui ne sont pas
protégés et code de formulaire saisi directement dans le site.
Une requête HTTP Post from forms peut provenir de n’importe où, et pas
uniquement de votre site comme vous pourriez vous y attendre.
Solution: Utiliser l’API Form de Drupal, qui protège contre ces attaques en
insérant un jeton dans chaque formulaire. Lors de la restitution d’un URL censé
être protégé, assurez-vous qu’une confirmation est demandée avec l’API Form,
ou bien utilisez un jeton avec l’URL et vérifiez que ce jeton est présent et valide
au moment du traitement de la réponse.
docs.acquia.com/articles/introduction-cross-site-request-forgery
Performances
Performances
La performance est cruciale pour garantir une
expérience optimale aux visiteurs de votre site.
Si le site est lent, les fonctionnalités proposées,
même intéressantes, ne suffiront pas à
maintenir l’engagement des visiteurs.
Performances
La première action à entreprendre pour
améliorer la performance, c’est analyser ce que
fait le site web.
Une fois que vous avez la réponse, optimisez
le plus possible, puis implémentez la mise en
cache.
Performances
Outils d’Analyse
Performances: Outils d’Analyse
➢ Devel pour visualiser les requêtes de base de données
exécutées sur chaque page.
www.drupal.org/project/devel
➢ XhProf est généralement le meilleur outil pour
commencer. Le profilage vous permettra d’identifier
facilement les problèmes à traiter.
www.php.net/manual/en/book.xhprof.php
Performances: Outils d’Analyse
➢ New Relic - Analyse votre site et répertorie les requêtes
de BDD, externes et les pages spécifiques.
newrelic.com
➢ Yottaa - Se concentre sur les performances front. Ce
service permet de connaître la rapidité de chargement
de votre site à différents endroits dans le monde.
www.yottaa.com
Performances
Optimiser
Performances: Optimiser
➢ Les requêtes complexes qui prennent trop de temps et
n’utilisent pas d’index.
➢ Les fonctions qui sont appelées trop souvent.
➢ Les modules inutiles qui sont activés.
➢ Configuration incorrecte du cron.
➢ Ne pas agréger les fichiers CSS et JavaScript.
Performances: Optimiser
➢ Ne pas utiliser le pager Views
par défaut qui requiert une
requête COUNT additionnelle.
Préférez Views Litepager
➢ Utiliser le module Fast 404 pour servir les 404 statiques
(images, icônes, CSS, ou autres fichiers statiques) et
éviter le bootstrap de Drupal.
Performances: Optimiser
➢ Le module Database Logging est activé.
Les erreurs peuvent rapidement encombrer votre BDD.
Une solution courante consiste à utiliser syslog à la
place, mais cela ne fait que masquer le problème en
rendant les journaux moins accessibles.
Performances
Mise en cache - Les erreurs courantes
Performances: Cache - Les erreurs
➢ Le plus fréquemment : absence totale de
stratégie de mise en cache.
➢ Les caches sont purgés trop souvent.
➢ Mise en cache basique, avec des caches
Blocks ou Panels.
Performances
Ressources / Documentations
Performances: Ressources / Docs
➢ Conseil pratiques relatifs aux performances dans la bibliothèque d’Acquia
docs.acquia.com/cloud/performance
➢ When and how caching can save your Drupal site
www.acquia.com/fr/blog/when-and-how-caching-can-save-your-drupal-site
➢ When and how caching can save your site. Part 2: authenticated users
www.acquia.com/fr/blog/when-and-how-caching-can-save-your-site-part-2-
authenticated-users
Prochainement - Partie 2
➢ Infrastructure
➢ Maintenance
Sources
Thank You / Merci : Heather James
Manager of Learning Services - Acquia Inc.
➢ www.acquia.com/blog/5-mistakes-avoid-your-drupal-website-number-1-architecture
➢ www.acquia.com/blog/5-mistakes-avoid-your-drupal-website-number-2-security
➢ www.acquia.com/blog/5-mistakes-avoid-your-drupal-website-number-3-performance
➢ www.acquia.com/blog/5-mistakes-avoid-your-drupal-website-number-4-infrastructure
➢ www.acquia.com/blog/5-mistakes-avoid-your-drupal-website-number-5-maintenance

Mais conteúdo relacionado

Mais procurados

Meilleures pratiques pour construire un site web Drupal
Meilleures pratiques pour construire un site web DrupalMeilleures pratiques pour construire un site web Drupal
Meilleures pratiques pour construire un site web DrupalSuzanne Dergacheva
 
Wordcamp paris-2016 : Comment fonctionnent le projet et la communauté open so...
Wordcamp paris-2016 : Comment fonctionnent le projet et la communauté open so...Wordcamp paris-2016 : Comment fonctionnent le projet et la communauté open so...
Wordcamp paris-2016 : Comment fonctionnent le projet et la communauté open so...Chipway
 
Initiation à Express js
Initiation à Express jsInitiation à Express js
Initiation à Express jsAbdoulaye Dieng
 
Optimiser les performances dans Wordpress
Optimiser les performances dans WordpressOptimiser les performances dans Wordpress
Optimiser les performances dans WordpressNicolas Juen
 
MongoDB day Paris 2012
MongoDB day Paris 2012MongoDB day Paris 2012
MongoDB day Paris 2012FastConnect
 
Meetup CakePHP Amiens / 25 mars 2015
Meetup CakePHP Amiens / 25 mars 2015Meetup CakePHP Amiens / 25 mars 2015
Meetup CakePHP Amiens / 25 mars 2015Benjamin Lampérier
 
Jquery
JqueryJquery
Jquerykrymo
 
Codedarmor 2012 - 06/03 - HTML5, CSS3 et Javascript
Codedarmor 2012 - 06/03 - HTML5, CSS3 et JavascriptCodedarmor 2012 - 06/03 - HTML5, CSS3 et Javascript
Codedarmor 2012 - 06/03 - HTML5, CSS3 et Javascriptcodedarmor
 
Tout ce que le getting started mongo db ne vous dira pas
Tout ce que le getting started mongo db ne vous dira pasTout ce que le getting started mongo db ne vous dira pas
Tout ce que le getting started mongo db ne vous dira pasPierre-Alban DEWITTE
 
HTML5 et Internet Explorer 9, est-ce réellement compatible?
HTML5 et Internet Explorer 9, est-ce réellement compatible?HTML5 et Internet Explorer 9, est-ce réellement compatible?
HTML5 et Internet Explorer 9, est-ce réellement compatible?Frédéric Harper
 

Mais procurados (20)

Drupal 8
Drupal 8Drupal 8
Drupal 8
 
Meilleures pratiques pour construire un site web Drupal
Meilleures pratiques pour construire un site web DrupalMeilleures pratiques pour construire un site web Drupal
Meilleures pratiques pour construire un site web Drupal
 
Bootstrap
BootstrapBootstrap
Bootstrap
 
Initiation à Bootstrap
Initiation à BootstrapInitiation à Bootstrap
Initiation à Bootstrap
 
Wordcamp paris-2016 : Comment fonctionnent le projet et la communauté open so...
Wordcamp paris-2016 : Comment fonctionnent le projet et la communauté open so...Wordcamp paris-2016 : Comment fonctionnent le projet et la communauté open so...
Wordcamp paris-2016 : Comment fonctionnent le projet et la communauté open so...
 
Drupal Performance
Drupal PerformanceDrupal Performance
Drupal Performance
 
Drupal presentation
Drupal presentationDrupal presentation
Drupal presentation
 
Initiation à Express js
Initiation à Express jsInitiation à Express js
Initiation à Express js
 
Optimiser les performances dans Wordpress
Optimiser les performances dans WordpressOptimiser les performances dans Wordpress
Optimiser les performances dans Wordpress
 
Jquery Mobile vs Twitter Bootstrap
Jquery Mobile vs Twitter BootstrapJquery Mobile vs Twitter Bootstrap
Jquery Mobile vs Twitter Bootstrap
 
Introduction à Node.js
Introduction à Node.js Introduction à Node.js
Introduction à Node.js
 
MongoDB day Paris 2012
MongoDB day Paris 2012MongoDB day Paris 2012
MongoDB day Paris 2012
 
Meetup CakePHP Amiens / 25 mars 2015
Meetup CakePHP Amiens / 25 mars 2015Meetup CakePHP Amiens / 25 mars 2015
Meetup CakePHP Amiens / 25 mars 2015
 
Pas possible en drupal, c'est faux
Pas possible en drupal, c'est fauxPas possible en drupal, c'est faux
Pas possible en drupal, c'est faux
 
SAPIENS2009 - Module 4B
SAPIENS2009 - Module 4BSAPIENS2009 - Module 4B
SAPIENS2009 - Module 4B
 
Jquery
JqueryJquery
Jquery
 
Codedarmor 2012 - 06/03 - HTML5, CSS3 et Javascript
Codedarmor 2012 - 06/03 - HTML5, CSS3 et JavascriptCodedarmor 2012 - 06/03 - HTML5, CSS3 et Javascript
Codedarmor 2012 - 06/03 - HTML5, CSS3 et Javascript
 
Tout ce que le getting started mongo db ne vous dira pas
Tout ce que le getting started mongo db ne vous dira pasTout ce que le getting started mongo db ne vous dira pas
Tout ce que le getting started mongo db ne vous dira pas
 
HTML5 et Internet Explorer 9, est-ce réellement compatible?
HTML5 et Internet Explorer 9, est-ce réellement compatible?HTML5 et Internet Explorer 9, est-ce réellement compatible?
HTML5 et Internet Explorer 9, est-ce réellement compatible?
 
Outils front-end
Outils front-endOutils front-end
Outils front-end
 

Destaque

Agora cms - Comment Drupal Commerce innove avec Drupal 8
Agora cms - Comment Drupal Commerce innove avec Drupal 8Agora cms - Comment Drupal Commerce innove avec Drupal 8
Agora cms - Comment Drupal Commerce innove avec Drupal 8Anne-Sophie Picot
 
Evjf_Emeline_14 mars
Evjf_Emeline_14 marsEvjf_Emeline_14 mars
Evjf_Emeline_14 marsmelclauzade
 
Morbidité maternelle et recours aux soins dans le Haut Atlas occidental au Ma...
Morbidité maternelle et recours aux soins dans le Haut Atlas occidental au Ma...Morbidité maternelle et recours aux soins dans le Haut Atlas occidental au Ma...
Morbidité maternelle et recours aux soins dans le Haut Atlas occidental au Ma...AfricaNews
 
Balance de exposiciones de la Fundación Caja Rural de Aragón de bantierra
Balance de exposiciones de la Fundación Caja Rural de Aragón de bantierraBalance de exposiciones de la Fundación Caja Rural de Aragón de bantierra
Balance de exposiciones de la Fundación Caja Rural de Aragón de bantierraBantierra
 
La multiplicación
La multiplicaciónLa multiplicación
La multiplicaciónAitanasc94
 
9e OBSERVATOIRE E-PUB SRI FY 2012
9e OBSERVATOIRE E-PUB SRI FY 20129e OBSERVATOIRE E-PUB SRI FY 2012
9e OBSERVATOIRE E-PUB SRI FY 2012SRI-FRANCE
 
Réussir l’aménagement des rythmes scolaires
Réussir l’aménagement des rythmes scolairesRéussir l’aménagement des rythmes scolaires
Réussir l’aménagement des rythmes scolairesCanopé académie de Rouen
 
Presentación Aduanas
Presentación AduanasPresentación Aduanas
Presentación AduanasJuancarhv
 
analisis de tipo penal
analisis de tipo penalanalisis de tipo penal
analisis de tipo penalNoeliaT612
 
Ute psicopedagogia problemas frecuentes del desarrollo apego y ansiedad novie...
Ute psicopedagogia problemas frecuentes del desarrollo apego y ansiedad novie...Ute psicopedagogia problemas frecuentes del desarrollo apego y ansiedad novie...
Ute psicopedagogia problemas frecuentes del desarrollo apego y ansiedad novie...Jacky Lalvay Quezada
 

Destaque (20)

Séminaire Drupal 8
Séminaire Drupal 8Séminaire Drupal 8
Séminaire Drupal 8
 
Agora cms - Comment Drupal Commerce innove avec Drupal 8
Agora cms - Comment Drupal Commerce innove avec Drupal 8Agora cms - Comment Drupal Commerce innove avec Drupal 8
Agora cms - Comment Drupal Commerce innove avec Drupal 8
 
Evjf_Emeline_14 mars
Evjf_Emeline_14 marsEvjf_Emeline_14 mars
Evjf_Emeline_14 mars
 
Morbidité maternelle et recours aux soins dans le Haut Atlas occidental au Ma...
Morbidité maternelle et recours aux soins dans le Haut Atlas occidental au Ma...Morbidité maternelle et recours aux soins dans le Haut Atlas occidental au Ma...
Morbidité maternelle et recours aux soins dans le Haut Atlas occidental au Ma...
 
Balance de exposiciones de la Fundación Caja Rural de Aragón de bantierra
Balance de exposiciones de la Fundación Caja Rural de Aragón de bantierraBalance de exposiciones de la Fundación Caja Rural de Aragón de bantierra
Balance de exposiciones de la Fundación Caja Rural de Aragón de bantierra
 
Memorandos
MemorandosMemorandos
Memorandos
 
Tipos de virus
Tipos de virusTipos de virus
Tipos de virus
 
Informatica
InformaticaInformatica
Informatica
 
La multiplicación
La multiplicaciónLa multiplicación
La multiplicación
 
9e OBSERVATOIRE E-PUB SRI FY 2012
9e OBSERVATOIRE E-PUB SRI FY 20129e OBSERVATOIRE E-PUB SRI FY 2012
9e OBSERVATOIRE E-PUB SRI FY 2012
 
Réussir l’aménagement des rythmes scolaires
Réussir l’aménagement des rythmes scolairesRéussir l’aménagement des rythmes scolaires
Réussir l’aménagement des rythmes scolaires
 
Presentacion
PresentacionPresentacion
Presentacion
 
Word de info
Word de infoWord de info
Word de info
 
Dan1040 aut2013
Dan1040 aut2013Dan1040 aut2013
Dan1040 aut2013
 
Presentación Aduanas
Presentación AduanasPresentación Aduanas
Presentación Aduanas
 
Economie
EconomieEconomie
Economie
 
Eco5072 hiv2015
Eco5072 hiv2015Eco5072 hiv2015
Eco5072 hiv2015
 
analisis de tipo penal
analisis de tipo penalanalisis de tipo penal
analisis de tipo penal
 
Paint
PaintPaint
Paint
 
Ute psicopedagogia problemas frecuentes del desarrollo apego y ansiedad novie...
Ute psicopedagogia problemas frecuentes del desarrollo apego y ansiedad novie...Ute psicopedagogia problemas frecuentes del desarrollo apego y ansiedad novie...
Ute psicopedagogia problemas frecuentes del desarrollo apego y ansiedad novie...
 

Semelhante a Drupal7 - Bonnes Pratiques (Partie 1)

Scub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libreScub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libreStéphane Traumat
 
Morning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slidesMorning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slidesOxalide
 
Oxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceOxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceLudovic Piot
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !VISEO
 
Angular développer des applications .pdf
Angular développer des applications .pdfAngular développer des applications .pdf
Angular développer des applications .pdfimenhamada17
 
Comment récupérer un projet Web pourri ... et réussir à travailler dessus.
Comment récupérer un projet Web pourri ... et réussir à travailler dessus.Comment récupérer un projet Web pourri ... et réussir à travailler dessus.
Comment récupérer un projet Web pourri ... et réussir à travailler dessus.Guillaume RICHARD
 
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniterAtsé François-Xavier KOBON
 
Presentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub FoundationPresentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub FoundationStéphane Traumat
 
Acquia et Arte : Drupal Camp Paris 2013
Acquia et Arte : Drupal Camp Paris 2013Acquia et Arte : Drupal Camp Paris 2013
Acquia et Arte : Drupal Camp Paris 2013Cyril Reinhard
 
Calculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stackCalculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stackCalculus System SARL
 
Symfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiquesSymfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiquesNoel GUILBERT
 
Presentation mkframework software craftsmanship a l'afup
Presentation mkframework software craftsmanship a l'afupPresentation mkframework software craftsmanship a l'afup
Presentation mkframework software craftsmanship a l'afupMichael Bertocchi
 
Toutes les raisons d'adopter MongoDB
Toutes les raisons d'adopter MongoDBToutes les raisons d'adopter MongoDB
Toutes les raisons d'adopter MongoDBContent Square
 
Présentation de Django @ Orange Labs (FR)
Présentation de Django @ Orange Labs (FR)Présentation de Django @ Orange Labs (FR)
Présentation de Django @ Orange Labs (FR)Martin Latrille
 
Comment réussir son projet en Angular 1.5 ?
Comment réussir son projet en Angular 1.5 ?Comment réussir son projet en Angular 1.5 ?
Comment réussir son projet en Angular 1.5 ?Maxime Bernard
 
10 tips pour améliorer les performances de vos applications Windows 8
10 tips pour améliorer les performances de vos applications Windows 810 tips pour améliorer les performances de vos applications Windows 8
10 tips pour améliorer les performances de vos applications Windows 8Microsoft
 
Arte utilise Acquia Cloud pour héberger ses plateformes web
Arte utilise Acquia Cloud pour héberger ses plateformes webArte utilise Acquia Cloud pour héberger ses plateformes web
Arte utilise Acquia Cloud pour héberger ses plateformes webAcquia
 
Un exemple élémentaire d'application MVC en PHP
Un exemple élémentaire d'application MVC en PHPUn exemple élémentaire d'application MVC en PHP
Un exemple élémentaire d'application MVC en PHPKristen Le Liboux
 

Semelhante a Drupal7 - Bonnes Pratiques (Partie 1) (20)

Infrastructure as code drupal
Infrastructure as code drupalInfrastructure as code drupal
Infrastructure as code drupal
 
Scub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libreScub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libre
 
Morning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slidesMorning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slides
 
Oxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceOxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performance
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !
 
Angular développer des applications .pdf
Angular développer des applications .pdfAngular développer des applications .pdf
Angular développer des applications .pdf
 
Comment récupérer un projet Web pourri ... et réussir à travailler dessus.
Comment récupérer un projet Web pourri ... et réussir à travailler dessus.Comment récupérer un projet Web pourri ... et réussir à travailler dessus.
Comment récupérer un projet Web pourri ... et réussir à travailler dessus.
 
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
 
Presentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub FoundationPresentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub Foundation
 
Acquia et Arte : Drupal Camp Paris 2013
Acquia et Arte : Drupal Camp Paris 2013Acquia et Arte : Drupal Camp Paris 2013
Acquia et Arte : Drupal Camp Paris 2013
 
Calculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stackCalculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stack
 
Symfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiquesSymfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiques
 
Presentation mkframework software craftsmanship a l'afup
Presentation mkframework software craftsmanship a l'afupPresentation mkframework software craftsmanship a l'afup
Presentation mkframework software craftsmanship a l'afup
 
Toutes les raisons d'adopter MongoDB
Toutes les raisons d'adopter MongoDBToutes les raisons d'adopter MongoDB
Toutes les raisons d'adopter MongoDB
 
Présentation de Django @ Orange Labs (FR)
Présentation de Django @ Orange Labs (FR)Présentation de Django @ Orange Labs (FR)
Présentation de Django @ Orange Labs (FR)
 
Comment réussir son projet en Angular 1.5 ?
Comment réussir son projet en Angular 1.5 ?Comment réussir son projet en Angular 1.5 ?
Comment réussir son projet en Angular 1.5 ?
 
10 tips pour améliorer les performances de vos applications Windows 8
10 tips pour améliorer les performances de vos applications Windows 810 tips pour améliorer les performances de vos applications Windows 8
10 tips pour améliorer les performances de vos applications Windows 8
 
Angular.pdf
Angular.pdfAngular.pdf
Angular.pdf
 
Arte utilise Acquia Cloud pour héberger ses plateformes web
Arte utilise Acquia Cloud pour héberger ses plateformes webArte utilise Acquia Cloud pour héberger ses plateformes web
Arte utilise Acquia Cloud pour héberger ses plateformes web
 
Un exemple élémentaire d'application MVC en PHP
Un exemple élémentaire d'application MVC en PHPUn exemple élémentaire d'application MVC en PHP
Un exemple élémentaire d'application MVC en PHP
 

Drupal7 - Bonnes Pratiques (Partie 1)

  • 2. Bonnes pratiques - Partie 1 ➢ Architecture ➢ Sécurités ➢ Performances
  • 4. Architecture ➢ Structurer votre contenu ➢ Configurer l’affichage ➢ Organiser les fonctionnalités
  • 6. Architecture: Contenu Le contenu est l’essence de votre site, sa raison d’exister. Première étape : déterminer la structure. Une architecture de contenu claire permet de garantir : ○ Bonne performance. ○ Meilleure expérience utilisateur. ○ Maintenance facilitée.
  • 7. Architecture: Contenu ➢ Planifier vos structures : ○ Champs ○ Types de contenus ○ Vues ○ ...
  • 8. Architecture: Contenu Erreur: Trop de types de contenus différents. Conséquence: Confusion pour les créateurs de contenus. Exemple: Des types de contenus “News” et “Articles” qui sont quasiment identiques. Solution: Réutiliser et standardiser les types de contenus.
  • 9. Architecture: Contenu Erreur: Nouveaux champs pour chaque type de contenu. Conséquence: Gaspillage de ressources et freine la performance. Exemple: Un champ ville de l’établissement et ville de l’enseignant. Solution: Réutiliser et standardiser les champs.
  • 10. Architecture: Contenu Erreur: Des types de contenus sans nodes. Conséquence: Un type de contenu non nécessaire ajoute une complexité inutile. Solution: Réévaluer vos besoins quand vous concevez votre site.
  • 12. Architecture: Affichage Drupal est un outil puissant qui permet d’afficher du contenu dans différentes régions, différents formats, et avec des affichages divers.
  • 13. Architecture: Affichage ➢ Planifier l’architecture d’affichage. ➢ Optimiser et réutiliser autant que possible. ➢ Commencer avec un thème de base solide. ➢ La facilité pour changer l’apparence du site est une indication de la bonne architecture d’affichage.
  • 14. Architecture: Affichage Erreur: Une nouvelle Vue pour chaque liste. Exemple: Trois vues distinctes pour des emplois à Londres, Paris et Lisbonne. Solution: Analyser chaque Vue que vous créez pour déterminer si vous pouvez réutiliser une Vue existantes.
  • 15. Architecture: Affichage Erreur: Code PHP dans la base de données ou dans des fichiers templates. Exemple: Un code PHP qui détermine la visibilité des blocks de score dans une section sports. Solution: Écrire le code PHP, ou des requêtes SQL dans des modules.
  • 17. Architecture: Site / Fonctionnalité ➢ Gardez votre site léger, en utilisant le minimum de code et modules. ➢ Utilisez les modules contrib à chaque fois que c’est possible au lieu d’écrire du code spécifique. ➢ Devenez un expert des modules contrib clés, tels que Vues et Panels. ➢ Suivez les standards Drupal pour le code personnalisé. ➢ Réévaluez votre architecture régulièrement.
  • 18. Architecture: Site / Fonctionnalité Erreur: Trop de rôles qui rendent la maintenance et les contrôles de sécurité compliqués. Exemple: Un site avec de nombreux rôles, mais la plupart non utilisés. Solution: Évaluer les rôles et permissions pour votre site. Regrouper par rôles fonctionnels permet d’allouer facilement les permissions.
  • 19. Architecture: Site / Fonctionnalité Erreur: Créer du code personnalisé alors qu’un module contrib répond déjà à ce besoin. Exemple: Un module pour créer des formulaires qui peuvent être envoyés par mail aux administrateurs de site. Solution: Dans ce cas, le module largement testé Webform offre cette fonctionnalité, avec beaucoup de flexibilité. Assurez-vous qu’aucun module contrib ne répond pas déjà à vos besoins.
  • 20. Architecture: Site / Fonctionnalité Erreur: Toucher au core ou aux modules contrib. Le comportement deviendra imprévisible. Les mises à jour difficiles. Solution: Si le core ou le contrib ne répond pas exactement à votre besoin, vous pouvez construire un module personnalisé qui utilise des hooks.
  • 21. Architecture: Site / Fonctionnalité Erreur: Personnaliser du code avec les mauvais hooks. Exemple: En utilisant hook_init, qui se charge sur chaque page, pour un élément utilisé uniquement sur la page d’accueil. Solution: Planifier avec soin votre utilisation de code personnalisé. Trouver les bons hooks et la bonne syntaxe en utilisant la documentation http://api.drupal. org/api/drupal.
  • 23. Architecture: Never hack core ! Y a t-il des exceptions à cette règle ? NON
  • 25. Architecture: Outils Theme Developer : www.drupal.org/project/devel_themer En activant ce module, vous pouvez passer votre souris sur différents emplacements de la page pour voir à quel template correspond chaque section.
  • 26. Architecture: Outils Hacked! : www.drupal.org/project/hacked Ce module scanne les modules et détermine s’ils ont été modifiés. Utilisé avec le module Diff, les résultats vous disent quelles lignes changé. A ne surtout pas utiliser sur un sites en production !
  • 28. Sécurités Les bonnes pratiques en matière de sécurité sont essentielles pour protéger votre site contre les attaques des hackers.
  • 29. Sécurités Drupal intègre un haut niveau de sécurité lorsqu’il est utilisé correctement. Toutes les interventions visant à configurer votre site peuvent toutefois introduire de nouveaux risques. Il est donc important de n’accorder des autorisations de configuration qu’aux utilisateurs de confiance.
  • 30. Sécurités: MAJ Noyau & Modules Vous pouvez omettre la mise à jour de certains modules lorsque cette mise à jour n’apporte que des corrections ou des améliorations qui n’ont pas d’effet direct sur votre site. En revanche, il est toujours préférable d’appliquer les mises à jour de sécurité le plus rapidement possible.
  • 31. Sécurités: Password Les mots de passe peuvent potentiellement créer des brèches dans la sécurité de votre site. Servez-vous du module Password Policy pour imposer une série de contraintes à vos utilisateurs lors de la définition de leurs mots de passe. www.drupal.org/project/password_policy
  • 32. Sécurités: Types de fichiers Limitez les types de fichiers autorisés et réservez le droit de chargement aux utilisateurs de confiance uniquement. Adaptez vos autorisations en fonction des types de contenus spécifiques et vérifiez les types de fichiers autorisés pour le chargement de champs.
  • 34. Sécurités: Attaques !! ➢ À éviter : ○ Injection SQL ○ XSS—Cross-site scripting ○ CSRF—Cross-site request forgery
  • 35. Sécurités: Injection SQL Erreur: Utiliser des requêtes SQL au lieu de l’API Drupal. Exemple: db_query("select * from table where id=$_GET[‘id’]"); permet une attaque du type .com/index .php?id=1 union select * from users; Solution: Utiliser la couche d’abstraction de base de données de Drupal.
  • 36. Sécurités: XSS--Cross-site scripting Erreur: L’affichage des paramètres visiteurs sans les vérifier permet d’injecter des scripts côté client dans les pages visualisées par d’autres utilisateurs. Exemple: <?php echo "Your number is ". $_GET['id']; ?> permet les attaques du type index.php?id=<script>alert("UAAAT??"); </script> Solution: Nettoyer les entrées des utilisateurs non fiables avant tout retour au navigateur pour rendu. docs.acquia.com/articles/introduction-cross-site-scripting-xss-and-drupal
  • 37. Sécurités: CSRF--Cross-site request forgery Erreur: URL contenant des caractères génériques (%) qui ne sont pas protégés et code de formulaire saisi directement dans le site. Une requête HTTP Post from forms peut provenir de n’importe où, et pas uniquement de votre site comme vous pourriez vous y attendre. Solution: Utiliser l’API Form de Drupal, qui protège contre ces attaques en insérant un jeton dans chaque formulaire. Lors de la restitution d’un URL censé être protégé, assurez-vous qu’une confirmation est demandée avec l’API Form, ou bien utilisez un jeton avec l’URL et vérifiez que ce jeton est présent et valide au moment du traitement de la réponse. docs.acquia.com/articles/introduction-cross-site-request-forgery
  • 39. Performances La performance est cruciale pour garantir une expérience optimale aux visiteurs de votre site. Si le site est lent, les fonctionnalités proposées, même intéressantes, ne suffiront pas à maintenir l’engagement des visiteurs.
  • 40. Performances La première action à entreprendre pour améliorer la performance, c’est analyser ce que fait le site web. Une fois que vous avez la réponse, optimisez le plus possible, puis implémentez la mise en cache.
  • 42. Performances: Outils d’Analyse ➢ Devel pour visualiser les requêtes de base de données exécutées sur chaque page. www.drupal.org/project/devel ➢ XhProf est généralement le meilleur outil pour commencer. Le profilage vous permettra d’identifier facilement les problèmes à traiter. www.php.net/manual/en/book.xhprof.php
  • 43. Performances: Outils d’Analyse ➢ New Relic - Analyse votre site et répertorie les requêtes de BDD, externes et les pages spécifiques. newrelic.com ➢ Yottaa - Se concentre sur les performances front. Ce service permet de connaître la rapidité de chargement de votre site à différents endroits dans le monde. www.yottaa.com
  • 45. Performances: Optimiser ➢ Les requêtes complexes qui prennent trop de temps et n’utilisent pas d’index. ➢ Les fonctions qui sont appelées trop souvent. ➢ Les modules inutiles qui sont activés. ➢ Configuration incorrecte du cron. ➢ Ne pas agréger les fichiers CSS et JavaScript.
  • 46. Performances: Optimiser ➢ Ne pas utiliser le pager Views par défaut qui requiert une requête COUNT additionnelle. Préférez Views Litepager ➢ Utiliser le module Fast 404 pour servir les 404 statiques (images, icônes, CSS, ou autres fichiers statiques) et éviter le bootstrap de Drupal.
  • 47. Performances: Optimiser ➢ Le module Database Logging est activé. Les erreurs peuvent rapidement encombrer votre BDD. Une solution courante consiste à utiliser syslog à la place, mais cela ne fait que masquer le problème en rendant les journaux moins accessibles.
  • 48. Performances Mise en cache - Les erreurs courantes
  • 49. Performances: Cache - Les erreurs ➢ Le plus fréquemment : absence totale de stratégie de mise en cache. ➢ Les caches sont purgés trop souvent. ➢ Mise en cache basique, avec des caches Blocks ou Panels.
  • 51. Performances: Ressources / Docs ➢ Conseil pratiques relatifs aux performances dans la bibliothèque d’Acquia docs.acquia.com/cloud/performance ➢ When and how caching can save your Drupal site www.acquia.com/fr/blog/when-and-how-caching-can-save-your-drupal-site ➢ When and how caching can save your site. Part 2: authenticated users www.acquia.com/fr/blog/when-and-how-caching-can-save-your-site-part-2- authenticated-users
  • 52.
  • 53. Prochainement - Partie 2 ➢ Infrastructure ➢ Maintenance
  • 54. Sources Thank You / Merci : Heather James Manager of Learning Services - Acquia Inc. ➢ www.acquia.com/blog/5-mistakes-avoid-your-drupal-website-number-1-architecture ➢ www.acquia.com/blog/5-mistakes-avoid-your-drupal-website-number-2-security ➢ www.acquia.com/blog/5-mistakes-avoid-your-drupal-website-number-3-performance ➢ www.acquia.com/blog/5-mistakes-avoid-your-drupal-website-number-4-infrastructure ➢ www.acquia.com/blog/5-mistakes-avoid-your-drupal-website-number-5-maintenance