GraphQL: Historia, origen y funcionamiento

Este lenguaje de consulta facilita a los programadores saber que tipo de datos necesita una aplicación. Twitter, Yelp, The New York Times y Airbnb lo utilizan.

GraphQL es una de las palabras de moda más importantes en tecnología de software en la actualidad. ¿Pero qué? ¿Es un lenguaje de consulta como SQL? ¿Un motor de ejecución como la JVM? ¿Una especificación como XML? GraphQL es una sintaxis de lenguaje de consulta, un motor de ejecución independiente del lenguaje de programación y una especificación en constante evolución.

Detrás de escena, le dice a la API cómo presentar los datos recuperados al cliente. Esto permite a los desarrolladores realizar solicitudes de datos precisos para que reciban exactamente lo que necesitan.

Una consulta GraphQL es esencialmente una cadena que, cuando se envía a un servidor, devuelve JSON al cliente. Estas consultas reflejan sus respuestas, lo que facilita la predicción de la forma de los datos que se devuelven al ejecutar la consulta. También facilita a los desarrolladores escribir consultas si saben qué tipo de datos necesita su aplicación.

A diferencia de los servicios RESTful o las declaraciones de combinación complejas en SQL, GraphQL es jerárquico. Esto significa que sigue las relaciones entre los objetos que funcionan bien con datos estructurados con gráficos que utilizan las interfaces de usuario jerárquicas.

GraphQL aprovecha el código existente en lugar de dictar o proporcionar almacenes de datos. Es introspectivo, lo que significa que los servidores GraphQL pueden consultarse por los tipos que admiten, lo que facilita la creación de herramientas sobre esta información.

Con GraphQL, la forma de los datos que se devuelven depende completamente de la consulta del cliente. Como resultado, se pueden agregar fácilmente campos adicionales al servidor (por ejemplo, al agregar nuevas características del producto) sin afectar a los clientes existentes. Esto también funciona al revés. Por lo tanto, cuando esté cancelando funciones antiguas, los campos del servidor correspondientes continuarán funcionando incluso si están en desuso. De esta manera, GraphQL genera un proceso compatible con versiones anteriores que elimina la necesidad de incrementar los números de versión.

¿Cómo comenzó GraphQL?

La historia de origen de GraphQL se remonta al cambio de la industria al móvil. Esto fue en un momento en que la estrategia móvil de Facebook (es decir, la adopción de HTML5 en dispositivos móviles) no funcionaba debido a problemas relacionados con el alto uso de la red. Como resultado, Facebook decidió reconstruir la aplicación iOS desde cero utilizando tecnologías nativas.

El principal problema con la implementación de News Feed de Facebook en dispositivos móviles. No fue tan simple como recuperar una historia, quién la escribió, qué dice, la lista de comentarios y a quién le gustó la publicación. Cada historia estaba interconectada, anidada y recursiva. Las API existentes no fueron diseñadas para permitir que los desarrolladores expongan una experiencia enriquecida, similar a un feed de noticias en dispositivos móviles. No tenían una naturaleza jerárquica, permitían a los desarrolladores seleccionar lo que necesitaban o la capacidad de mostrar una lista de historias de feed heterogéneas.

En 2012, Facebook decidió que necesitaban crear una nueva API de News Feed para crear la aplicación móvil de Facebook. Así es cuando GraphQL comenzó a tomar forma y, a mediados de agosto, se lanzó Facebook para iOS 5.0 con la nueva tecnología GraphQL.

Permitió a los desarrolladores reducir el uso de la red al utilizar sus capacidades de obtención de datos. Durante el próximo año y medio, la superficie de la API GraphQL se expandió para cubrir la mayor parte de la aplicación de iOS de Facebook, además de News Feed. En 2015, la especificación GraphQL se publicó por primera vez junto con la implementación de referencia en JavaScript.

Limitaciones de las API REST tradicionales

El principal problema con la API REST tradicional es que es lenta y requiere una codificación rígida. Una posible solución para acelerar las cosas es crear múltiples puntos finales. Sin embargo, cuando extrapola esto para cubrir todas las fuentes de datos y las aplicaciones de clientes API que necesita, se encuentra con las limitaciones de las API REST.

GraphQL tiene como objetivo resolver estos problemas teniendo un único punto final "inteligente" en lugar de tener muchos puntos finales "tontos". El beneficio clave aquí es que los puntos finales inteligentes pueden tomar consultas complejas y dar forma a la salida de datos en lo que el cliente requiera.

Esencialmente, la capa GraphQL existe entre el cliente y las fuentes de datos. Su trabajo es recibir las solicitudes del cliente y obtener los datos necesarios en función de los requisitos del cliente. En pocas palabras, el enfoque GraphQL para las consultas aborda una amplia gama de problemas de desarrollo de aplicaciones a gran escala.

Cómo GraphQL se hizo popular

Ya existía una demanda en la industria de una solución como GraphQL, razón por la cual se popularizó bastante rápido. En los primeros seis meses, hubo implementaciones de GraphQL en diferentes lenguajes de programación, incluidos PHP, JavaScript, Scala, Python y Ruby.

Rápidamente se hizo popular cuando nuevas empresas y aficionados comenzaron a construirlo. Finalmente, la tecnología fue adoptada por compañías más grandes que comenzaron con GitHub en 2016 y luego por Twitter, Yelp, The New York Times, Airbnb y más.


 

Fecha: 11-05-2020