Header Ads Widget

Ticker

6/recent/ticker-posts

5 posibles beneficios de integrar GraphQL

 

5-beneficios-potenciales-de-integrar-graphql

GraphQL es increíblemente poderoso, tan poderoso, de hecho, que es utilizado por corporaciones como Facebook para impulsar sus grandes y complejos sistemas sociales para miles de millones de usuarios. A pesar de esto, el idioma es todavía relativamente incipiente, y su uso aún no ha alcanzado las vertiginosas alturas que ocupan los idiomas que reemplaza y aumenta.

En este artículo, descubriremos qué es GraphQL y qué lo hace tan poderoso. Le daremos cinco razones convincentes para adoptarlo como parte de su sistema y ecosistema, y ​​destacaremos algunos casos de uso público que demuestran el éxito de dicha adopción e integración.

¿Qué es GraphQL?

Logotipo de GraphQL

GraphQL

GraphQL es un lenguaje de consulta de capa de aplicación. Lo que esto significa es que GraphQL está diseñado para interpretar una cadena de un servidor o cliente y devolver esos datos en un formato comprensible, estable y predecible. Como dice el sitio web oficial de GraphQL , "Describe tus datos, pide lo que quieras, obtén resultados predecibles".

GraphQL hace esto a través de solicitudes y declaraciones simples y fáciles de entender. Un simple ejemplo del sitio web oficial resalta perfectamente esta simplicidad. Este es un descriptor válido dentro de GraphQL:

type Project {
  name: String
  tagline: String
  contributors: [User]
}

Que, cuando se combina con una solicitud simple y efectiva:

{
project(name: "GraphQL") { tagline } }

Devuelve un resultado limpio, fácil y simple:

{
"project": { "tagline": "A query language for APIs" } }

La simplicidad y el poder detrás del lenguaje proviene de sus arquitectos principales. GraphQL es principalmente un esfuerzo de Facebook, con una variedad de colaboradores adicionales que dedican sus esfuerzos a aumentar la eficiencia.

GraphQL surgió como resultado de la transición de Facebook de las aplicaciones HTML5 en dispositivos móviles para admitir aplicaciones nativas más sólidas. A medida que se presentó la necesidad de un backend más fuerte y una interfaz universal más fácil, GraphQL emergió rápidamente como el lenguaje de elección.

Una palabra rápida sobre las implementaciones de GraphQL: hay un marco que se usa a menudo como un punto de entrada a GraphQL conocido como Relay que cubriremos específicamente en un artículo siguiente.

Con todo esto dicho, ¿qué hace que GraphQL sea tan poderoso?

1 - Recuperación de datos más elegante

GraphQL tiene que ver con la simplicidad , y con esa simplicidad viene una metodología y una experiencia más elegante con respecto a la recuperación de datos. Debido a que los datos se recopilan bajo un punto final común o llamada que es variable en cuanto al tipo de datos y la solicitud como se indica en la llamada inicial, varios beneficios enormes son intrínsecos al sistema de llamadas.

En primer lugar, el uso de GraphQL elimina los puntos finales ad hoc y las recuperaciones de objetos de ida y vuelta. Imagina que eres un conductor de reparto mirando un mapa de dónde entregar un paquete. En ese mapa, tiene quince posibles puntos de entrada a las calles cercanas a la calle a la que necesita llegar, cada uno con sus propios límites de velocidad, limitaciones de peso de la carga y tipo de vehículo permitido.

La complejidad en la que se incurre en esta situación es absolutamente increíble, tanto que retrasaría la entrega. Ahora imagine la misma situación, pero con una sola calle y reglas bien definidas y comúnmente conocidas: eso es lo que GraphQL puede proporcionar.

2 - Más estabilidad de backend

Con la simplicidad viene la estabilidad : este es un hecho básico de la vida. Cuanto más simple es un proceso, es menos probable que haya fallas en la planificación, construcción, ejecución y operación continua a lo largo del tiempo. GraphQL hace que las consultas sean más simples y elegantes y, como resultado, mejora la estabilidad de todo el proceso.

La forma en que GraphQL hace esto es bastante compleja, pero hay una metodología en particular que vale la pena mencionar. Debido a que los datos se entregan de una manera estructurada y definida independiente de la solicitud del cliente (ya que las reglas las dicta GraphQL en sí, no la aplicación en sí), los datos se pueden manipular, cambiar y alterar en la base del código de backend sin requerir cambios directamente en cómo funciona el cliente.

En la relación tradicional servidor-cliente, esto simplemente no es posible: los datos están disponibles, se pueden consultar y utilizar, pero el formato y el método los dicta en gran medida el cliente. Siempre que la solicitud general se ajuste a una metodología estándar según lo dictado por el idioma o la documentación, esos datos se entregan con éxito. Sin embargo, cambie el funcionamiento de la base de datos o actualice la aplicación independientemente de los sistemas de soporte heredados y tendrá una aplicación "averiada".

Esto no es un problema con GraphQL. El punto de entrada definido por GraphQL es casi como una capa traducible: la estructura de la solicitud la dicta el servidor y luego la ruta del idioma en sí la enruta a los recursos y sistemas necesarios. En consecuencia, el backend de una aplicación se puede revisar sin necesidad de una reestructuración completa de la aplicación cliente o del método de llamada común, ya que la metodología es controlada directamente por el servidor en primer lugar.

Lea también: Consejos y herramientas para depurar API

3 - Mejor eficiencia de consultas

GraphQL unifica datos que de otro modo requerirían múltiples puntos finales o, en el peor de los casos, puntos finales ad hoc y recuperaciones repetidas complejas, y le da al solicitante un único punto de entrada simple .

Debido a que los datos se definen en el servidor con un esquema basado en gráficos, los datos se pueden entregar como un paquete en lugar de a través de múltiples llamadas. Por ejemplo, el siguiente código para una consulta de contenido y comentarios tendría un único punto final en GraphQL:

{
  latestPost {
    _id,
    title,
    content,
    author {
      name
    },
    comments {
      content,
      author {
        name
      }
    }
  }
}

En los lenguajes de consulta de API tradicionales, esto requeriría al menos 8 llamadas y tendría que apuntar a puntos finales específicos para diferenciar el contenido de la publicación en sí y el contenido del comentario.

Esto no solo aumenta la eficiencia de la entrega de datos, sino que reduce fundamentalmente la cantidad de recursos necesarios para cada solicitud de datos. Además, las restricciones de recuperación se declaran con una consulta jerárquica declarativa a un único punto final, lo que reduce las demandas de datos de llamada menos para el cliente.

El mayor beneficio neto de todo este proceso es, por supuesto, una reestructuración fundamental de la relación entre el cliente y el servidor. En GraphQL, el servidor publica reglas claras y explícitas específicas para la aplicación, y el cliente solicita ese lenguaje con consultas de datos comunes. En pocas palabras, los desarrolladores pueden imponer restricciones de datos de forma más natural y con menos impacto en el consumidor.

4 - GraphQL es una especificación

Quizás uno de los mayores beneficios de GraphQL es que la sobrecarga de adopción es baja, específicamente debido a su estado como especificación. Si bien siempre hay nuevas herramientas en el mercado, muchos desarrolladores evitan adoptar estas soluciones porque están "demasiado involucrados" o "demasiado interesados" en su arquitectura REST.

Como especificación, GraphQL es un contenedor que se puede definir ; no es necesario reemplazar un sistema REST. Esto significa que los desarrolladores pueden aprovechar la totalidad de los beneficios de GraphQL sin tener en cuenta los costos generales de su incorporación.

Un gran beneficio de esta envoltura GraphQL también es cómo cambia la relación entre los datos y los sistemas que requieren dichos datos. Los datos en GraphQL no están limitados por el idioma o el tipo de datos, sino que están limitados por las descripciones del servidor según lo definido por el cliente (por lo que, en efecto, no es una limitación en absoluto). Los datos envueltos en GraphQL, independientemente del lenguaje o sistema subyacente, se pueden compartir entre variaciones en los esquemas de API estándar y la amplia gama de lenguajes que los crean.

Más específicamente, esto también significa que GraphQL es fundamentalmente compatible con cualquier cosa con la que sean compatibles las API centradas en REST; por lo tanto, el punto de entrada tanto para GraphQL como para su interactividad con los sistemas dependientes de REST es relativamente bajo.

Para obtener consejos sobre la implementación, consulte Lecciones aprendidas de Joel Griffith Envolver una API REST con GraphQL ; Esté atento a un tutorial de las API nórdicas.

5 - GraphQL mejora la comprensión y la organización

Quizás el mayor beneficio de implementar GraphQL es uno de importancia para el ecosistema de API en su conjunto: el 99% del tiempo, una API se puede organizar en un esquema de gráfico simple y comprensible, y hacerlo lo obliga a organizar y comprender mejor sus datos , el flujo de esos datos y las ineficiencias y errores en ese sistema.

Si bien esto tiene un beneficio neto para el desarrollador, tiene enormes implicaciones positivas para el ecosistema de desarrollo en su conjunto . Debido a que GraphQL adjunta tipos a los datos, los errores de tipos entre las aplicaciones y su servidor y las aplicaciones compatibles con GraphQL con otras aplicaciones comienzan a desaparecer.

De lo que estamos hablando aquí es de un tipo de "traductor universal", que proporciona traducción de datos entre diferentes servicios al tiempo que elimina el cuello de botella que normalmente se encuentra. Además, esto elimina la presión hacia los desarrolladores de aplicaciones para garantizar la compatibilidad y las mutaciones.

Un gran beneficio para los desarrolladores y una interacción más positiva en el ecosistema: ¿qué es no amar?

Quien lo usa

Debido a que GraphQL es extremadamente poderoso, ha sido utilizado por varios proveedores que necesitan una legibilidad estable con velocidad e indexación rápidas. Por lo tanto, la mayoría de los casos de uso de GraphQL son aquellos que requieren un alto rendimiento de datos con facilidad de clasificación, lo que ciertamente está representado claramente por sus usuarios de perfil más alto.

usuario de hudl graphql

El análisis de datos deportivos de Hudl mejoró en parte a GraphQL

Un ejemplo de lo poderoso que es GraphQL cuando se trata de manejar un alto rendimiento de datos en un asunto relacional es Hudl , un proveedor de análisis de videos deportivos. Esencialmente, Hudl toma videos de eventos deportivos, prácticas y otras situaciones y proporciona comentarios profesionales para cada jugador y una descripción general que incorpora estos comentarios.

En consecuencia, los datos procesados ​​por Hudl son estrictamente relacionales ; a diferencia de otras soluciones, los datos que se manejan no son simples datos relacionales uno a uno. Cada jugador pertenece a un equipo, pero cada jugador tiene sus propios datos que se adjuntan a actividades, habilidades y enfoques específicos.

En un lenguaje de consulta tradicional, comparar y contrastar estos puntos de datos enormemente discrepantes entre cada jugador y luego cada equipo requeriría una gran cantidad de combinación de datos, o al menos, una gran variedad de llamadas que se realizan varias veces a cada sistema de servidor. segundo.

Con GraphQL, cada elemento se describe claramente y una aplicación lo solicita específicamente. GraphQL permite una pequeña gama de puntos finales que proporcionan estos datos en un método consumible y fácilmente comprensible. Esto también significa que los datos generados por Hudl no están estrictamente vinculados a su aplicación, y solo a su aplicación; dado que se describe directamente, los datos se pueden importar a aplicaciones de planificación de equipos o aplicaciones de seguimiento de la salud para el seguimiento de la salud física, el rendimiento en ciertos entornos y otras consultas relacionales similares.

Esta interactividad se puede ver en otra aplicación de GraphQL, AlphaSights . AlphaSights puede ser visto como una especie de "intermediario", pero con un poder increíble: conecta a los clientes con expertos y los servicios que pueden proporcionar. Si bien esto parece simple en su valor nominal, los datos subyacentes son muy valiosos, no solo para AlphaSights, sino también para aquellos a quienes brindan estos datos.

Los ingenieros de AlphaSights se declararon a sí mismos el gran valor de integrar GraphQL en su sistema para reducir la complejidad y mejorar el intercambio de datos:

“GraphQL nos dio una forma de entrar y una salida. Todos los datos se resolvieron a través de un objeto,Graph::QueryTypeLa presencia de un solo objeto proporcionó una curva de aprendizaje mucho más fácil para los nuevos desarrolladores que buscan en la base del código, y los conceptos de nivel superior tienen cada uno su propio resolutor, lo que facilita delimitar el significado de cada término hasta el nivel de la base de datos. … Al hacer que el contrato entre servidor y consumidor sea flexible, obtenemos el beneficio de equipos mucho más ágiles y menos debate sobre cómo y si el consumidor recibe esos datos. También hemos descubierto que mantener los servicios es mucho más fácil. No hay rutas "v2" para agregar, y el sistema de tipos permite al consumidor descubrir actualizaciones fácilmente. También hemos aprovechado "GraphApi :: Schema.middleware" para monitorear qué atributos se están utilizando y ayudar a identificar tipos / campos heredados que podemos eliminar, que vamos a abrir en el futuro ".

Ser capaz no solo de proporcionar datos en un formato sencillo, sino de hacer que los desarrolladores novatos puedan interactuar y asimilar fácilmente los datos es un gran beneficio y hace que los datos generados sean realmente extensibles.

GraphQL no es solo para bases de datos enormes y complejas, también se puede usar fácilmente para crear bases de datos relativamente simples con mayor eficiencia. Un gran ejemplo de esto es Beek.io . Es fundamentalmente una red social, aunque de nicho, que se centra en los libros y en quienes los aman. Si bien la base de datos en sí es relativamente simple (autor, nombre, género, etc.), la forma en que se maneja este contenido está sumamente simplificada en GraphQL.

Al simplificar las llamadas a un solo punto de entrada, evita que diferentes puntos finales proporcionen los mismos datos de diferentes maneras y aumenta la comprensión de los datos que se entregan. Debido a esto, si bien Beek.io es una encarnación bastante simple de la esfera de las redes sociales, es extremadamente receptivo y entrega datos de una manera que los amantes de los libros pueden usar para mejorar su biblioteca de lectura (y quizás su lista de amigos).

Conclusión: evaluar

Si bien GraphQL es obviamente poderoso, hay algunos argumentos en contra, principalmente que aún está en su infancia. API Evangelist ve GraphQL como una forma de "conocer adecuadamente sus recursos de API", dudando de si la mayoría de los consumidores de API no técnicos lo encontrarán útil. Otros han expresado que una organización no debería integrar GraphQL simplemente porque un gigante como Facebook o Github tiene una API GraphQL .

El Radar tecnológico 2016 de ThoughtWork , que alcanza veredictos de acción para técnicas, herramientas, plataformas y lenguajes emergentes, etiqueta GraphQL como ASSESS . Debe evaluarse si se debe adoptar GraphQL o no; Como hemos visto a lo largo de este artículo, puede ayudar a garantizar que los datos se generen y accedan de manera eficiente, y puede hacer que las aplicaciones impulsadas por el servidor sean mucho más poderosas y extensas.

Publicar un comentario

0 Comentarios