C’est quoi un CMS headless ?
Introduction
Les « Headless » ou « Decoupled » CMS sont des systèmes de gestion de contenu (Content Management System) disposant d’un back-office ou tableau de bord d’administration (writing room) permettant simplement de créer, lire, mettre à jour ou supprimer (CRUD) de contenus qui sont exposés via une API dans le format de données JSON. Ils sont dépourvus de la couche de présentation frontale. Ils vous revient donc de développer cette partie frontale quand vous utilisez CMS headless et c’est le point de différence par rapport aux CMS classiques connus comme WordPress, Joomla ou Drupal…
Les CMS headless présentent des nombreux avantages comme :
- l’équipe peut focaliser ses efforts sur le frontend en déléguant le backend de gestion des contenus à un CMS headless en SAAS.
- la possibilité de consommer le contenu sur plusieurs devices comme le web, mobile et tablette en bénéficiant d’une API digne de ce nom.

La naissance des CMS headless
Ces dernières années, le nombre des utilisateurs du web et du mobile ne cesse de croître d’une manière exponentielle dû à de nombreux facteurs comme l’essor des réseaux sociaux, l’amélioration des infrastructures et la couverture internet partout dans le monde ou l’augmentation de nombres des constructeurs des téléphones mobiles.
L’utilisation massive des applications sur Internet a imposé de nouvelles lois et contraintes architecturales pour les applications web et mobiles que les anciens modèles d’architecture peuvent difficilement supporter comme la scalabilité, la haute disponibilité, la résilience et la tolérance aux pannes.
D’où la naissance des architectures orientées micro-services. Ces architectures ont pour but principal de décomposer l’application anciennement monolithique en plusieurs morceaux élémentaires communiquant entre eux via des URLs en REST. Cette façon de faire à encourager le concept de délégation, et l’application se concentre sur le business principal en externalisant les autres services secondaires vers d’autres micro-services en SAAS (Software As A Service).
Le CMS était toujours un des services secondaires le plus coûteux pour l’entreprise pour sa gestion un peu lourde, aussi la cohabitation des langages notamment PHP pour les CMS et Java, Scala ou C# pour le reste de l’application était toujours dure et le pire des solutions était d’intégrer dans l’application tout le CMS…
Architecture monolithique (à gauche) vs Architecture en micro-services (à droite)
Comment ça marche ? :
Le développement d’un système complet de gestion de contenu intégré dans votre application de base en partant des CMS headless passe par quelques étapes que je vais détailler par la suite, mais avant de décrire ce qu’il faut faire, je vais citer les différents composants d’un CMS headless.
Un CMS headless est composé de :
- Une interface pour modéliser la base de données de votre CMS,
- Une chambre d’écriture (Writing Room) ou back-office qui permet de remplir la base créée précédemment
- Une API Browser permettant de tester la sortie de votre CMS (en JSON ou HTML)
- et un ensemble de SDK par language de programmation pour intégrer le contenu créé dans le CMS headless au reste de votre application

- Modélisation du contenu : La première étape dans un CMS headless consiste à modéliser le système éditorial ou le système de gestion de contenu par exemple définir les modèles « article », « auteur » et « catégorie » pour un blog ou les types « produit », « catégorie » pour un site e-commerce. Ces éléments sont vos types personnalisés.
- Ajout du contenu : Une fois que les modèles sont créés et liés entre eux selon notre modélisation, les rédacteurs peuvent (via le writing room) commencer à ajouter du contenu.
- Test de l’API : Généralement un CMS headless dispose d’une API Browser permettant d’effectuer des tests de lecture sur le contenu stocké dans la base de données.
- Requêtage de l’API en utilisant le SDK ou Client : afin de consommer le contenu d’un CMS headless, on utilise un SDK client dans notre application frontend permettant de requêter l’API et d’encapsuler le résultat dans des modèles bien définis.
Le marché des CMS headless
Sur le marché, il existe de plus en plus d’entreprises produisant des CMS headless en SAAS ou en open source. Nous pouvons citer les plus connus comme par exemple :
Parmi les CMS Headless payant on trouve :
- Contentful : Riche en SDK sur des différents languages de programmation et facile à prendre en main.
- GraphCMS : La spécificité de ce CMS Headless est qu’il est basé sur GraphQL (le langage d’interrogation de données auquel il fait référence comme « successeur de REST »)
- ButterCMS : Facile à intégrer avec les autres frameworks grâce à son API de blog déjà modélisée et prête à l’utilisation.
- Prismic.IO : Personnellement j’ai déjà utilisé ce CMS headless, facile à prendre en main surtout pour la modélisation des types de contenus, il supporte également plusieurs langues pour chaque document créé ainsi que la prévisualisation du document avant de le publier et permet aussi d’avoir une historique très claire des révisions.
- ContentStack : Comme son nom l’indique, ce CMS headless vous permet d’évoluer instantanément à des millions de sessions, de garder le contrôle de vos données et de développer votre trafic sans vous soucier de votre infrastructure grâce à son déploiement sur le cloud.
Il existe également des CMS headless open source comme :
- HeadlessCMS.org : Sur ce site web, nous trouverons une liste de systèmes de gestion de contenu basés sur JAMStack et parmi eux on trouve Ghost, Directus, Strapi, Netlify CMS, CockPit…
Conclusion
Le CMS headless aujourd’hui est une partie de la grande révolution dans l’architecture du web (les micro-services) et l »externalisation des services secondaires comme le CMS, le mailing, le paiement, le déploiement des médias est beaucoup plus courante qu’il y a quelques années. La prise en main et l’intégration des CMS headless dans une application sont devenues très faciles et à la portée de tous les développeurs grâce aux diverses documentations et communautés qui existent et même si vous êtes adeptes des CMS classiques open source WordPress et Drupal ou Joomla, vous pouvez toujours les utiliser en tant que Headless CMS en ajoutant simplement des modules (plugins) “REST API”.