24 cosas sobre Drupal 8 que todo CTO debe saber (III)

24/08/2016
24 cosas sobre Drupal 8 que debe saber todo CTO

¿Eres uno de los directores técnicos que se prepara para migrar su proyecto a Drupal 8? Esta serie de posts reúne muchas de las preguntas más importantes que tienes que tener en cuenta si estás planteando migrar a Drupal 8.

Si te perdiste los posts anteriores, ¡aquí los tienes!:

24 cosas sobre Drupal 8 que todo CTO debe saber (I)

24 cosas sobre Drupal 8 que todo CTO debe saber (II)

En esta parte final de la mini- serie abordaremos tres temas principales: Drupal 8 en la empresa, cambios de arquitectura y cuestiones cruciales de rendimiento y seguridad.

Drupal 8 en la empresa

15. ¿Facilita Drupal 8 las prácticas de desarrollo empresarial como, por ejemplo, las pruebas automatizadas?

Varias mejoras en Drupal 8 hacen que sea una plataforma más efectiva a la hora de practicar el desarrollo continuo. El sistema de gestión de la configuración implica que ahora la configuración reside en el código de una manera estandarizada, lo que significa que el código puede transferirse de forma segura entre los entornos y que ahora su comportamiento es predecible. Por otra parte, el código de Drupal 8 hace un mayor uso de los objetos y la infraestructura de pruebas dentro de la base de código del núcleo apoya al PHPUnit. Es decir, ahora todo el código puede escribirse mediante las pruebas unitarias. La herramienta Drupal CLI, Drush, ya se ha actualizado para trabajar con Drupal 8, y se puede utilizar tanto para automatizar la mayoría de las actividades de despliegue de tests de calidad del código personalizado - utilizando el módulo codificador -, como para testear la funcionalidad - utilizando PHPUnit -. Fuera del código del core, las pruebas automatizadas también se han mejorado con Drupal 8. El producto principal ahora incluye PHPUnit, una herramienta de lanzamiento de tests que permite tanto tests unitarios como funcionales. Estos tests son mucho más sólidos y se ejecutan con mayor rapidez que en versiones anteriores. Como PHPUnit es una herramienta muy reconocida en la comunidad más amplia de desarrolladores PHP, idealmente será más fácil encontrar gente que escriba tests, así como Drupal 8 también facilitará buscar y encontrar recursos para los desarrolladores. Por último, el popular framework de tests Symfony Behat también soporta Drupal 8, permitiendo realizar prácticas de desarrollo de comportamiento bien documentadas (TDC).

16. ¿Es más fácil manejar una amplia cartera de proyectos con Drupal 8?

Drupal 8 es una buena opción para las empresas que cuentan con una amplia cartera de proyectos, sitios web de gran envergadura y clientes.

Drupal es el CMS más flexible y extensible y por lo tanto se puede utilizar para desarrollar tanto sitios web pequeños y simples como sitios web más grandes y más complejos. Por tanto, al elegir consolidar un proyecto utilizando Drupal, se pueden reducir los esfuerzos de desarrollo requerido en el mantenimiento de un sitio web de gran tamaño.

Por otra parte, la RESTfull API en Drupal con Services permite desarrollar todas las clases de herramientas empresariales necesarias para gestionar una amplia gama de sitios web. Características tales como el multisite de Drupal y el módulo de grupo significan que también se puede tomar un solo código base de Drupal y utilizarlo para múltiples sitios web.

Además, el nuevo sistema de gestión de la configuración implica que los cambios se pueden implementar en un gran número de sitios web de manera mucho más fiable que con Drupal 7. Si bien siempre habrá complejidades con tales enfoques, Drupal 8 es lo suficientemente flexible como para adaptarse a estas necesidades específicas.

17. ¿Ha mejorado en la gestión de la configuración en Drupal 8?

La gestión de la configuración se define como la capacidad de definir la configuración de una aplicación de software, como un sitio web de Drupal, de una manera versionable y testeable. Por el contrario, en Drupal 7 a menudo se daba el caso de que la configuración se tenía que hacer manualmente en cada entorno después de cada release, en lugar de definir el comportamiento de la página web en cada entorno dentro del código de la página web.

Drupal 7 tuvo algunos complementos que hicieron posible la exportación de la configuración al código, por ejemplo, del módulo de funciones, pero nunca se hizo de una manera totalmente satisfactoria, por lo que cada módulo tuvo que definir sus características para la exportación.

Además, la tabla de variables en Drupal 7 se convirtió en una especie de vertedero, tanto de la configuración como del estado para cada entorno, lo que derivó en una gran dificultad a la hora de definir qué había que exportar a la configuración en formato de código y qué podía ignorarse con seguridad en función de cada entorno, lo que no sólo suponía una gran inversión de tiempo, sino que también derivaba en numerosos errores durante el despliegue.  

Por último, en Drupal 8, la Iniciativa de Gestión de la Configuración - Configuration Management Initiative - ha otorgado a los módulos una forma estandarizada para definir su configuración editable. Por tanto, ahora los desarrolladores del sitio web pueden exportar la configuración de un entorno a archivos de configuración, y estos pueden ponerse en el sistema de control de versiones de la página web y cambiarse en función de cada entorno. Todo esto permite auditar, testear y restaurar la configuración.

Cambios en la arquitectura

Arquitectura Drupal 8 Headless Drupal

18. ¿A qué se refiere Drupal 8 con 'Drupal sin cabeza'?

El ‘Drupal sin cabeza’ o ‘desacoplado’ - Headless Drupal - es el término que se utiliza para describir la práctica arquitectónica del sistema de separación de los componentes del back-end y del theming de Drupal. En este tipo de arquitectura, Drupal se usa como un gestor de contenidos - CMS - para la entrada y recuperación de datos, pero el renderizado de páginas web de contenido a los usuarios - la capa theming - se deriva a otra herramienta.

Este hecho permite a los equipos de desarrollo construir buenas aplicaciones para Internet, móviles o para dispositivos como televisores inteligentes, relojes o Google Glass. Cada uno de estos dispositivos tiene sus propios mecanismos de theming, y todos ellos sólo requieren datos puros por parte del Sistema de Gestión de Contenidos.

Además, Drupal 8 tiene la capacidad de dar salida de datos no sólo como HTML, sino en muchos formatos tales como JSON o XML. La manera en que entregue dichos datos dependerá del dispositivo o aplicación que los solicite.

Por consiguiente, la elección de Drupal 8 como el sistema de gestión de contenidos - CMS - es una buena inversión para el futuro. Al principio, puede tratarse simplemente de un sitio web destinado a los navegadores web tradicionales, pero más adelante, podrán construirse otras aplicaciones o aplicaciones dinámicas de Internet que utilicen los servicios del mismo back-end de Drupal para recuperar sus datos.

Finalmente, toda la comunidad Drupal está desarrollando activamente una variedad de herramientas para hacer que el Headless Drupal “sin cabeza” o “desacoplado” sea cada vez más fácil. En la actualidad, existen módulos que permiten a Drupal proporcionar respuestas GraphQL. Además, las API REST del core están mejorando y se están desarrollando mejores prácticas en torno a la manera de integrar con los frameworks del front-end tales como Angular o React.

19. ¿Cambia Drupal 8 la manera en que se integra con otros sistemas?

Hay dos niveles principales en los que Drupal ha avanzado significativamente:

En el nivel de aplicación PHP, la inclusión de bibliotecas PHP estándar de Drupal 8 significa que, para cualquier aplicación particular, es probable que ya exista una buena biblioteca externa. Para satisfacer tus necesidades de integración, existe menos de una dependencia para un único desarrollador que trabaje dentro del ecosistema de Drupal. Además, el nuevo sistema de plugins dentro de Drupal 8 significa que las ampliaciones de Drupal podrán desarrollarse fácilmente. Por tanto, esta tecnología mantiene la posición de Drupal como el framework CMS más extensible y flexible del mercado.

A nivel de la API, Drupal 8 proporciona mecanismos para interactuar con sus datos a través de una API REST, lo que permite una fácil integración con otros sistemas.

20. ¿Es diferente la capa de abstracción de bases de datos?

En Drupal 7 se inició un proceso de estandarizar la forma de describir la información y su almacenamiento en Drupal a través de las Entidades de Drupal - Drupal Entities - . No obstante, en Drupal 7 se implementó este modelo sólo de manera parcial. Drupal 8 retoma esto con más fuerza para conseguir que se convierta en el único modelo que los desarrolladores necesiten utilizar.

Como tal, los desarrolladores que trabajen en el desarrollo de sitios web con Drupal 8, trabajarán a nivel de entidad, y no a nivel de base de datos. Esto permite que los sitios web de Drupal 8 trabajen indiferentemente con un mayor número de tecnologías de bases de datos y no sólo con las tradicionales relacionales, como MySQL . Por ejemplo, con un sitio web en Drupal 8 es posible utilizar soluciones NoSQL, como MongoDB, como capa de almacenamiento de base de datos.

Por último, la API de base de datos de Drupal 8 es más o menos igual que Drupal 7, pero los desarrolladores casi nunca deberán hacer llamadas directas a las bases de datos, a no ser que se estén desarrollando las API del core.

21. He oído que Symfony se utiliza mucho en el core de Drupal 8 núcleos, ¿cuáles son las implicaciones?

symfony + drupal 8

En las versiones anteriores de Drupal, todo el código dentro de Drupal fue construido por miembros de la comunidad Drupal. En Drupal 8, los desarrolladores han adoptado otros proyectos como Symfony, incluyendo componentes de Symfony directamente en Drupal, y, asimismo, están construyendo bibliotecas que pueden reutilizarse en otros proyectos. En vez de volver a inventar la rueda, Drupal 8 incluye componentes desarrollados por una comunidad más amplia para resolver problemas comunes. Esto significa que Drupal se beneficia de una base de código más estable y utilizado en un mayor número de proyectos. A cambio, proyectos como Symfony también obtienen el beneficio de que más personas utilicen su código, fortaleciéndose, por tanto, en este proceso. En este post, te explicamos cómo queda la Arquitectura de Drupal 8 tras su integración con Symfony2.

Un beneficio clave es que ahora, además, los desarrolladores que estén familiarizados con Symfony y no con Drupal, serán capaces de moverse en el desarrollo de Drupal con mucho menos esfuerzo. Esto amplía las posibilidades y las opciones de desarrollo de talento a las que pueden recurrir los equipos de desarrolladores.

Finalmente, Symfony está escrito utilizando los estándares de la industria y sus mejores prácticas, tales como el nombre de la separación de clases PSR-4 - PSR-4 name spacing of classes - que se han incorporado en Drupal 8.

Rendimiento y seguridad

22. ¿Hay mejoras en el rendimiento en Drupal 8 ?

Drupal 8 no es necesariamente más rápido cuando se compara con Drupal 7, pero la velocidad de carga pura de la página es menos relevante hoy en día. No obstante, debido al completo rediseño del sistema de almacenamiento en caché y al pipeline de construcción de la página, Drupal 8 es más escalable, y dicha escalabilidad es más sencilla. A menudo, cuando era necesario limpiar una caché en Drupal 7, la única opción era borrar la memoria caché, lo que significaba que un pequeño cambio podría provocar una mayor presión en el sitio web, ya que todas las cachés tenían que volver a llenarse. El almacenamiento en caché, por lo general, se producía a nivel de página, así como en Drupal 7, lo que significaba que, o bien la página entera tenía que cargarse desde la caché, o bien era necesario regenerar toda la página. Además, generalmente no había almacenamiento en caché para los usuarios registrados, por lo que era necesario generar la página entera en cada petición. 

En Drupal 8, las cachés son mucho más complejas y almacenamiento en caché se puede definir y limpiar de una manera mucho más fina y elegante.  El nuevo sistema de etiquetado de caché - Cache Tags - permite, por ejemplo, almacenar piezas de una página en caché de manera que los usuarios registrados reciban la mayoría de la página desde la caché y sólo se genere el link de su cuenta. Además, Cache Tagstambién permite a los desarrolladores definir escenarios específicos de limpieza de la caché para sus sitios basándose ​​en el comportamiento conocido de la página - por ejemplo, es posible borrar la memoria caché que contiene información sobre el usuario con id 300 después de una actualización sin borrar los datos almacenados en caché del resto de usuarios. Además, el sistema de caché, como la mayoría de Drupal 8, es “pluggable”, lo que significa que podrán integrarse plugins con mejores herramientas de almacenamiento en caché en todos los niveles. Para los sitios grandes y complejos, se puede hacer una selección de herramientas mucho más precisa para mejorar el rendimiento. La forma en que funciona el flujo de construcción de los sitios se ha revisado en Drupal 8, lo que significa que una página web se construye de una manera mucho más eficiente que las versiones anteriores de Drupal. También existe un principio general de "rápido por defecto" - principio utilizado por el desarrollo del núcleo de Drupal 8 - que se asegura de que no sea necesario habilitar nada para mejorar el rendimiento de Drupal 8.

bigpipe.pngPor último, la dos mejoras en la arquitectura han significado que las técnicas avanzadas de renderizado página como Big Pipe podrían formar parte de Drupal, y en Drupal 8.1 ya se introduce el módulo Big Pipe. Esta técnica, iniciada por Facebook, permite entregar de manera asíncrona diferentes componentes de la página y, aunque el tiempo total de construcción de la página no mejora, la experiencia del usuario de la página construida ha mejorado mucho, generando la sensación de que la página carga mucho más rápido debido a que los componentes clave se cargan en primera instancia, lo que permite al usuario centrarse en ellos  mientras que los componentes secundarios son entregados posteriormente.

23. ¿Ha mejorado la alta disponibilidad ( HA) en Drupal 8?

Drupal se ha utilizado en entornos de alta disponibilidad desde hace muchos años, lo que lo convierte en un problema bastante conocido y superado. A este respecto, Drupal 8 es similar a Drupal 7. Las mejoras en la capa de almacenamiento en caché significan que ahora, con Drupal 8, son posibles las estrategias más complejas y. además, es posible que se incluya pensamiento adicional en la configuración de las herramientas de la caché.

24. ¿Muestra Drupal 8 grandes diferencias en su enfoque de la seguridad?

El titular clave con respecto a la seguridad en Drupal 8 es que ahora es mucho más difícil generar problemas fruto de descuidos o malas prácticas en el desarrollo.

En la capa de theming, el uso de la introducción del sistema de plantillas Twig como un sustituto para PHPTemplate significa que ya no es necesario utilizar código PHP dentro de las plantillas, ya que Twig cuenta con multitud de características para asegurar que la capa theming - que históricamente ha sido una fuente común de vulnerabilidades de seguridad - sea segura.

El hecho de que los desarrolladores de los sitios web tuviesen que configurar los filtros de texto manualmente para una variedad de editores WYSIWYG de terceros introdujo otra vulnerabilidad común en la seguridad. Si bien este tipo de editores son necesarios para los sistema de gestión de contenido - CMS-  su instalación no fue apoyada de forma nativa por el ncore de Drupal, lo que conformaba una de las tareas más complejas para los desarrolladores. Drupal 8 incluye CKEditor como estándar y sus valores predeterminados están configurados con sensatez, lo que asegura que funcionarán para la mayoría de los casos y que, además, sean seguros.

Por otra parte, se ha eliminado el módulo de PHP del core, lo que permite a los desarrolladores escribirlo en el navegador. Esto condujo a malas prácticas, además de otorgar una vía para que los usuarios malintencionados que hubiesen obtenido privilegios en el sitio web pudiesen ejecutar código directamente en el servidor como fruto de una mala configuración.

El nuevo sistema de enrutamiento permite que todas las variables de entrada de la URL se declaren adecuadamente, lo que significa que los tipos de datos malos o inesperados se filtran de manera predeterminada. Además, la protección CSRF anteriormente proporcionada por la API del core de Drupal 7 sigue vigente en Drupal 8.

En cuanto al mantenimiento, un equipo de voluntarios llamado “equipo de seguridad de Drupal” se encarga de buscar fallos de seguridad en el core de Drupal y de gestionar tanto la cola de avisos de seguridad como la cola de errores.

La gestión de los avisos de seguridad por parte de librerías externas cobra ahora una mayor importancia, ya que Drupal 8 requiere de mucho código de terceros para funcionar. Los módulos que utilicen las bibliotecas externas pueden alertar a los problemas de seguridad con sus dependencias a través del evento hook_requirements.

En el núcleo de Drupal, el código externo en realidad forma parte de la base de código de Drupal 8, por lo que, cuando se encuentran problemas de seguridad en dicho código, el equipo de seguridad debe trabajar con los desarrolladores de las terceras partes para solucionar los problemas y garantizar los avisos de seguridad que afecten a ambos códigos base se liberen juntos.

Por otra parte, Drupal 8 no proporciona ninguna forma automatizada para aplicar actualizaciones. Sin embargo, las empresas cuyos sitios web estén desarrollados en Drupal pueden hacerlo a través de un proceso de integración continua, utilizando la herramienta de línea de comandos drush, el control de versiones y las pruebas automatizadas.

¡Y aquí finaliza esta mini-serie de artículos! Esperamos que hayáis encontrado respuestas esclarecedoras sobre las preguntas más frecuentes sobre Drupal 8 y que os haya parecido útil.

¿Se os ocurre alguna pregunta más? ¿Tenéis alguna otra duda? Si es así, no dudéis en contactarnos y nuestro equipo de expertos drupaleros os responderá :)

¡Y no olvides compartir este post en las redes sociales! ;)

 

* Artículo transcrito del inglés 24 things about Drupal 8 every CTO should know, escrito por John Ennew para https://www.deeson.co.uk