Reto
Como bien sabemos los usuarios de Drupal, la base de datos no es precisamente su punto fuerte. Aunque Drupal ofrece una gran flexibilidad en la creación de entidades y campos, esa misma flexibilidad tiene un coste: la eficiencia. En arquitecturas con mucho tráfico, cargar entidades una y otra vez penaliza el rendimiento.
Solución
Desarrollé un módulo personalizado para Drupal que, además de las funciones habituales, almacena las entidades en archivos JSON dentro de un directorio público. La generación es posible gracias a la capacidad de serialización incorporada en el núcleo de Drupal.
$json_entity = $this->serializer->serialize($entity, 'json', []);
$this->fileSystem->saveData($json_entity, $file_path, FileSystemInterface::EXISTS_REPLACE);
De esta forma, en una arquitectura desacoplada podemos cargar entidades sin consultar a Drupal. Incluso podemos usar Drupal para generar estos archivos sin que ningún cliente tenga que hacer solicitudes para obtener las entidades.
Resultado
Una capa de entrega estática que elimina el 100% de las consultas a la base de datos en la carga de entidades cacheadas, con tiempos de respuesta por debajo de 50 ms frente a la consulta SQL equivalente, y que habilita un frontend headless más rápido y desacoplado. El módulo queda disponible como código abierto.