Headless & Wordpress
Comprendre notre infrastructure
Introduction
EPIC utilise WordPress pour gérer le contenu des sites que nous produisons, et ce, depuis plusieurs années maintenant, en mode “headless”. Cette approche permet de découpler le développement, mais ne se fait pas sans précautions.
Pourquoi WordPress?
WordPress reste le CMS le plus utilisé au monde et bénéficie d’une communauté importante qui le fait évoluer en permanence. De nombreux plugins commerciaux ou libres sont disponibles, couvrant un large éventail de fonctionnalités (malheureusement pas toujours “aware” du headless, on y reviendra…). L’expérience administrateur reste l’une des meilleures parmi les CMS établis.
L’un dans l’autre, WordPress reste, actuellement la meilleure solution pour EPIC pour gérer du contenu de manière ergonomique et efficace.
Pourquoi headless?
Un CMS headless permet de séparer la couche de présentation (frontend) de la couche de gestion du contenu (backend). Cela permet de gérer le contenu d’un côté et de l’exploiter sur différents canaux digitaux. Cette séparation facilite le travail des développeurs, qui peuvent se concentrer sur leurs expertises respectives, et accélère le développement. Le contenu, structuré et non plus intégré aux templates comme dans un CMS monolithique, peut être réutilisé de multiples façons, ouvrant de nombreuses possibilités impossibles auparavant.
En termes de performance, cette découpe facilite l’introduction de nombreuses techniques d’optimisation à différents niveaux, permettant une évolutivité beaucoup plus dynamique.
Des alternatives ?
En tenant compte qu’à l’origine WordPress n’est pas un CMS headless et que de nombreuses offres apparaissent régulièrement sur le marché, pourquoi choisir WordPress ? Malheureusement, la plupart des alternatives montrent des lacunes importantes qui les rendent inacceptables pour EPIC.
- Immaturité: nombre de ces CMS sont très (trop) récents et ne sont pas encore suffisamment stables. La communauté derrière, bien que dynamique, reste trop restreinte et n’offre pas de garantie sur la pérennité de l’outil.
- i18n: en Belgique et bien souvent en Europe, il est absolument nécessaire pour un CMS qu’il permette de gérer les traductions du contenu pour pouvoir offrir un site multilingue. La plupart des CMS nativement headless sont soit monolingues soit offrent un système de gestion de traduction beaucoup trop simpliste que pour être exploitable. WordPress avec Polylang Pro est une solution puissante et souple qui répond à pratiquement toutes les exigences liées à cette problématique.
- Prix et ouverture: beaucoup de ces CMS headless sont soit complètement propriétaires soit “open-core”, offrant un petit set de fonctionnalités gratuitement et gardant la plupart des fonctionnalités avancées derrière un abonnement. Certains nécessitent plusieurs milliers voir dizaines de milliers d’euros annuellement pour leur utilisation.
Comment?
Puisque EPIC a choisi WordPress, qui n’est pas nativement headless, il a fallu adapter la solution à nos besoins.
Ce que nous n’avons PAS fait
WordPress offre une API Rest qui, théoriquement, expose le contenu automatiquement. Le problème avec cette API c’est qu’elle ne “connaît” pas les champs ACF que nous utilisons pour structurer le contenu (probablement un sujet pour un autre article), réduisant sévèrement son utilité.
MVC
Nous avons donc développé notre propre MVC (Model-View-Controller) sur WordPress. Les contrôleurs exposent les données en JSON via des “décorateurs”, pattern de développement qui “enrobent” un objet pour augmenter ses capacités sans le modifier directement. Dans notre cas, ce pattern permet de mixer les posts natifs WordPress avec les champs ACF et transformer le tout en JSON consommable par le frontend.
L’objectif pour EPIC est de fournir une expérience utilisateur et développeur de qualité en gardant toujours en tête les performances et la sécurité du site. Pour ce faire, il était très important pour nous de ne jamais modifier le cœur de WordPress mais d’exploiter au maximum les fonctionnalités natives, garantissant ainsi de pouvoir mettre à jour aussi fréquemment que possible et d’installer les plugins utiles compatibles sans adaptation.
Des problèmes ?
Évidemment, tout cela n’est pas “gratuit”. WordPress n’étant pas conçu à la base pour un fonctionnement headless, certaines difficultés ont dû être surmontées.
Performance
C’est moins lié au headless qu’à l’utilisation extensive de champs ACF mais une attention toute particulière a dû être portée à la façon dont les contenus sont construits pour éviter une génération exponentielle de queries. Une fois que tous les tricks de performances sont implémentés, notre plugin de cache permet d’atteindre des performances moyennes de nos sites sous les 50ms.
Compatibilité
WordPress n’étant pas un CMS nativement headless, la plupart des plugins qui offrent des fonctionnalités “frontend” ne fonctionnent pas tels quels. Un travail de recherche est donc critique pour déterminer l’utilisabilité de ceux-ci. Les plugins “admin”, par contre, sont habituellement beaucoup plus faciles à intégrer. EPIC a dans sa boîte à outils une série de plugins indispensables tels que Polylang Pro, ACF Pro, iThemes Security, … qui facilitent notre travail au quotidien.
Finalement
WordPress est un CMS mature avec une très large communauté et reste, malgré son “âge”, moderne et performant. Si EPIC continue à veiller en permanence pour trouver la solution “next generation”, rien ne permet pour l’instant de remplacer ce CMS efficacement.
Découvrir plus
Tip top kids
Une étude de cas technique
La province de Liège nous a demandé de concevoir une application pour tablette afin d'aborder les questions de santé physique et mentale chez les enfants. L'application sera déployée dans toutes les écoles primaires de la province.
Airdrop
Article technique
Nous avons développé un jeu instantané sur Facebook pour Red Bull, afin de promouvoir leur campagne médiatique AirDrop pour le lancement mondial d'une nouvelle gamme de boissons.