CMSs tradicionales y Headless CMSs ¿Quién es quién?
Publicado el
Me gustaría poder introduciros lo que se entiende por un Headless CMS y sus diferencias con los CMSs clásicos.
Bueno, vamos por partes, y por si acaso afiancemos conceptos. Lo primero…
¿Qué es un CMS?
Se entiende por CMS un “Content Management System”, lo que en castellano viene siendo un gestor de contenidos (sean del tipo que sean). Aquí es donde entran los famosos Wordpress, Joomla, Drupal, etc, etc que no voy a entrar a evaluar ni dar mi opinión sobre ninguno. Cuando ya tenemos esto claro viene la siguiente pregunta
¿Para qué se usan los CMSs?
Pues esto es más sencillo. Supongamos que quieres tener tu propio blog, revista o un portal para tener presencia online sin tener que hacerte el tuyo propio como tienen muchas veces los grandes medios.
¿Cómo funciona un CMS?
Normalente un CMS (esté o no en alta disponibilidad) tiene una estructura monolítica, esto es tener la capa de presentación de la información accesible desde el mismo sitio que la gestión de los contenidos. Con otras palabras, todo el mundo accede al mismo servidor ya seas un administrador, un creador de contenidos o un lector con la única diferencia del rol de cada uno. Aquí podemos ver un pequeño diagrama:
Estos CMSs siguen un patrón muy sencillo, una vez instalado en uno o n servidores habrá una parte pública en la que podremos acceder a los contenidos publicados (como este post) y una parte de gestión, pero todo en el mismo servidor. Esta parte privada suele ser un /admin con un usuario y una contraseña. Estos modelos tienen unas ventajas y desventajas que veremos más adelante.
Vale, ya lo tienes claro, pero ahora quieres tener tu presencia online pero antes de meterte en descargarte un CMS y ponerte como loco a crear contenidos tienes que saber…
¿Qué es un Headless CMS?
Ésta es algo más difícil…como os he presentado antes los CMSs tradicionales tienen todo en un bloque (parte pública y parte privada) pero un HeadlessCMS tiene esto separado, es decir, la parte pública no tiene porqué (y no debería) estar en la misma infraestructura. Además en este tipo de implementaciones tenemos una parte dinámica que se conecta a la base de datos y se encarga de crear, modificar y gestionar los contenidos que es a la que acceden los administradores y creadores de contenidos; por otro lado tenemos una parte pública que es a la que acceden los lectores en la que no se tiene comunicación con la base de datos como un CMS tradicional.
El siguiente diagrama muestra una arquitectura headless que consume una API Rest con contenidos necesarios para mostrar toda la información correctamente:
En este diagrama podemos ver una implantación con el contenido 100% estatificado y entregado a los consumidores finales:
Normalmente estos sistemas generan una versión totamente estática de nuestros portales lo que nos premite poder desplegarlos en ubicaciones como un bucket de S3 o un FTP que se sirve desde una CDN
- Menores tiempos de carga
- Mayor seguridad
- Independencia de infraestructura y de gestor de contenidos
Pero también tienen sus desventajas que vamos a ver en el siguiente punto
¿En qué se diferencia un CMS de un HeadlessCMS?
En la siguiente tabla vais a poder ver lo que para mi son ventajas e inconvenientes de cada uno de ambos mundos:
Comparaciones
CMS Clásico | Headless CMS | |
---|---|---|
Infraestructura | - Posibilidad de tener todo en un único servidor - Backend público - Implementación de cachés - Implementación alta disponibilidad (si tienes mucho tráfico) |
- Infraestructuras separadas para la parte pública y privada - Backend isolado del Front - Uso de CDNs para servir directamente el contenido (delegando caché y HA a la CDN) |
Seguridad | - Portal privado expuesto - Reglas firewall complejas |
- Parte pública muy limitada en cuanto a ataques al ser estática - Backend privado (p.e.: solo red interna) |
Desarrollo | - Un único punto de Desarrollo - Plantilla dependiente del CMS |
- Dos desarrollos (propio CMS) + Plantilla estática - Parte pública independiente del CMS |
Mantenimiento | - 1 único mantenimiento, el del CMS | - 2 desarrollos -> 2 mantenimientos |
Otros | - Tiempos de carga más altos - Flexibilidad en cuanto a funcionalidad |
- Tiempos de carga bajos - Pensados para SEO - Sitios dinámicos son más complejos |
¿Cuál debo de usar?
No hay una respuesta 100% válida para todos los casos. Si es para un blog personal y no eres una persona muy techie y que te guste programar en frameworks como GatsbyJS (que se basa en ReactJS) o HuGo (que se basa en Go), tu solución es un CMS clásico como Wordpress. Si por el contrario eres alguien con recursos (propios o de empresa) y estimas que vas a tener un alto tráfico y quieres petarlo en buscadores, está claro que un Headless CMS puede ser tu gran aliado
Espero que este artículo te haya gustado y aclarado un poco, si tienes más dudas puedes encontrarme en las redes sociales y estaré encantado de ayudarte!.
Gracias por leer!