Entonces, tus API de GraphQL y las API REST coexisten. La API REST es simplemente tu sistema heredado, y luego la API de GraphQL es donde construyes todas tus nuevas tecnologías, tu nueva lógica empresarial. Así que ambas conviven juntas.
Para nosotros, al adoptar GraphQL, teníamos algunas opciones diferentes para integrar GraphQL, y aquí están algunas de ellas. Pensamos que podríamos comenzar convirtiendo nuestras API existentes en GraphQL y hacerlo paso a paso, un punto final a la vez. Otro enfoque que consideramos fue convertir todo lo nuevo que estábamos construyendo en API de GraphQL, por lo que construiríamos estas API como entidades independientes, lo cual fue especialmente útil para aplicaciones que alimentarían la interfaz de usuario, como las capas de interfaz de usuario. Algunas cosas que teníamos en mente antes de integrar GraphQL eran quién sería el cliente que utilizaría la API y si estarían dispuestos a llamar a GraphQL. Por ejemplo, si era un cliente externo o un cliente, y sabíamos que no estarían dispuestos a llamar a GraphQL, tal vez introduciríamos GraphQL en un lugar diferente. Pero si era una aplicación de frontend y la aplicación de frontend estaría dispuesta a llamar a GraphQL, entonces sería un buen candidato para introducir una API de GraphQL. Otra cosa que consideramos fue cuántas API aguas abajo estábamos llamando, y esto fue especialmente útil porque estábamos hablando de obtener cargas más pequeñas, tener una experiencia consistente y análisis detallados. Si tenemos múltiples API diferentes que vamos a llamar, entonces sería un buen candidato para crear una capa de GraphQL. Pero si solo hay una API REST que vamos a llamar, no es realmente una buena aplicación de GraphQL porque entonces estaríamos duplicando todo el trabajo que se está realizando en la capa REST y duplicando el esfuerzo. Otra cosa que teníamos en mente fue el impacto empresarial y el lado empresarial de la aplicación, es decir, a quién sirve esta aplicación, quiénes son las partes interesadas, cuál es el marco de tiempo, cuánto tiempo podemos tomar para convertir esta aplicación en una capa de GraphQL o en una aplicación de GraphQL. Pensamos que primero comenzaríamos con una primera aplicación y convertiríamos una primera aplicación, como esta aplicación de demostración, en una aplicación de GraphQL, por lo que comenzamos con la herramienta en la que estaba trabajando, que en realidad era una nueva herramienta interna que estábamos construyendo, nuestras partes interesadas eran clientes internos, equipos internos en realidad, representantes de servicio al cliente, estábamos llamando a cinco API diferentes aguas abajo y la aplicación de frontend, que era mi equipo, estaba muy dispuesta a integrarse con GraphQL, por lo que se convirtió en un buen candidato para experimentar con GraphQL. Nuestro objetivo para esta aplicación era que fuera rápida y liviana, y básicamente eso significaba que no deberíamos enviar ningún dato innecesario, por lo que GraphQL fue un buen candidato allí y no queríamos agregar bibliotecas que no necesitábamos, bibliotecas de terceros que no necesitábamos, por lo que cuando introdujimos GraphQL, notamos que realmente no necesitamos mucho manejo de estado, por lo que pudimos deshacernos de Redux y simplemente usar el estado de React con la ayuda de la caché de Apollo para deshacernos de nuestras soluciones de manejo de estado. Entonces, básicamente, terminamos enviando menos datos y usando menos bibliotecas con la ayuda de GraphQL. Y para esa lógica empresarial, nosotros, el equipo que poseía una de las API REST backend, terminamos poniendo toda nuestra lógica empresarial pesada en nuestra propia API REST backend. Teníamos nuestra capa de orquestación de GraphQL como una especie de capa de proxy simple entre la aplicación de frontend y nuestra capa de lógica empresarial que era la API REST. Para la autenticación, utilizamos las API REST existentes que existen en Paypal en sí, por lo que era nuestra infraestructura existente, y luego el resto de las API REST aguas abajo las mantuvimos en la API misma, no las tocamos. Entonces, básicamente, nuestra capa de orquestación de GraphQL era una capa de orquestación simple y delgada, fue realmente genial verlo porque aún podíamos aprovechar todos los beneficios de GraphQL y descubrimos que GraphQL funciona muy bien como una capa de orquestación.
Entonces, nuestra arquitectura se veía así. Teníamos la capa de GraphQL que era la primera capa con la que la interfaz de usuario hablaría, y esa era la única capa con la que la interfaz de usuario hablaría. Y luego, la capa de GraphQL se encargaría de determinar cuándo llamar a la capa de autenticación, cuándo llamar a análisis, cuándo llamar a la API REST. Entonces, GraphQL hacía este trabajo de actuar como una fachada entre todas las diferentes API REST que teníamos en nuestra aplicación con las que se suponía que la aplicación debía comunicarse. Básicamente, lo que aprendimos con nuestra primera aplicación es que es realmente genial envolver una API REST con la API de GraphQL y crear nuestra capa de GraphQL como una capa de orquestación. Y el cliente aún puede aprovechar los beneficios de GraphQL, incluso sin tener que cambiar nada aguas abajo. Y eso fue realmente increíble de ver. Y otra cosa fue que, como también poseíamos la API REST backend, nuestros desarrolladores backend no tuvieron que cambiar la forma en que estaban trabajando. Fue realmente genial porque eran independientes y podían trabajar de la manera que querían, lo cual fue increíble. Y acercó a nuestros desarrolladores de frontend y backend porque establecimos un esquema y teníamos un contrato para seguir. Todos estaban hablando entre sí y todos estaban muy contentos porque teníamos colaboración en equipo. Terminamos creando una interfaz de GraphQL para orquestar esa nueva API REST, y pudimos entregar solo los datos que necesitábamos y facilitar la evolución de la API REST con el tiempo.
Comments