GRAPH QL. Tu mejor aliado para la creación de productos de datos.

Fecha del post: 09-04-2024

Manos escribiendo sobre un teclado

La era de la digitalización en la que nos encontramos ha llenado nuestra vida diaria de productos de datos o productos basados en datos. En este post te descubrimos en qué consisten y te mostramos una de las tecnologías de datos clave para diseñar y construir este tipo de productos: GraphQL.

Introducción

Empecemos por el principio, ¿qué es un producto de datos? Un producto de datos es un contenedor digital (una pieza de software) que incluye, datos, metadatos y ciertas lógicas funcionales (qué y cómo manejo los datos). El objetivo de este tipo de productos es facilitar la interacción de los usuarios con un conjunto de datos. Algunos ejemplos son:

  • Cuadro de mando de ventas: Los negocios online cuentan con herramientas para conocer la evolución de sus ventas, con gráficos que muestran las tendencias y rankings, para ayudar en la toma de decisiones
  • Apps de recomendaciones: Los servicios de TV en streaming disponen de funcionalidades que muestran recomendaciones de contenidos basándose en los gustos históricos del usuario.
  • Apps de movilidad. Las aplicaciones móviles de los nuevos servicios de movilidad (como Cabify, Uber, Bolt, etc.) combinan datos y metadatos de usuarios y conductores con algoritmos predictivos, como el cálculo dinámico del precio del viaje o la asignación óptima de conductor, con el fin de ofrecer una experiencia única al usuario.
  • Apps de salud: Estas aplicaciones hacen un uso masivo de los datos capturados por gadgets tecnológicos (como el propio dispositivo, los relojes inteligentes, etc.) que se pueden integrar con otros datos externos como registros clínicos y pruebas diagnósticas.
  • Monitoreo ambiental: Existen apps que capturan y combinan datos de servicios de predicción meteorológica, sistemas de calidad del aire, información de tráfico en tiempo real, etc. para emitir recomendaciones personalizadas a los usuarios (por ejemplo, la mejor hora para programar una sesión de entrenamiento, disfrutar al aire libre o viajar en coche).

Como vemos, los productos de datos nos acompañan en el día a día, sin que muchos usuarios se den siquiera cuenta. Pero, ¿cómo se captura esa gran cantidad de información heterogénea de diferentes sistemas tecnológicos y se combina para proporcionar interfaces y vías de interacción con el usuario final? Aquí es donde GraphQL se posiciona como una tecnología clave para acelerar la creación de productos de datos, al mismo tiempo que mejora considerablemente su flexibilidad y la capacidad de adaptación a las nuevas funcionalidades deseadas por los usuarios.

¿Qué es GraphQL?          

GraphQL vio la luz en Facebook en 2012 y se liberó como Open Source en 2015. Puede definirse como un lenguaje y un intérprete de ese lenguaje, de forma que un desarrollador de productos de datos puede inventarse una forma de describir su producto en base a un modelo (una estructura de datos) que hace uso de los datos disponibles mediante APIs.

Antes de la aparición de GraphQL, teníamos (y tenemos) la tecnología REST, que utiliza el protocolo HTTPs para hacer preguntas y obtener respuestas en base a los datos. En 2021, introducimos un post donde presentamos la tecnológica y realizamos un pequeño ejemplo demostrativo sobre su funcionamiento. En él, explicamos REST API como la tecnología estándar que soporta el acceso a datos por programas informáticos. También destacamos cómo REST es una tecnología fundamentalmente diseñada para integrar servicios (como un servicio de autenticación o login).

De forma sencilla, podemos utilizar la siguiente analogía. Es como si REST fuera el mecanismo que nos da acceso a un diccionario completo. Es decir, si necesitamos buscar cualquier palabra, tenemos un método de acceso al diccionario que es la búsqueda alfabética. Es un mecanismo general para encontrar cualquier palabra disponible en el diccionario. Sin embargo, GraphQL nos permite, previamente, crear un modelo de diccionario para nuestro caso de uso (lo que conocemos como “modelo de datos”). Así por ejemplo, si nuestra aplicación final es un recetario, lo que hacemos es seleccionar un subconjunto de palabras del diccionario que estén relacionadas con recetas de cocina.

Para utilizar GraphQL los datos tienen que estar siempre disponibles mediante una API. GraphQL facilita una descripción completa y comprensible de los datos de dicha API, ofreciendo a los clientes (humanos o aplicación) la posibilidad de solicitar exactamente lo que necesitan. Tal y como citan en este post, GraphQL es como un API al que le añadimos una sentencia “Dónde” al estilo SQL.

A continuación, analizamos en detalle las virtudes de GraphQL cuando el foco se pone en el desarrollo de productos de datos.

Beneficios de usar GraphQL en productos de datos:

  • Con GraphQL se optimiza de forma considerable la cantidad de datos y consultas sobre las APIs. Las APIs de acceso a determinados datos no están pensadas para un producto (o un caso de uso) específico sino como una especificación general de acceso (véase el ejemplo anterior del diccionario). Esto hace que, en muchas ocasiones, para acceder a un subconjunto de datos disponibles en un API, tengamos que realizar varias consultas encadenadas, descartando la mayor parte de información por el camino. GraphQL optimiza este proceso, puesto que define un modelo de consumo predefinido (aunque adaptable a futuro) por encima de una API técnica. Reducir la cantidad de datos solicitados impacta positivamente en la racionalización de recursos informáticos, como el ancho de banda o el almacenamiento transitorio (cachés), y mejora la velocidad de respuesta de los sistemas.
  • Lo anterior, tiene un efecto inmediato sobre la estandarización de acceso a datos. El modelo definido gracias a GraphQL crea un estándar de consumo de datos para una familia de casos de uso. De nuevo, en el contexto de una red social, si lo que queremos es identificar conexiones entre personas, no nos interesa un mecanismo general de acceso a todas las personas de la red, sino un mecanismo que nos permita indicar aquellas personas con las que tengo algún tipo de conexión. Esta especie de filtro en el acceso a los datos, se puede pre-configurar gracias a GraphQL.
  • Mejora de seguridad y rendimiento: A través de la definición precisa de consultas y la limitación de acceso a datos sensibles, GraphQL puede contribuir a una aplicación más segura y de mejor rendimiento.

Gracias a estas ventajas, el uso de este lenguaje representa una evolución significativa en la manera de interactuar con datos en aplicaciones web y móviles, ofreciendo ventajas claras sobre enfoques más tradicionales como REST.

La Inteligencia Artificial generativa. Un nuevo superhéroe en la ciudad.

Si el uso del lenguaje GraphQL para acceder a los datos de forma mucho más eficiente y estándar es una evolución significativa para los productos de datos, ¿qué pasará si podemos interactuar con nuestro producto en lenguaje natural? Esto es ahora posible gracias a la explosiva evolución en los últimos 24 meses de los LLMs (Modelos Grandes del Lenguaje) y la IA generativa.

La siguiente imagen muestra el esquema conceptual de un producto de datos, integrado con LLMS: un contenedor digital que incluye datos, metadatos y funciones lógicas que se expresan como funcionalidades para el usuario, junto con las últimas tecnologías para exponer información de forma flexible, como GraphQL y las interfaces conversacionales construidas sobre Modelos Grandes del Lenguaje (LLMs).

¿Cómo se pueden beneficiar los productos de datos de la combinación de GraphQLy el uso de los LLMs?

  • Mejora de la experiencia de usuario. Mediante la integración de LLMs, las personas puedan hacer preguntas a los productos de datos usando lenguaje natural. Esto representa un cambio significativo en cómo interactuamos con los datos, haciendo que el proceso sea más accesible y menos técnico. De forma práctica sustituiremos los clicks por frases en el momento de pedir un taxi.
  • Mejoras en la seguridad a lo largo de la cadena de interacción en el uso de un producto de datos. Para que esta interacción sea posible, se necesita un mecanismo que conecte de manera eficaz el backend (donde residen los datos) con el frontend (donde se hacen las preguntas). GraphQL se presenta como la solución ideal debido a su flexibilidad y capacidad para adaptarse a las necesidades cambiantes de los usuarios, ofreciendo un enlace directo y seguro entre los datos y las preguntas realizadas en lenguaje natural. Es decir, GraphQL puede pre-seleccionar los datos que se van a mostrar en una consulta, evitando así que la consulta general pueda hacer visibles algunos datos privados o innecesarios para una aplicación particular.
  • Potenciando las consultas con Inteligencia Artificial: La inteligencia artificial no solo juega un papel en la interacción en lenguaje natural con el usuario. Se puede pensar en escenarios donde el propio modelo que se define con GraphQL esté asistido por la propia inteligencia artificial. Esto enriquecería las interacciones con los productos de datos, permitiendo una comprensión más profunda y una exploración más rica de la información disponible. Por ejemplo, le podemos pedir a una IA generativa (como ChatGPT) que tome estos datos del catálogo que se exponen como un API y que nos cree un modelo y un endpoint de GraphQL.

En definitiva, la combinación de GraphQL y los LLMs, supone una auténtica evolución en la forma en la que accedemos a los datos. La integración de GraphQL con los LLMs apunta hacia un futuro donde el acceso a los datos puede ser tan preciso como intuitivo, marcando un avance hacia sistemas de información más integrados, accesibles para todos y altamente reconfigurables para los diferentes casos de uso. Este enfoque abre la puerta a una interacción más humana y natural con las tecnologías de información, alineando la inteligencia artificial con nuestras experiencias cotidianas de comunicación usando productos de datos en nuestro día a día.


Contenido elaborado por Alejandro Alija,experto en Transformación Digital e Innovación. Los contenidos y los puntos de vista reflejados en esta publicación son responsabilidad exclusiva de su autor.