Aunque los CMS sin cabeza son la opción ideal cuando tienes un equipo de desarrollo interno y trabajas con frameworks modernos de JavaScript, algunos de los pequeños inconvenientes de un CMS sin cabeza pueden convertirse en desafíos cuando trabajas en un proyecto a gran escala, especialmente en una gran organización con muchos autores de contenido y requisitos más avanzados de SEO por parte de un equipo dedicado de SEO. Los resumiré en categorías: experiencia de autoría de contenido y herramientas de SEO.
Creo que puedes lidiar con ambos desafíos en un proyecto de tamaño pequeño a mediano, pero no en uno grande. Habrá casos en los que el equipo de SEO pueda necesitar funciones como mantener una lista de redirecciones de URL, editar un archivo robot.txt, previsualizar cómo Google renderiza tus páginas o metadatos. Además, en cuanto a la experiencia de los autores de contenido, aunque la mayoría de los CMS antiguos han mejorado mucho en los últimos años, cosas como la previsualización de contenido, la edición de contenido y en general la experiencia de usuario mejorada no están al mismo nivel que en algunos CMS tradicionales. Con Contentful en particular, no hay nada que no se pueda lograr gracias a sus funciones de aplicaciones personalizadas, y esto también es cierto para otros CMS sin cabeza. Puedes lograr todo, pero requiere esfuerzo por parte de tu equipo para desarrollar las funciones deseadas.
Entonces, ¿qué debes considerar? Elige tu CMS sin cabeza sabiamente en función de tus necesidades actuales y futuras. Enfócate en la capacidad de extensión, flexibilidad y soporte. La mayoría de los productos SaaS ofrecen hoy en día acuerdos de nivel de servicio (SLA) de tiempo de actividad suficientes, como 99.99999%, etc. Incluso si implementas tu propio CMS sin cabeza, es probable que lo alojes en un servicio en la nube como AWS, que también ofrece un tiempo de actividad casi del 100%. Teniendo en cuenta que también puedes utilizar una serie de capas adicionales de almacenamiento en caché para tus datos con el fin de garantizar el tiempo de actividad, incluso si tus productos SaaS fallan, entonces puedes estar seguro de que tendrás un tiempo de actividad del 100% para tus excelentes funciones. La métrica que más importa es el tiempo de actividad que experimenta el usuario final y no el tiempo de actividad que tienen tus servidores. La mayoría de las veces, las funciones en proyectos grandes y complejos dependen de una serie de sistemas backend heredados para recuperar cualquier tipo de datos. Estos sistemas, la mayoría de las veces, son manejados por diferentes departamentos en las organizaciones y pueden tener un tiempo de actividad bajo, malas prácticas de actualización de parches con largos períodos de mantenimiento y una serie de otros problemas. Además, algunas de las características de tu aplicación web pueden estar fuertemente relacionadas con funciones y servicios empresariales que pueden generar problemas no relacionados con su red. Por ejemplo, un servicio de clic para llamar donde de repente tu centro de llamadas se cae y tu función aparecerá sin respuesta para el usuario. Tal vez un chat en vivo podría ser un gran ejemplo. Y la lista puede continuar. La falta de disponibilidad en todos estos casos puede no significar una falta de disponibilidad real para tu aplicación web, pero si no se maneja correctamente, puede provocar fallos y una mala experiencia de usuario.
Entonces, ¿qué debes considerar? Debes analizar todos estos casos para cada función. Debes crear mecanismos, como por ejemplo, banderas de características, que te ayuden a cambiar la experiencia del usuario sobre la marcha cuando ocurra una crisis. Además, debes tener un manejo avanzado de errores y, finalmente, debes tener un mecanismo efectivo de registro y monitoreo para detectar casos no controlados. La mayoría de nosotros estamos acostumbrados al concepto de estado global y hemos aplicado este patrón en nuestras aplicaciones de manera extensiva. Existen varias bibliotecas populares de terceros, como Redux y MobX, que pueden ayudarte a gestionar el estado global en la aplicación. React también ofrece el API de contexto y el hook useContext con el mismo propósito. El estado global es una excelente manera de evitar la propagación de propiedades y almacenar información con estado cuando muchos de tus componentes necesitan acceder a ella. Estoy bastante seguro de que esta no es la primera vez que escuchas a alguien hablar sobre el uso excesivo o abuso del estado global o algo así. Como mencionamos antes, el estado global es una herramienta muy útil.
Comments