Header Ads Widget

Ticker

6/recent/ticker-posts

Cómo hacer que GraphQL funcione para usted

 Entrevistamos a tres expertos en API sobre el estado de GraphQL

GraphQL , el lenguaje de consulta de la API, le permite devolver muchos recursos en una sola solicitud. Con un sistema de tipos efectivo, GraphQL agiliza la búsqueda de datos para explícitamente lo que el cliente necesita.

Desde su lanzamiento público por Facebook en 2015, GraphQL ha encendido mucha discusión en la industria de API. GraphQL Landscape ahora cita 84 empresas que adoptan GraphQL en producción, y hay 21 miembros en GraphQL Foundation.

La opinión pública de GraphQL sigue siendo bastante positiva, con comunidades y herramientas auxiliares ensalzando sus beneficios. Sin embargo, en comparación con las más de 22.000 API públicas estimadas que existen, las cifras de adopción de GraphQL solo constituyen una fracción minúscula del total de API.

Quizás las bajas tasas de adopción sean evidencia de que GraphQL puede no ser personalizado para cada escenario. Los propietarios de API también pueden tener dificultades para adaptarse a GraphQL sin reformar en gran medida los servicios REST preexistentes. No obstante, existen algunas capacidades, extensiones y herramientas de envoltura interesantes que permiten que los diseños de API preexistentes funcionen en conjunto con GraphQL.

Entonces, para este artículo, trajimos a algunos expertos para aprender cómo hacen que GraphQL funcione para sus entornos. A continuación, los expertos en API Devlin Duldulao , consultor sénior de Inmeta, Didier Micoud , arquitecto de soluciones de software, Expedia Group, Vrbo y Diana Suvorova , ingeniera de software de Uber, aportan su experiencia en el dominio.

Veremos por qué nuestro panel todavía está entusiasmado con GraphQL, así como su opinión sobre cuándo es mejor usar GraphQL que REST. También descubriremos cómo combinar GraphQL con entornos existentes y cubriremos algunas de las herramientas GraphQL favoritas. Con suerte, determinaremos no solo cómo hacer que GraphQL funcione para usted, sino también cómo puede elevar su programa de desarrollador a nuevas capacidades programáticas.

Por qué todavía estamos entusiasmados con GraphQL

¿Sigue la gente entusiasmada con GraphQL? Según nuestro panel, la respuesta es un abrumador "Sí". Como discutimos anteriormente en el blog, GraphQL puede ofrecer muchas ventajas sobre la experiencia tradicional de API web.

Por un lado, GraphQL brinda beneficios de usabilidad . En lugar de requerir que los consumidores de API hagan ping a diferentes puntos finales HTTP, GraphQL permite que un único punto final acepte múltiples consultas. Los desarrolladores también pueden utilizar una zona de juegos Graph i QL para ejecutar consultas, las cuales Devlin considera "realmente interesantes". Devlin agrega que GraphQL es eficiente, especialmente en términos de administración estatal .

Devlin Duldulao - Inmeta

Devlin Duldulao , consultor senior de Inmeta, analiza las capacidades de GraphQL.

“[Con GraphQL], podrá administrar fácilmente el estado local de su aplicación junto con sus datos remotos”, dice Devlin. "Esto significa que no es necesario instalar una biblioteca de administración de estado en su aplicación que requerirá que configure un texto estándar adicional".

Para Didier, están entusiasmados con la utilización de GraphQL en Expedia para presentar su API de la manera más consistente y comprensible.

“Nuestro enfoque GraphQL también nos permite enfocarnos más en las capacidades que queremos exponer y menos en la pila”, dice Didier. "GraphQL proporcionará una forma de conectar las API de dominio interno a menudo heterogéneas con diversas experiencias".

Diana señala que GraphQL atrae a los usuarios desarrolladores front-end que desean una integración más flexible y fluida. “Como ingeniero de interfaz, estoy absolutamente encantada con GraphQL”, dice Diana. "GraphQL elimina la necesidad de tener una lógica compleja en el cliente para obtener todos los datos de la aplicación".

Diana describe cómo GraphQL resuelve problemas como la búsqueda excesiva / insuficiente , eliminando la necesidad de enviar datos irrelevantes al cliente y reduciendo la confusión sobre cómo filtrar las respuestas .

Satisfacer las necesidades de los consumidores de API y resolver los puntos débiles de los desarrolladores son objetivos que a menudo fomentamos en el blog como Developer Experience (DX). Parece que GraphQL está en línea con el énfasis moderno en DX para servicios orientados a desarrolladores.

Pero GraphQL es más que solo usabilidad para los consumidores de productos API; tiene muchas ventajas para el desarrollo de aplicaciones web . Al utilizar clientes GraphQL para React como Relay o Apollo, puede interactuar con React Components, lo que permite a los desarrolladores de aplicaciones para el usuario  tomar el control de sus modelos de datos y eliminar dependencias desagradables en el proceso. Según Diana, esto es "una gran victoria para la comunidad de desarrollo de front-end".

Cuándo usar GraphQL sobre REST

Por supuesto, GraphQL no es el único estilo de API que se utiliza en la actualidad. Un estudio de ProgrammableWeb de 2017 encontró que el 81% de las API eran diseños REST.

La encuesta para desarrolladores de 2019-2020 más reciente realizada por RapidAPI mostró signos de que están surgiendo otros estilos junto con REST. El estudio encontró que el 62.5% de los desarrolladores usan REST en producción, el 28.8% usa webhooks, el 6.4% usa GraphQL y el 3.4% usa gRPC.

Una encuesta para desarrolladores de 2019-2020 realizada por RapidAPI mostró signos de que están surgiendo otros estilos junto con REST.

Si bien parece que la gran mayoría de los casos de uso están perfectamente bien con REST, GraphQL puede tener su lugar para un subconjunto particular de proveedores de API. Entonces, ¿cuándo es mejor usar GraphQL sobre REST?

Devlin recomienda primero echar un vistazo crítico a su producto o servicio e ir con la herramienta adecuada para el trabajo correcto. “¿Cuáles son los objetivos comerciales? Cada herramienta tiene pros y contras, y GraphQL no es una excepción ”, dice Devlin. No todas las aplicaciones requerirán un formato que inicialmente estaba destinado a resolver los problemas de desarrollo de Facebook, señala Devlin.

Didier Micoud

Didier Micoud , arquitecto de soluciones de software, Expedia Group, Vrbo, aprecia la extensibilidad de GraphQL.

Didier también reconoce que tanto REST como GraphQL son relevantes para varios casos de uso. “GraphQL en sí mismo no es una fórmula mágica que resuelva todas las preocupaciones sobre la construcción de una API robusta”, dice Didier. "Para mí, se trata de la extensibilidad del contrato y, sobre todo, de cómo podemos componer funciones y capacidades como un único punto final de API".

Hemos comparado REST con GraphQL ampliamente en el blog, pero tendemos a centrarnos en los atributos técnicos. Diana señala que el costo de implementación es un punto práctico a considerar, suponiendo que una API GraphQL requiere una inversión más significativa.

“GraphQL tiene un costo inicial relativamente alto para ponerlo en funcionamiento”, dice Diana. Por otro lado, REST tiene una comunidad más establecida, con herramientas y mejores prácticas. No obstante, Diana cree que "[GraphQL] vale la pena correr el riesgo si anticipa varios clientes con diferentes casos de uso o si los requisitos del producto aún no se han desarrollado y necesita diseñar para tener flexibilidad en la capa de API".

Combinando GraphQL con otros entornos

Algunos desarrolladores pueden desear que GraphQL funcione junto con entornos preexistentes u otros estilos, como gRPC , REST u Odata . Cuando esto ocurre, GraphQL actúa esencialmente como una capa de abstracción al frente.

Un método es envolver un servicio existente en GraphQL . Devlin sugiere que GraphQL podría utilizarse como un punto de entrada a gRPC en un entorno de microservicios, o como fachada a un servicio RESTful más antiguo, o potencialmente como un contenedor para un servicio OData.

Didier ve de manera similar GraphQL como una forma útil de estandarizar la externalización de un conjunto de API en varios estilos de diseño. “Esta es una de las razones por las que [en Expedia Group] vamos a exponer nuestra API externa con GraphQL”, dice Didier. "Nuestro enfoque nos permite crear un esquema GraphQL ejecutable externo que se resuelve en una API nueva o preexistente sin tener en cuenta cómo se exponen".

Diana Suvorova

Para Diana Suvorova , la ingeniera de software en Uber, GraphQL y gRPC pueden vivir felices juntos.

Diana reconoce que GraphQL es flexible: la especificación deja espacio para aprovechar los backends con diferentes protocolos de comunicación e incluso componer otros servicios GraphQL. Diana siente que la elección de implementarlo dependerá del alcance del esquema y la estrategia de composición.

“La consideración principal antes de introducir una capa GraphQL en la infraestructura de back-end preexistente sería el alcance del esquema y la estrategia para componerlo”, dice Diana. Un esquema local se adaptará mejor a diseños livianos y estrechamente acoplados con mayor flexibilidad. El esquema compartido, por otro lado, "debe seguir de cerca el modelo de datos expuesto por los protocolos de aguas arriba", dice Diana.

En términos de detalles técnicos para crear una capa de abstracción GraphQL, Diana señala que hay matices con cada enfoque. Sin embargo, el proceso es bastante autónomo: "conversión de un IDL (por ejemplo, Protobuf) en otro (definiciones de tipo GraphQL) y asignación de consulta / mutación en tiempo de ejecución a solicitudes RPC o GET / POST".

Migración de REST a GraphQL

Algunos proveedores de API pueden ver los beneficios de GraphQL, pero están arraigados en un estilo de diseño anterior, como REST. Aunque hemos visto que es posible crear una capa de abstracción para tales servicios, esto podría no ser atractivo para los puristas, ya que introduce código heredado y dependencias adicionales. Entonces, ¿es posible que dichos servicios migren de REST a GraphQL?

Bueno, en primer lugar, Devlin acepta que GraphQL no es adecuado para todas las empresas . Entonces, la pregunta puede ser un punto discutible para muchos. La mayoría no quiere migrar una API REST existente o crear una API GraphQL desde cero. "En su lugar, usarían REST debido a su estabilidad y por haber sido probado en batalla mientras GraphQL todavía está en su etapa inicial", dice Devlin.

Dicho esto, todavía hay muchas instancias de GraphQL siendo utilizado en producción por grandes empresas. Todos nuestros panelistas destacan a Github , que cambió su API pública a una interfaz GraphQL bastante pronto. Nuestros panelistas también destacaron a Airbnb, quien ha sido un defensor vocal de GraphQL. Después de haber migrado gran parte de su API a GraphQL, Airbnb vio mejores tiempos de carga de la página y una mejor experiencia para los desarrolladores.

Otros adoptantes de GraphQL incluyen PayPal, Lyft, NBC, The New York Times, KLM, Airbnb, Yelp, Rakuten y NBC. Este repositorio de Github también enumera 30 API GraphQL oficiales, así como otros proxies API no oficiales y servicios GraphQL solo de demostración.

Para las empresas que quieran hacer el cambio, es probable que enfrenten obstáculos de adopción . Por ejemplo, Didier observa cómo los diferentes estilos de API a menudo se implementan en diferentes pilas. “Los servicios de tipo REST implementados en Java, Node o Kotlin pueden integrarse en un esquema ejecutable GraphQL, pero no siempre tiene sentido renovar todos y cada uno de ellos como API GraphQL”, dice Didier. “El empaquetado ligero de estos servicios existentes como
un esquema ejecutable GraphQL [de una manera] que pueda ser reutilizado” es un enfoque que Didier está siguiendo activamente.

Diana también interviene con problemas de migración logística, como su ruta de implementación, monitoreo del rendimiento, la necesidad de realizar pruebas A / B y la falta de administración de caché en el navegador.

“Un aspecto a destacar para la parte frontal de la migración es la administración de caché”, dice Diana. “Con las API REST, los clientes pueden confiar en el almacenamiento en caché de red en el navegador. Con GraphQL, ya no es una solución viable. Por eso, los ingenieros deben confiar en diferentes soluciones ".

El punto de Diana sobre las soluciones nos lleva a nuestra próxima sección sobre herramientas GraphQL bastante bien ...

Algunas herramientas geniales de GraphQL

Cuando entrevistamos al creador de GraphQL , Lee Byron, en 2018, enfatizó la necesidad de un mayor crecimiento en las herramientas GraphQL para llenar los vacíos. En los últimos años, ciertamente hemos visto muchas herramientas GraphQL ingresar al mercado para responder a esta llamada.

En el blog, hemos revisado Graphcool para el desarrollo de back-end, HyperGraphQL para la extensión de datos enlazados, GraphQL generadores de documentación , el GRANDstack marco de construcción, Hasura , marcos GraphQL como FlacheQL , y otras diez cubiertas soluciones GraphQL y extensiones aquí .

Todos nuestros panelistas recomendaron Graph i QL , el IDE oficial de GraphQL en el navegador, para interactuar con las llamadas a la API. Este entorno de zona de pruebas de código abierto puede mejorar significativamente la capacidad de aprendizaje de la API.

Para ayudar con el almacenamiento en caché, Diana recomienda el cliente Apollo GraphQL para su caché en memoria. “La implementación es bastante buena pero requiere un mantenimiento adicional, especialmente en el caso de mutaciones”, dice Diana. Devlin también recomienda Apollo.

Didier destaca GraphQL Playground de Prisma Labs . "Desde el punto de vista del desarrollador, la aplicación de escritorio Prisma Labs GraphQL Playground es imprescindible, especialmente cuando se manejan múltiples entornos". Para la documentación , Didier recomienda el complemento APIs.guru GraphQL Voyager para representar el esquema de una manera legible por humanos.

Por último, Diana recomienda Rejoiner , una biblioteca de Java que genera un esquema GraphQL unificado basado en microservicios gRPC. “Le permite iniciar un servicio GraphQL con un esfuerzo mínimo si su infraestructura de back-end está construida con Protobufs”, dice Diana.

Pensamientos finales

Una cosa es segura: GraphQL tiene exageración. La encuesta Rapid API mencionada anteriormente también encontró que el 37.5% de los desarrolladores habían oído hablar de GraphQL pero no lo estaban usando, el porcentaje más alto de conocimiento (sin uso de producción) de todas las categorías de tecnología encuestadas. Los evangelistas de GraphQL ciertamente han hecho su trabajo preliminar, y la mayoría de los desarrolladores de API ahora ven GraphQL como una opción confiable en su caja de herramientas.

En resumen, hemos descubierto que GraphQL es:

  • Interactivo : GraphQL es un esquema útil para clientes que utilizan desarrollo web front-end basado en React.
  • Utilizable : GraphQL mejora la experiencia del desarrollador mediante la unión de llamadas a la API a un solo punto final.
  • Extensible : es posible usar GraphQL como una capa de abstracción sobre los estilos existentes para mejorar la usabilidad del front-end y también simular una integración consistente que envuelve múltiples tipos de API.
  • Probado : GraphQL ahora tiene un historial en muchos entornos de producción .

Estos puntos, junto con el ecosistema de herramientas en expansión de GraphQL para ayudar a sortear problemas como la administración de caché, significan que hay una buena posibilidad de que GraphQL funcione para usted .

Sin embargo, por ahora, parece que GraphQL permanecerá archivado hasta que la configuración de nicho lo justifique. El legado probado y verdadero de REST, y su uso comprobado en el desarrollo de API escalables "en la escala de décadas" es una razón suficiente para que muchos se apeguen a la práctica estándar.

Nuestros panelistas reconocen que todavía estamos en una etapa temprana con GraphQL, por lo que será interesante ver cómo evolucionan las tasas de adopción en el futuro. Afortunadamente, las API nórdicas estarán aquí, cubriendo la economía de las API para informarlo.

Gracias a nuestros panelistas por compartir sus conocimientos. ¡Es un honor presentar sus ideas a nuestra comunidad de esta manera! En este artículo, presentamos las tres "D's de GraphQL":

  • Devlin Duldulao , consultora sénior, Inmeta
  • Didier Micoud , arquitecto de soluciones de software, Expedia Group, Vrbo
  • Diana Suvorova , ingeniera de software, Uber

Publicar un comentario

0 Comentarios