Adoptando GraphQL en una Empresa

Rate this content
Bookmark

FAQ

GraphQL es una tecnología que permite hacer consultas a una API de manera eficiente, solicitando solo los datos que se necesitan. PayPal decidió adoptarlo para manejar mejor la complejidad y el volumen de sus múltiples API REST, facilitando integraciones más limpias y eficientes.

Los desafíos incluyeron la integración con sistemas existentes basados en REST, la necesidad de formar a los equipos en esta nueva tecnología, y manejar la coexistencia de GraphQL con las APIs REST tradicionales.

Desde su implementación inicial, el uso de GraphQL en PayPal ha crecido significativamente. Ahora, más de 50 aplicaciones lo utilizan en producción, y la compañía también ofrece una API pública de GraphQL que funciona con Braintree.

GraphQL ha permitido una menor sobrecarga de datos, integración más sencilla entre diferentes servicios, y ha mejorado la colaboración entre los equipos de frontend y backend gracias a un esquema unificado.

PayPal utilizó GraphQL como una capa de orquestación sobre sus APIs REST existentes, permitiendo así una integración gradual y manteniendo la lógica de negocio existente mientras se aprovechaban los beneficios de GraphQL.

Shruti recomienda comenzar con una aplicación pequeña, convertir una API a la vez y establecer equipos que ayuden en la adopción de GraphQL dentro de la empresa, usando ejercicios internos para evaluar la adaptabilidad de GraphQL a la arquitectura de la empresa.

Shruti Kapoor
Shruti Kapoor
32 min
08 Dec, 2021

Comments

Sign in or register to post your comment.
Video Summary and Transcription
La charla de hoy trata sobre la adopción de GraphQL en una empresa. Se discuten los desafíos de usar APIs REST y los beneficios de GraphQL. La charla explora diferentes enfoques para adoptar GraphQL, incluyendo la coexistencia con APIs REST. Se enfatiza el poder de GraphQL y se brindan consejos para una adopción exitosa. En general, la charla destaca las ventajas de GraphQL en términos de eficiencia, colaboración y control sobre las APIs.
Available in English: Adopting GraphQL in an Enterprise

1. Introducción a la adopción de GraphQL en una empresa

Short description:

Hoy voy a hablar sobre la adopción de GraphQL en una empresa. Discutiremos las razones por las cuales GraphQL es una buena tecnología para una empresa, nuestra experiencia en la adopción de GraphQL en PayPal, los desafíos que enfrentamos, las mejores prácticas que adoptamos y cómo comenzar con GraphQL. Soy Shruti Kapoor, una ingeniera de software senior en PayPal. Síganme en Twitter en Shruti Kapoor08 o en Twitch en twitch.tv/ShrutiKapoor para sesiones de transmisión en vivo. Cuando comencé en PayPal, no tenía experiencia con GraphQL, pero decidimos usarlo como la capa frontend para una aplicación NodeJS que consume APIs REST. La aplicación de Checkout fue el primer equipo en adoptar GraphQL en PayPal, inspirando a otros a seguir. Desde entonces, el uso de GraphQL ha crecido significativamente con 50 aplicaciones en producción y una API pública de GraphQL impulsada por BrainTree. Brindamos soporte y capacitación para los equipos que adoptan GraphQL.

Hola a todos. Gracias por venir a mi charla. Hoy voy a hablar sobre la adopción de GraphQL en una empresa. Antes de comenzar, esto es lo que vamos a tratar. Vamos a hablar sobre por qué GraphQL puede ser una buena tecnología para una empresa. Nuestra historia de adopción de GraphQL en PayPal y las lecciones que aprendimos, los desafíos que tuvimos, algunas mejores prácticas que adoptamos y si estás interesado en comenzar con GraphQL, cómo puedes empezar.

Antes de comenzar mi charla, me presentaré. Mi nombre es Shruti Kapoor. Soy una ingeniera de software senior en PayPal. Puedes encontrarme en Twitter en Shruti Kapoor08 o en Twitch en twitch.tv/ShrutiKapoor donde comparto sesiones de transmisión en vivo trabajando en algo como una presentación como esta. Así que te invito a venir y trabajar en tus proyectos personales conmigo.

Cuando comenzamos a adoptar GraphQL en PayPal, cuando comencé en PayPal, en realidad nunca había trabajado con GraphQL antes. Pensaba que GraphQL era una tecnología utilizada para obtener datos, pero pensaba que estaba relacionada de alguna manera con Facebook, así que no tenía idea de cómo trabajar con GraphQL. Pensaba que estaba relacionada con GraphCMS y eso era todo lo que sabía. Así que cuando comencé en PayPal, mi función en el equipo era trabajar en un proyecto interno que era completamente nuevo y debíamos consumir casi cinco APIs internas. Todas estas eran APIs REST. Nuestra aplicación frontend debía ser una aplicación NodeJS, pero lo que usamos en el frontend de esa aplicación NodeJS dependía de nosotros, así que decidimos usar GraphQL como la capa frontend de esa aplicación NodeJS.

Por qué decidimos usar GraphQL, lo explicaré en un momento, pero cuando comencé con GraphQL en PayPal, no había muchas personas ni muchos equipos que estuvieran usando GraphQL. El equipo principal que estaba usando GraphQL era la aplicación de Checkout, que tal vez hayas visto cuando realizas el pago en PayPal. Esa fue en realidad la pionera en la adopción de GraphQL en PayPal. Abogaron por GraphQL y los beneficios de adoptar GraphQL dentro de PayPal e inspiraron al resto de la empresa a comenzar a adoptar GraphQL. En ese momento, en 2018, no teníamos mucho apoyo central. Inicialmente, los equipos comenzaron a adoptar GraphQL de manera lenta, pero era algo muy independiente y dependía del equipo mismo superar los desafíos. Incluso la comunidad estaba en etapas muy tempranas, pero desde entonces, mucho ha cambiado fuera de la comunidad y en PayPal mismo. Dentro de PayPal, en los últimos tres años, ahora hay 50 aplicaciones que utilizan GraphQL en producción. También tenemos una API pública de GraphQL que funciona con BrainTree. Y en nuestra comunidad interna de Slack, tenemos casi 500 miembros. Todo esto es para decir que GraphQL está ganando mucho impulso en PayPal y lo estamos utilizando ampliamente. Hemos construido herramientas internas para admitir GraphQL, especialmente las bibliotecas que teníamos en PayPal. Ahora brindamos soporte de infraestructura y capacitación para adoptar GraphQL a los equipos que están adoptando GraphQL, especialmente brindándoles algunas aplicaciones frontend y backend de muestra para que puedan comenzar fácilmente con GraphQL.

2. Desafíos de las API REST y la necesidad de GraphQL

Short description:

GraphQL se convirtió en el patrón predeterminado para construir la interfaz de usuario de las aplicaciones frontend. Nos enfrentamos a desafíos al obtener datos excesivos de las API REST, llamar a múltiples API para un campo y mantener la consistencia en la integración. La actualización de las API y lidiar con nombres de campo inconsistentes añadía complejidad. Necesitábamos una tecnología que proporcionara una experiencia uniforme y una integración sencilla. También eran importantes las analíticas detalladas y la degradación inteligente. La versión de las API planteaba desafíos y agregar más datos requería considerar cambios disruptivos y actualizaciones del cliente.

Y para cualquier aplicación frontend que esté construyendo una interfaz de usuario, GraphQL se ha convertido en un patrón predeterminado para adoptar, para colocarlo como la capa frontend de la interfaz de usuario. Nuestras razones para adoptar GraphQL en ese momento podrían explicarse al comprender cuáles eran nuestros desafíos en ese momento. Así que cuando estábamos pensando en adoptar una nueva tecnología o cuando estábamos pensando en una solución en realidad, estos eran algunos de los problemas que teníamos en ese momento.

Nuestro principal problema era que, y esto se refiere específicamente a nuestra empresa, que es una empresa con una gran cantidad de API REST, por lo que teníamos muchas API REST y nuestra aplicación frontend con la que estábamos trabajando debía comunicarse con cinco API REST diferentes. Lo que sucedía era que nuestra interfaz de usuario podía necesitar un campo, pero para obtener ese campo, teníamos que llamar a un punto final REST y ese punto final REST también podía estar sirviendo a muchas otras aplicaciones de interfaz de usuario. Entonces, lo que sucedía era que llamábamos a la API REST y obteníamos muchos datos excesivos y esos datos teníamos que descartarlos en el lado del cliente y solo usar ese campo. Así que uno de los problemas más grandes que enfrentábamos en ese momento era que obteníamos demasiados datos de las API REST y no los utilizábamos todos.

Y debido a que teníamos tantas API REST diferentes, también teníamos que averiguar qué API llamar para obtener la información que necesitábamos. Y eso a menudo implicaba que primero teníamos que autenticarnos en una API, luego teníamos que usar ese token para llamar a otra API, tal vez obtuviéramos el ID del usuario de esa información, de esa API, y luego usaríamos ese ID para tal vez llamar a su API de perfil y obtener su nombre y otra información. Entonces, básicamente lo que sucedía era que hacíamos múltiples viajes de ida y vuelta, usábamos un campo de una API y lo enviábamos a otra API. Y eso generaba mucha frustración porque estábamos llamando a muchas API diferentes en nuestras aplicaciones frontend.

También, debido a que teníamos API REST con muchas versiones, lo que sucedía era que lanzábamos una nueva versión y si teníamos que actualizar un campo o cambiarle el nombre, cualquier persona que estuviera integrada con la versión anterior ahora quedaba obsoleta. Y nos resultaba muy difícil proporcionar actualizaciones a estos clientes. No siempre era factible que los clientes actualizaran a nuestras últimas versiones. Entonces, lo que sucedía era que la mayoría de nuestros clientes seguían utilizando la versión anterior mientras publicábamos nuevas versiones de la API. Otro problema era que, debido a que teníamos API REST en todos los ámbitos, lo que podía suceder era que un campo se llamara de una manera en una API, como `username`, pero de otra manera en otra API, como `user` o `name`. Por lo tanto, la experiencia de integración en sí también era muy inconsistente. Como desarrolladores frontend, teníamos que averiguar cómo dar formato en el lado del cliente, incluso para llamar a la API misma y dar formato a nuestros datos antes de enviarlos al lado del servidor. Por lo tanto, la experiencia de integración en sí era bastante inconsistente. El candidato adecuado que buscábamos nos proporcionaría la capacidad de tener una experiencia uniforme para todas las API que íbamos a obtener en todos los ámbitos. Y otra cosa importante era la facilidad de integración en todos los ámbitos. Queríamos asegurarnos de que la API, la tecnología que usaríamos, no requeriría que un cliente, especialmente nuestras empresas hermanas, tuviera información previa sobre nuestras propias API. Por ejemplo, si nuestra empresa hermana, como Braintree, tuviera que integrarse con PayPal, no queríamos que Braintree conociera los entresijos de llamar a una API REST o llamar a una API en el lado de PayPal. Queríamos que tuvieran una interfaz sencilla con la que pudieran integrarse, algo con lo que estuvieran familiarizados, sin tener que preocuparse por lo que sucede detrás de escena. Otra cosa que queríamos era, porque estábamos lanzando actualizaciones y queríamos degradar campos de manera inteligente, queríamos asegurarnos de tener análisis detallados sobre qué campo se estaba utilizando en los puntos finales de GraphQL, o en nuestros puntos finales REST, o en nuestros puntos finales de API. Queríamos asegurarnos de que si estábamos lanzando actualizaciones, las estábamos haciendo de manera inteligente y teníamos instrumentación detrás de ellas. Otra cosa que notamos que estaba sucediendo en nuestros equipos era que nuestros desarrolladores frontend y backend a menudo tenían esta conversación. Los desarrolladores frontend decían que necesitábamos agregar más datos. Y una de las preguntas que se hacía era: ¿Deberíamos obtener versiones de API? Pero el problema con las versiones de API es que si introduces cambios disruptivos, ¿cuál es la mejor práctica para introducir un cambio disruptivo? Y si pasas de la versión 1 a la versión 2, ¿qué sucede con todos los clientes que aún no están integrados con la versión 2? No obtienen las actualizaciones todavía. Entonces, ¿cuál es la mejor solución allí? Otra alternativa es si necesitas solicitar más datos.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

De GraphQL Zero a GraphQL Hero con RedwoodJS
GraphQL Galaxy 2021GraphQL Galaxy 2021
32 min
De GraphQL Zero a GraphQL Hero con RedwoodJS
Top Content
Tom Pressenwurter introduces Redwood.js, a full stack app framework for building GraphQL APIs easily and maintainably. He demonstrates a Redwood.js application with a React-based front end and a Node.js API. Redwood.js offers a simplified folder structure and schema for organizing the application. It provides easy data manipulation and CRUD operations through GraphQL functions. Redwood.js allows for easy implementation of new queries and directives, including authentication and limiting access to data. It is a stable and production-ready framework that integrates well with other front-end technologies.
Estado Local y Caché del Servidor: Encontrando un Equilibrio
Vue.js London Live 2021Vue.js London Live 2021
24 min
Estado Local y Caché del Servidor: Encontrando un Equilibrio
Top Content
This Talk discusses handling local state in software development, particularly when dealing with asynchronous behavior and API requests. It explores the challenges of managing global state and the need for actions when handling server data. The Talk also highlights the issue of fetching data not in Vuex and the challenges of keeping data up-to-date in Vuex. It mentions alternative tools like Apollo Client and React Query for handling local state. The Talk concludes with a discussion on GitLab going public and the celebration that followed.
Baterías Incluidas Reimaginadas - El Resurgimiento de GraphQL Yoga
GraphQL Galaxy 2021GraphQL Galaxy 2021
33 min
Baterías Incluidas Reimaginadas - El Resurgimiento de GraphQL Yoga
Envelope is a powerful GraphQL plugin system that simplifies server development and allows for powerful plugin integration. It provides conformity for large corporations with multiple GraphQL servers and can be used with various frameworks. Envelope acts as the Babel of GraphQL, allowing the use of non-spec features. The Guild offers GraphQL Hive, a service similar to Apollo Studio, and encourages collaboration with other frameworks and languages.
Aplicaciones sólidas de React y GraphQL para personas con prisa
GraphQL Galaxy 2022GraphQL Galaxy 2022
29 min
Aplicaciones sólidas de React y GraphQL para personas con prisa
The Talk discusses the challenges and advancements in using GraphQL and React together. It introduces RedwoodJS, a framework that simplifies frontend-backend integration and provides features like code generation, scaffolding, and authentication. The Talk demonstrates how to set up a Redwood project, generate layouts and models, and perform CRUD operations. Redwood automates many GraphQL parts and provides an easy way for developers to get started with GraphQL. It also highlights the benefits of Redwood and suggests checking out RedwoodJS.com for more information.
Deja paso a los resolvers: un nuevo enfoque para la ejecución de GraphQL
GraphQL Galaxy 2022GraphQL Galaxy 2022
16 min
Deja paso a los resolvers: un nuevo enfoque para la ejecución de GraphQL
GraphQL has made a huge impact in the way we build client applications, websites, and mobile apps. Despite the dominance of resolvers, the GraphQL specification does not mandate their use. Introducing Graphast, a new project that compiles GraphQL operations into execution and output plans, providing advanced optimizations. In GraphFast, instead of resolvers, we have plan resolvers that deal with future data. Graphfast plan resolvers are short and efficient, supporting all features of modern GraphQL.
Tu Ritmo con GraphQL
GraphQL Galaxy 2022GraphQL Galaxy 2022
31 min
Tu Ritmo con GraphQL
The Talk discusses the value proposition of GraphQL and its ability to solve common pain points in API development. It highlights the importance of making informed decisions when choosing GraphQL clients, servers, and schema builders. The Talk also emphasizes the need to focus on the best developer experience in the present rather than seeking a perfect long-term solution. Additionally, it mentions the future of the Urkel GraphQL client and the reasons for dropping ReScript support. Overall, the Talk provides insights into the current state and future trends of GraphQL development.

Workshops on related topic

Construir con SvelteKit y GraphQL
GraphQL Galaxy 2021GraphQL Galaxy 2021
140 min
Construir con SvelteKit y GraphQL
Top Content
Featured WorkshopFree
Scott Spence
Scott Spence
¿Alguna vez has pensado en construir algo que no requiera mucho código de plantilla con un tamaño de paquete pequeño? En esta masterclass, Scott Spence irá desde el hola mundo hasta cubrir el enrutamiento y el uso de endpoints en SvelteKit. Configurarás una API de GraphQL en el backend y luego usarás consultas de GraphQL con SvelteKit para mostrar los datos de la API de GraphQL. Construirás un proyecto rápido y seguro que utiliza las características de SvelteKit, y luego lo desplegarás como un sitio completamente estático. Este curso es para los curiosos de Svelte que no han tenido una experiencia extensa con SvelteKit y quieren una comprensión más profunda de cómo usarlo en aplicaciones prácticas.

Tabla de contenidos:
- Inicio e introducción a Svelte
- Inicializar el proyecto frontend
- Recorrido por el proyecto esqueleto de SvelteKit
- Configurar el proyecto backend
- Consultar datos con GraphQL
- Recuperación de datos en el frontend con GraphQL
- Estilización
- Directivas de Svelte
- Enrutamiento en SvelteKit
- Endpoints en SvelteKit
- Despliegue en Netlify
- Navegación
- Mutaciones en GraphCMS
- Envío de mutaciones GraphQL a través de SvelteKit
- Preguntas y respuestas
Construye Aplicaciones Modernas Utilizando GraphQL y Javascript
Node Congress 2024Node Congress 2024
152 min
Construye Aplicaciones Modernas Utilizando GraphQL y Javascript
Featured Workshop
Emanuel Scirlet
Miguel Henriques
2 authors
Ven y aprende cómo puedes potenciar tus aplicaciones modernas y seguras utilizando GraphQL y Javascript. En este masterclass construiremos una API de GraphQL y demostraremos los beneficios del lenguaje de consulta para APIs y los casos de uso para los que es adecuado. Se requiere conocimiento básico de Javascript.
Seguridad de tipo de extremo a extremo con React, GraphQL y Prisma
React Advanced 2022React Advanced 2022
95 min
Seguridad de tipo de extremo a extremo con React, GraphQL y Prisma
Featured WorkshopFree
Sabin Adams
Sabin Adams
En este masterclass, obtendrás una visión de primera mano de lo que es la seguridad de tipo de extremo a extremo y por qué es importante. Para lograr esto, construirás una API de GraphQL utilizando herramientas modernas y relevantes que serán consumidas por un cliente de React.
Prerrequisitos: - Node.js instalado en tu máquina (12.2.X / 14.X)- Se recomienda (pero no es obligatorio) utilizar VS Code para las tareas prácticas- Un IDE instalado (se recomienda VSCode)- (Bueno tener) *Un conocimiento básico de Node.js, React y TypeScript
GraphQL para Desarrolladores de React
GraphQL Galaxy 2022GraphQL Galaxy 2022
112 min
GraphQL para Desarrolladores de React
Featured Workshop
Roy Derks
Roy Derks
Hay muchas ventajas en utilizar GraphQL como fuente de datos para el desarrollo frontend, en comparación con las API REST. Nosotros, los desarrolladores, por ejemplo, necesitamos escribir mucho código imperativo para recuperar datos y mostrarlos en nuestras aplicaciones y manejar el estado. Con GraphQL, no solo puedes reducir la cantidad de código necesario para la obtención de datos y la gestión del estado, sino que también obtendrás una mayor flexibilidad, mejor rendimiento y, sobre todo, una mejor experiencia de desarrollo. En este masterclass aprenderás cómo GraphQL puede mejorar tu trabajo como desarrollador frontend y cómo manejar GraphQL en tu aplicación frontend de React.
Construye una aplicación WordPress sin cabeza con Next.js y WPGraphQL
React Summit 2022React Summit 2022
173 min
Construye una aplicación WordPress sin cabeza con Next.js y WPGraphQL
Top Content
WorkshopFree
Kellen Mace
Kellen Mace
En esta masterclass, aprenderás cómo construir una aplicación Next.js que utiliza Apollo Client para obtener datos de un backend de WordPress sin cabeza y usarlo para renderizar las páginas de tu aplicación. Aprenderás cuándo debes considerar una arquitectura de WordPress sin cabeza, cómo convertir un backend de WordPress en un servidor GraphQL, cómo componer consultas usando el IDE GraphiQL, cómo colocar fragmentos GraphQL con tus componentes, y más.
Modelado de Bases de Datos Relacionales para GraphQL
GraphQL Galaxy 2020GraphQL Galaxy 2020
106 min
Modelado de Bases de Datos Relacionales para GraphQL
Top Content
WorkshopFree
Adron Hall
Adron Hall
En esta masterclass profundizaremos en el modelado de datos. Comenzaremos con una discusión sobre varios tipos de bases de datos y cómo se mapean a GraphQL. Una vez que se haya establecido esa base, el enfoque se desplazará a tipos específicos de bases de datos y cómo construir modelos de datos que funcionen mejor para GraphQL en varios escenarios.
Índice de contenidosParte 1 - Hora 1      a. Modelado de Datos de Bases de Datos Relacionales      b. Comparando Bases de Datos Relacionales y NoSQL      c. GraphQL con la Base de Datos en menteParte 2 - Hora 2      a. Diseño de Modelos de Datos Relacionales      b. Relación, Construcción de Tablas Multijoin      c. Complejidades de Consulta de Modelado de Datos Relacionales y GraphQL
Prerrequisitos      a. Herramienta de modelado de datos. El formador utilizará dbdiagram      b. Postgres, aunque no es necesario instalar esto localmente, ya que estaré utilizando una imagen de Dicker de Postgres, de Docker Hub para todos los ejemplos      c. Hasura