Los sistemas gestores de contenido (CMS) han sido necesarios para las organizaciones durante muchos años. Al hablar de CMS enseguida nos viene a la cabeza plataformas como Drupal y WordPress. Y, no es de extrañar, el 60% de las webs son CMS y de ese porcentaje, el 23% son WordPress, 1 de cada 4 ¡una barbaridad! Sin embargo, en el mundo en el que vivimos que se busca desacoplar responsabilidad, desarrollo con micro-servicios, ha nacido un concepto denominado Headless CMS, una nueva forma de administrar contenido: la infraestructura del contenido.
Tradicionalmente, los CMS han acoplado el contenido generado a la visualización. Esto no es nada útil cuando quieres llevar tu contenido a un smartwatch, a una cafetera, a un robot de cocina… Las arquitecturas de los CMS han evolucionado y Headless CMS proporciona unos beneficios para construir plataformas de contenido modernas agnósticas del tipo de software a construir.
¿Qué es Headless CMS?
Un Headless CMS es un sistema gestor de contenido que solo proporciona un back-end construido como un repositorio de contenido. Además, permite que el contenido sea accesible a través de una API REST para poder servirse a cualquier tipo de dispositivo.
Mientras un CMS tradicional combina el contenido y la capa de presentación, un Headless CMS se centra únicamente en el contenido. Esto proporciona una interfaz administrativa para los gestores del contenido, permitiendo generar taxonomías. Estos sistemas son agnósticos y no entienden de plantillas, capas de presentación ni diseño, almacenando el contenido en un formato “puro” para poder ser servido a través de una API.
El concepto nació por la demanda de la era digital en la que los negocios necesitan centrarse en el cliente y servirles contenido personalizado por varios canales. El contenido del repositorio se considera puro, por que este puede ser servido a cualquier tipo de dispositivo, web, aplicación mobile, dispositivo IOT…
Existe algo de confusión con lo que realmente es un Headless CMS, ya que la mayoría de CMS tradicionales no han querido quedarse atrás y se han dirigido hacia un modelo híbrido, lo que denominan Decopuled CMS. Este modelo incluye una capa para servir el contenido a través de una API. Por ejemplo, en WordPress primero se desarrolló un plugin que exponía una API REST, y actualmente lo han incorporado al Core del software.
Sin embargo, los Headless CMS nacieron de una forma no monolítica y con la estrategia de API-first. Además, este concepto ha permitido construirse hacia un modelo cloud en el que ciertas empresas sirven el contenido en plataformas SaaS, prometiendo alta disponibilidad, alta escalabilidad, seguridad en los contenidos. Más adelante veremos algunas plataformas basadas en esta idea.
CMS Monolítico VS Headless CMS
Al principio, los CMS nacieron cuando los usuarios navegaban por internando empleando navegadores de escritorio. La creciente popularidad de Internet produjo una explosión de contenido. Un CMS parecía ser la mejor herramienta para manejar contenido, de aquí nacieron mundos tan interesantes como el blogging. Pero, la tecnología simplemente estaba centrada en la página visualizada desde el navegador. A raíz de empezar a crecer el mundo mobile, los CMS intentaron adaptarse, sufriendo una alta deuda técnica.
Una manera de intentar combatir este problema fue el origen del nacimiento del concepto headless CMS. Aunque los CMS tradicionales se han intentado adaptar proporcionando una API de contenido, se basan en una arquitectura monolítica diseñada para otra época. Por ello, muchos CMS tradicionales están dandole una vuelta a su sistema y a comenzar a construir sus bases sobre estos nuevos principios.
Funcionalidades de un Headless CMS
Al hablar de Headless CMS podemos pensar en unas funcionalidades básicas que deberían de tener todos los sistemas basados en esta arquitectura:
- API REST: El sistema debe exponer el contenido para poder ser consumido por cualquier cliente, por lo que generalmente exponen una API REST para acceder al contenido. Algunos CMS más modernos incluso exponen una api GraphQL.
- Arquitectura de Microservicios: Separar la responsabilidad del contenido proporciona una gran flexibilidad y se adapta totalmente a las emergentes arquitecturas basadas en microservicios.
- Multi Canal: Esta funcionalidad permite servir el contenido a través de distintos canales, pudiendo adaptarse a los distintos dispositivos del cliente.
- Interfaz de Edición: El software debe de proporcionar una interfaz para que los creadores del contenido puedan crear y editar el contenido, organizarlo, etc… siempre proporcionando una interfaz fácil y sencilla para el usuario final.
- Versionado: Es interesante que el contenido esté versionado, pudiendo saber si el editor lo ha modificado, en qué momento y poder volver a versiones anteriores de este contenido. Además, es muy interesante que este versionado permita multi-idioma, para internacionalizarlo.
- Sistema de Roles y Permisos: Para poder modificar el contenido, es importante tener un sistema de permisos que determine qué usuarios pueden ver, editar o eliminarlo. La seguridad dentro de las empresas es algo crítico en nuestros días.
- Modelo de Contenido, tipos de contenido y taxonomias: El CMS debe ser flexible para poder generar contenidos y taxonomias relacionadas, creando unos modelos adaptables a los requisitos del negocio.
- Libreria de Assets: Debe permitir gestionar imágenes, documentos y posibilita el almacenamiento de esta información en distinto tipos de fuentes.
Ventajas de un Headless CMS
Aunque ya hemos comentado algunos beneficios, para justificar el nacimiento de esta arquitectura vamos a listar algunas de las ventajas de este tipo de arquitectura:
- Disponibilidad Multicanal: Como hemos comentado, gestionan el contenido de una manera pura, por lo que cualquier dispositivo puede integrarlo.
- Reduce el Time to Market: Esta arquitectura promueve una forma ágil de trabajar. Permite que los creadores de contenido y los desarrolladores puedan trabajar al mismo tiempo, proporcionando a los proyectos un tiempo de entrega menor.
- Fácil de usar: los sistemas tradicionales de CMS tienden a ser complejos de utilizar, ya que intentan ofrecer demasiadas funcionalidades. Headless CMS se enfoca únicamente en la administración de la información, manteniéndola simples e intuitiva en un árbol de contenidos.
- Flexibilidad: Los editores pueden trabajar con el CMS mientras que los programadores pueden desarrollar los consumidores en los lenguajes que más manejen, integrándose a través de comunicación vía API. Los programadores pueden desarrollar en el lenguaje que deseen, agilizando el desarrollo y promoviendo una arquitectura basada en microservicios.
- Escalabilidad: Los contenidos puros, las APIs stateless y su amigabilidad con la arquitectura de microservicios permiten una alta escalabilidad de la plataforma.
Desventajas de Headless CMS
Sin embargo, no es oro todo lo que reluce. Hemos visto las grandes ventajas que nos proporciona emplear una arquitectura Headless CMS, pero también existen inconvenientes a la hora de implementarla:
- Complejidad de administración: implementar esta estrategia es incluir una pieza software más en la arquitectura tecnológica lo que propone un desafío para su integración y conocimiento de todo el equipo.
- Sin soporte a un canal específico: Hemos visto la gran ventaja de ser multicanal, pero al ser agnóstico, tampoco nos proporciona ningún método para nuestra capa de presentación. Esto provoca que los desarrolladores deban de construir estos métodos para cada canal. Esto significa que no proporcionan concepto de página o de sitemaps. Además, los editores del contenido deben adaptarse a la generación del contenido de una forma pura, independiente del sitio web o el canal, lo que también es un reto para los perfiles que llevan generando contenido para la web.
Descubriendo EZ Platform
eZ Platform es una empresa noruega de eZ Systems que construyó en 1999 un CMS de código abierto denominado ez Publish. Adaptándose a las necesidades del mercado decidieron reescribir todo su core en Symfony, framework referente en la comunidad PHP que ha sido en los últimos años bases de otros software como Sylius, Drupal, o Laravel.
Por ello, decidieron cambiar la orientación y lanzar eZ Platform: centrándose en la arquitectura headless CMS. La ventaja de estar construido sobre el stack de Symfony es que tiene una comunidad de 300k developers en el mundo. Ya no solo es la ventaja de estar construido sobre este stack, si no que permite desarrollar funcionalidad necesaria utilizando el propio Symfony, integrándose a la perfección con el framework. Esto nos da mucha flexibilidad a desarrolladores como yo, que llevo varios años desarrollando proyectos en Symfony. Esta semana he podido comenzar a trabajar con él y viniendo de Symfony la curva de aprendizaje es baja.
Además proporciona las siguiente funcionalidades:
- Repositorio de Contenido multi-idioma y con versionado.
- Interfaz de usuario para manejo del Repositorio de contenido.
- Una Api REST para interactuar con el repositorio.
- Permite la configuración multisite basada en el mismo repositorio.
- Sistema de usuarios y permisos.
- Integrado con el sistema de búsqueda SOLR.
Algunos casos de éxito interesantes a destacar del uso de este CMS son:
CMS as a Service
Como hemos comentado, el Headless CMS encaja muy bien en un modelo Cloud y no han tardado en salir empresas que proporcionan un servicios SaaS, o también lo podemos llamar Content as a Service. He buceado por internet y he encontrado algunas soluciones interesantes que ofrecen este tipo de servicio. Creo que pueden ser interesantes para una startup o pruebas de concepto para no montar una infraestructura completa. Sin embargo, estos servicios no son nada baratos. Aquí algunos ejemplos:
- https://www.contentful.com/
- https://graphcms.com/
- https://dotcms.com/solutions/content-as-a-service
- https://prismic.io/
Enlaces Destacados
https://www.contentful.com/r/knowledgebase/headless-and-decoupled-cms/
https://www.cmswire.com/web-cms/13-headless-cmss-to-put-on-your-radar/
https://css-tricks.com/what-is-a-headless-cms/