PayPal adopta GraphQL: aumenta la productividad de los desarrolladores

PayPal publicó recientemente una publicación de blog que describe la adopción de GraphQL por parte de PayPal en los últimos años. Comenzó con una sola aplicación Checkout en 2018 y ascendió a la creación de una API federada unificada con la federación GraphQL. La adopción de GraphQL en toda la organización promovió una mayor productividad de los desarrolladores y un envío de aplicaciones más rápido.

Shruti Kapoor, ingeniero de software senior de PayPal, describe el estado actual de GraphQL en PayPal:

Hoy en día, GraphQL está siendo utilizado por varias aplicaciones de producción en PayPal. Ahora es un patrón predeterminado para usar GraphQL para crear nuevas aplicaciones de interfaz de usuario. Muchas aplicaciones existentes están en proceso de migración a GraphQL. GraphQL está siendo utilizado por plataformas comunes como Identity, Payments y Compliance para brindar una experiencia uniforme en todos los productos de PayPal. Nuestros desarrolladores de API han comenzado a utilizar GraphQL para crear API. Braintree lanzó su API GraphQL pública.

A lo largo de los años, PayPal creó herramientas y estándares para respaldar la adopción de GraphQL en la organización. Estableció un estándar GraphQL para convenciones de nomenclatura, tipos GraphQL, estándares de encabezado, estándares de directivas y técnicas de manejo de errores. Sus herramientas incluyen bibliotecas compartidas, plantillas, muestras y recursos de aprendizaje. Además, PayPal alimentó una comunidad GraphQL interna a través de un canal dedicado de Slack.

PayPal ahora está construyendo una puerta de enlace de gráficos única y uniforme utilizando Apollo Federation. Netflix también implementó previamente una solución similar. Como parte de este esfuerzo, algunos equipos de desarrollo de backend en PayPal decidieron utilizar GraphQL para exponer su API debido a las ventajas de productividad percibidas. Netflix también comparte esta tendencia, donde los ingenieros adoptaron los microservicios GraphQL para el desarrollo rápido de aplicaciones.

Kapoor informa que PayPal ve muchas ventajas con el uso de GraphQL. Un beneficio principal es la productividad del desarrollador. Herramientas como GraphiQL y Playground ayudan a aumentar la productividad al permitir a los desarrolladores jugar con la API y explorar la documentación. El aumento de la productividad, a su vez, ayuda a realizar envíos más rápidamente. Kapoor elabora:

Pudimos deshacernos de una gran cantidad de plomería que dificultaba proporcionar actualizaciones de funciones y mantener la paridad de funciones. Antes, teníamos que enviar un SDK en todos los idiomas en los que trabajaba nuestro comerciante. Ahora, podemos proporcionar un único punto final GraphQL con el que los comerciantes pueden integrarse sin importar el idioma que utilicen.

Al mismo tiempo, PayPal se enfrentó a desafíos con la adopción de GraphQL. Un desafío es la falta de estandarización en GraphQL, “que conduce a esfuerzos duplicados entre los equipos, diferentes formas de manejar y hacer surgir errores, y desviaciones del método estándar de manejo de la autenticación”. Otro desafío es la necesidad de adaptar las herramientas internas creadas para REST para manejar las consultas GraphQL de manera adecuada.

PayPal comenzó a usar GraphQL cuando creó su aplicación Checkout con GraphQL. El equipo de desarrollo de la aplicación vio las ventajas de usar GraphQL y las difundió a la organización.

De manera similar, Kapoor recomienda a otras organizaciones que deseen comenzar a adoptar GraphQL que primero creen una aplicación de demostración “que pueda demostrar cómo GraphQL puede adaptarse a la arquitectura de su empresa”. Luego, recomienda transferir el conocimiento a otros, destacando los beneficios de GraphQL. Kapoor también sugiere configurar su empresa para el éxito mediante la creación de un grupo de trabajo para ayudar a establecer estándares y proporcionar orientación y recursos de aprendizaje.

GraphQL es un lenguaje de manipulación y consulta de datos de código abierto para API y un tiempo de ejecución para completar consultas con datos existentes. GraphQL fue desarrollado internamente por Facebook en 2012 antes de ser lanzado públicamente en 2015. Ha ido ganando terreno en los últimos años como una alternativa a las API REST más tradicionales. Su premisa central es permitir una mayor flexibilidad para los desarrolladores de frontend, quienes pueden consultar el conjunto de datos exacto que necesitan para una pantalla en particular en una sola operación.