Le déploiement d'une application Drupal 10 ou Drupal 11 peut donner l'impression de traverser un champ de mines de problèmes potentiels. Même un site Drupal bien construit peut trébucher pendant le déploiement en raison de quelques pièges courants. Pour les responsables informatiques et les chefs de projets techniques, la compréhension de ces pièges et de la manière dont l'automatisation du cloud peut les résoudre signifie moins d'urgences nocturnes et des lancements plus fluides.
Dans cet article, nous allons explorer les défis les plus fréquents liés au déploiement de Drupal (incohérences de l'environnement, gestion des dépendances, dérive de la configuration, tests de bout en bout, risques de sécurité et problèmes de mise à l'échelle) et voir comment une plateforme d'applications cloud comme Upsun peut les résoudre. Nous allons nous plonger dans des sections courtes et ciblées que vous pourrez rapidement parcourir et appliquer.
Nous avons tous entendu un collègue dire : "Mais cela fonctionnait sur ma machine !" Les incohérences d'environnement surviennent lorsque la configuration de vos environnements de développement, d'essai et de production diffère. Il se peut que la version de PHP ou le moteur de base de données soit légèrement différent sur l'environnement de production, ou qu'un paramètre de mise en cache soit activé dans un environnement et pas dans un autre. Ces différences se transforment en bugs inattendus au pire moment. Par exemple, un module Drupal peut se comporter différemment si une extension PHP est manquante en production, ou si les autorisations de fichiers et les limites de mémoire PHP varient d'un serveur à l'autre. Le piège ici est de ne pas maintenir la parité entre les environnements, ce qui conduit à des surprises lors du déploiement.
Comment l'automatisation du cloud computing résout ce problème : Une plateforme cloud peut garantir que chaque environnement est un jumeau identique de la production. Upsun, par exemple, vous permet de cloner l'ensemble du stack de production (code, base de données et configuration) dans un environnement d'essai grâce à sa fonction de clonage d'environnement. Ce processus crée une réplique de votre environnement de production, ce qui facilite le test des modifications avec des données et des configurations réelles. Cela signifie que vos développeurs testent toujours sur un environnement qui reflète la production plus de serveurs "flocon de neige" ou de mystérieux bugs réservés à la production. Les fichiers de configuration et les variables d'environnement peuvent être gérés de manière cohérente dans tous les environnements.
En pratique, cette approche suit le principe de parité dev/prod : conserver des environnements aussi similaires que possible pour détecter les problèmes à temps. En automatisant la configuration de l'environnement, une plateforme d'applications cloud élimine le syndrome "ça marche sur ma machine" et normalise les conditions d'exploitation de Drupal dans l'ensemble des environnements.
Drupal moderne s'appuie sur Composer pour gérer les dépendances, les modules et les bibliothèques PHP. Pour que la gestion centralisée des dépendances soit efficace, elle doit être appliquée de manière cohérente dans tous les environnements. Il est important de disposer d'un processus automatisé d'installation et de mise à jour des dépendances et d'éviter, par exemple, de copier manuellement les fichiers (y compris le répertoire du fournisseur ) entre les environnements, ce qui peut entraîner des incohérences et des erreurs humaines.
Comment l'automatisation du cloud computing résout ce problème : La clé est de permettre à l'automatisation de gérer les dépendances de la même manière partout en créant un processus de déploiement qui s'appuiera sur Composer et traitera le composer.lock comme parole d'évangile. Une plateforme comme Upsun peut être configurée pour exécuter automatiquement composer install pendant la phase de construction du déploiement, en utilisant les versions exactes spécifiées dans composer.lock. Cela garantit que si cela a fonctionné en test, les mêmes modules et bibliothèques (jusqu'à la version) seront présents en production. Plus de "ça marche sur dev mais pas sur prod" à cause de dépendances manquantes ou installées de manière incohérente. En automatisant les exécutions de Composer et en maintenant les dépendances synchronisées, les plateformes de déploiement cloud évitent les cauchemars de Composer. Le résultat est une base de code Drupal cohérente partout, sans surprise.
Drupal 8 a introduit une gestion robuste de la configuration, en stockant les paramètres du site, les vues et les types de contenu dans des fichiers YAML qui peuvent être exportés et importés. En théorie, cela signifie que vous pouvez développer des changements de configuration (par exemple, un nouveau type de contenu ou une vue mise à jour) dans un environnement de développement et les déployer en production de manière contrôlée. En pratique, les équipes se heurtent souvent à la dérive de configuration. Cet écueil survient lorsque les changements de configuration sont appliqués de manière ad hoc dans un environnement (comme une correction rapide de l'interface d'administration du site de production) et ne font pas l'objet d'un suivi dans le code. Au fil du temps, les configurations en production s'éloignent de ce qui se trouve dans le contrôle de version. Le déploiement suivant peut écraser ces changements par inadvertance ou entrer en conflit avec eux, ce qui entraîne des fonctionnalités manquantes ou des paramètres défectueux sur le site réel.
La gestion manuelle de la configuration de Drupal dans plusieurs environnements est source d'erreurs. Vous pouvez oublier d'exécuter drush config:export, ou d'importer les configurations en production après le déploiement. Même de petites différences, comme un paramètre activé ou un module activé, peuvent causer des bugs difficiles à retracer.
Comment l'automatisation du cloud résout ce problème : Les plateformes cloud s'attaquent à la dérive des configurations en encourageant une approche "tout en tant que code". Avec Upsun, par exemple, vous pouvez automatiser l'importation de la configuration de Drupal et les mises à jour de la base de données dans le cadre du processus de déploiement. Chaque fois que vous déployez, un hook post-déploiement peut exécuter drush updb (pour appliquer tout changement de schéma de base de données en attente) et drush cim (pour importer les changements de configuration validés). Cela garantit que votre environnement de production est toujours synchronisé avec la configuration dans Git. Il n'y a aucune chance de sauter une étape l'automatisation le fait à chaque fois. De plus, comme vous pouvez facilement créer des environnements éphémères qui incluent la dernière configuration et les données de production, votre équipe peut tester les changements de configuration sur un ensemble de données réelles avant de les fusionner avec la production. Ce flux de travail permet de détecter rapidement les problèmes d'intégration de la configuration et d'éviter que des modifications non suivies ne se faufilent dans la production. En bref, l'automatisation dans le cloud traite la configuration de Drupal comme un citoyen de première classe dans le déploiement, éradiquant la dérive et les bugs mystérieux qu'elle provoque.
Vous avez apporté une petite modification à votre base de code Drupal. Il peut s'agir d'un style de thème ou d'une modification de script, d'un changement de configuration de l'étiquette d'un filtre exposé à une vue, ou d'une modification d'un filtre de format de texte. Ou peut-être s'agit-il d'un changement plus important : un nouveau module, un nouveau type d'entité, un menu remodelé. Avez-vous testé votre changement avec soin ? Êtes-vous sûr que votre modification d'un formulaire de saisie de contenu n'entraînera pas une erreur 500 ? Êtes-vous sûr que vos changements de modèles Twig fonctionneront pour chaque variation de contenu qu'ils rendront ?
L'automatisation dans le cloud résout ce problème : Parce que le déploiement d'une nouvelle fonctionnalité dans un environnement de développement ou de mise à l'essai peut être effectué de manière cohérente et reproductible sur une infrastructure cohérente et reproductible, vous pouvez appliquer des tests automatisés à cet environnement et être assuré que les résultats seront valables en production. Par exemple, vous pouvez avoir une étape de test en CI qui demande à chaque page du plan du site de confirmer qu'il n'y a pas de code d'état 500. Vous pouvez également appliquer le test de performance Lighthouse pour vous assurer que le décalage de votre mise en page n'a pas augmenté, ou le test de régression visuelle pour confirmer qu'un changement de style n'a pas cassé la mise en page à des endroits inattendus. Quelle que soit la suite de tests, ces coches vertes dans l'IC signifient que vous pouvez déployer en production en ayant confiance dans vos modifications de code.
La sécurité est une préoccupation majeure pour toute application web, et Drupal ne fait pas exception. Un écueil fréquent dans les déploiements est le retard dans l'application des mises à jour de sécurité ou les erreurs de configuration qui introduisent des vulnérabilités. Dans le cadre d'un déploiement manuel, les mises à jour critiques du noyau ou des modules de Drupal peuvent être retardées en raison de la lourdeur du processus. Résultat ? Votre site peut présenter des failles de sécurité connues.
Nous avons vu à quel point cela peut être désastreux : par exemple, la célèbre vulnérabilité Drupalgeddon2 en 2018 a impacté plus d'un million de sites Drupal et a permis l'exécution de code à distance si elle n'a pas été corrigée rapidement.
De manière moins dramatique, laisser un module de développement (comme Devel) activé sur la production, ou afficher des messages d'erreur verbeux, peut faire fuir des informations sensibles aux attaquants. Un autre risque provient de la manière dont les secrets et les informations d'identification sont gérés le codage en dur des clés d'API ou des mots de passe de base de données dans des fichiers de configuration qui sont partagés ou qui font l'objet d'une fuite peut compromettre la sécurité. Dans l'ensemble, les processus de déploiement manuels et non reproductibles tendent à créer des ouvertures pour les failles de sécurité, que ce soit par négligence ou par simple erreur humaine.
Comment l'automatisation du cloud computing résout ce problème : Une plateforme cloud gérée réduit considérablement ces risques en faisant des pratiques sécurisées la règle par défaut. D'une part, les déploiements automatisés vous permettent d'appliquer rapidement les mises à jour dans tous les environnements. Lorsqu'un correctif de sécurité pour Drupal core est publié, votre équipe peut faire passer la mise à jour par un pipeline de déploiement continu (avec des tests d'intégration robustes) et l'intégrer à la production en quelques minutes, et non en quelques jours. Cette souplesse est essentielle lorsque l'on est confronté à des exploits de type "zero-day".
En outre, Upsun et les plateformes similaires gèrent une grande partie du renforcement de la sécurité sous le capot : isolation de vos conteneurs d'application, application de systèmes de fichiers de production en lecture seule (de sorte qu'un site exploité ne puisse pas facilement modifier les fichiers système), et fourniture de TLS/HTTPS par défaut. Ils offrent également une gestion intégrée des secrets, de sorte que les mots de passe des bases de données, les clés d'API, etc. peuvent être injectés en tant que variables d'environnement et non pas stockés dans le code ou le répertoire.
Enfin, en éliminant la configuration manuelle du serveur, l'automatisation dans le cloud garantit que des éléments tels que les autorisations de fichiers, les paramètres PHP et d'autres configurations liées à la sécurité sont cohérents et vérifiés. La plateforme guide essentiellement votre déploiement Drupal pour qu'il suive les meilleures pratiques (comme la désactivation de l'exécution de PHP dans le répertoire des téléchargements, l'utilisation des autorisations de fichiers correctes et la mise à jour des logiciels). Le résultat est un site Drupal qui est non seulement plus facile à déployer, mais aussi beaucoup plus difficile à pirater pour les attaquants.
Votre site Drupal peut démarrer sur un seul serveur avec un trafic modéré, mais que se passe-t-il lorsque la campagne de votre équipe de marketing attire un flot de visiteurs ou que votre boutique Drupal de commerce électronique atteint un pic saisonnier ? La mise à l'échelle d'une application Drupal présente une autre série d'écueils. Les défis à relever sont les suivants : s'assurer que le site peut gérer un trafic élevé sans interruption de service, s'étendre sur plusieurs serveurs et maintenir les performances sous charge.
Les déploiements traditionnels sur une infrastructure autogérée nécessitent des efforts considérables pour évoluer : il peut être nécessaire de provisionner des serveurs ou des conteneurs supplémentaires, de mettre en place des équilibreurs de charge, de configurer un CDN ou une couche de mise en cache, et de s'assurer que la base de données peut gérer davantage de lectures/écritures. Sans automatisation, cela implique souvent des ajustements manuels et peut conduire à des erreurs (comme oublier d'inclure une configuration pour un nouveau serveur dans le cluster, ce qui fait qu'un nœud lent entraîne tout dans sa chute).
Même après la mise à l'échelle, si votre application n'est pas conçue pour la concurrence (par exemple, en écrivant des fichiers dans un répertoire partagé de manière inappropriée ou en n'utilisant pas de cache partagé), vous risquez de rencontrer des problèmes de cohérence. Une stratégie de mise à l'échelle mal planifiée peut dégrader l'expérience de l'utilisateur chargements de pages lents ou, dans le pire des cas, plantages pendant les pics de trafic.
Comment l'automatisation du cloud computing résout ce problème : Une plateforme d'applications cloud simplifie la mise à l'échelle en faisant abstraction des tâches les plus lourdes. Avec Upsun, la mise à l'échelle verticale (plus de ressources par nœud) ou horizontale (ajout d'instances d'application) consiste généralement en un changement de configuration ou en une simple commande, et non en une refonte. La plateforme se charge de provisionner les nouveaux serveurs, de mettre à jour les règles de routage et de s'assurer que chaque instance dispose du même code et de la même configuration. Cela renvoie à la cohérence de l'environnement : que vous ayez une ou dix instances, elles exécutent toutes le même code, de sorte que vous n'obtiendrez pas de comportement étrange sur les nœuds supplémentaires.
L'automatisation du cloud intègre également des outils de mise en cache et de performance. Par exemple, vous pouvez facilement ajouter un cache Redis ou activer le cache intégré de Drupal, en sachant que la plateforme conservera les données du cache de manière appropriée. En cas d'augmentation du trafic (par exemple, si votre site de commerce électronique basé sur Drupal organise une vente flash), une plateforme cloud comme Upsun vous permet d'augmenter ou de réduire rapidement les ressources pour faire face à la charge accrue. Vous pouvez ajuster l'allocation de l'unité centrale, de la mémoire et du stockage par environnement, ou ajouter des instances d'application supplémentaires en modifiant la configuration de l'échelle horizontale.
Il en résulte résilience et flexibilité : votre équipe peut gérer en toute confiance la croissance ou les pics de charge sans avoir à intervenir en cas d'incendie. Et comme ces opérations de mise à l'échelle sont testées et reproductibles, vous évitez les pièges de la mise à l'échelle manuelle (comme les serveurs mal configurés ou la panique du déploiement en fin de soirée). En fin de compte, l'automatisation dans le cloud vous permet de répondre à la demande des utilisateurs de manière transparente, en veillant à ce que votre site Drupal soit rapide et disponible lorsque c'est le plus important.
Le déploiement de Drupal ne doit pas nécessairement être un calvaire. Les écueils courants, les incohérences de l'environnement, le chaos des dépendances, la dérive de la configuration, les tests d'intégration, les lacunes de sécurité et les problèmes de mise à l'échelle peuvent tous être résolus avec la bonne approche. Le thème que vous avez peut-être remarqué est l'automatisation et la cohérence. En tirant parti d'une plateforme cloud gérée telle qu'Upsun, les équipes peuvent automatiser les parties des déploiements Drupal sujettes aux erreurs. Cela signifie que vos développeurs passent moins de temps à retracer les étapes ou à corriger les bugs liés à la production et plus de temps à créer des fonctionnalités qui font avancer votre entreprise.
Nous connaissons ces douleurs parce que nous les avons vécues, et nous savons aussi que les outils DevOps modernes et les plateformes d'application cloud peuvent pratiquement les éliminer. En fin de compte, éviter les pièges du déploiement n'est pas une question de chance ; il s'agit d'utiliser les meilleures pratiques et les meilleurs outils disponibles. Avec Drupal et l'automatisation dans le cloud dans votre boîte à outils, vous pouvez déployer des mises à jour et de nouveaux sites en toute confiance, en sachant que la plateforme vous soutient pour les parties délicates.
Vous souhaitez découvrir ces avantages par vous-même ? Notre guide de démarrage pour Drupal sur Upsun vous accompagne dans la mise en place de votre premier projet et la mise en œuvre de ces pratiques de déploiement automatisé.
Bon déploiement (et sans tracas) !