Video Summary and Transcription
Construir un servidor GraphQL escalable puede ser desafiante. Hay múltiples razones para construir un servidor GraphQL, como optimizar las solicitudes del cliente y envolver microservicios. El servidor GraphQL basado en SDL te permite escribir tu esquema por separado de tus resolvers, dándote un control total. Puedes crear automáticamente una API GraphQL a partir de un esquema, simplificando el proceso y eliminando la necesidad de implementaciones manuales. El esquema puede vincular fuentes de datos y APIs de terceros, permitiendo una integración y personalización sencillas.
1. Introducción al servidor GraphQL
Construir un servidor GraphQL escalable puede ser desafiante. Hay múltiples razones para construir un servidor GraphQL, como optimizar las solicitudes del cliente y envolver microservicios. Hay diferentes formas y patrones para crear un servidor GraphQL, siendo el enfoque de código primero uno de ellos.
Hola a todos. Mi nombre es Roy y bienvenidos a mi charla, cuando no crear un servidor GraphQL. ¿Para quién es esto? Es muy fácil construir un servidor GraphQL, pero es realmente difícil hacer un servidor GraphQL escalable. La escalabilidad a veces te golpeará en el trasero cuando empieces a escribir un servidor GraphQL. Hay muchas bibliotecas para construir una API GraphQL y hay muchos patrones diferentes para construir una API GraphQL y los exploraremos todos en esta charla. También mostraremos una forma de crear un servidor GraphQL automáticamente basado en tus backends existentes.
Un poco sobre mí. Mi nombre es Roy. Soy ingeniero de software y orador público. Puedes encontrarme en Twitter con el nombre de usuario, AdGetHackTeam y he escrito muchos libros sobre React y también GraphQL, el último es full stack GraphQL.
Antes de sumergirnos en cómo construir un servidor GraphQL, también echemos un vistazo a por qué quieres construir un servidor GraphQL en primer lugar. Hay muchas razones para construir un servidor GraphQL y creo que la primera es optimizar las solicitudes del cliente. Tienes un cliente que consume una API, pero de alguna manera tu API REST o tal vez diferentes tipos de llamadas API no son tan eficientes. Quieres tener esa eficiencia y también quieres dar cierta autonomía al usuario. Entonces, GraphQL no solo está ahí para resolver el problema de M más uno donde podrías estar obteniendo o enviando demasiados GraphQL, demasiados puntos finales REST, sino que GraphQL también le da autonomía al usuario. Como cliente, tienes más control sobre los tipos, sobre los datos que fluyen en tu aplicación. Optimizar las solicitudes del cliente no es la única forma o la única razón para crear un servidor GraphQL. También podría ser para envolver tus microservicios, por lo que GraphQL es perfectamente adecuado para unir múltiples microservicios que pueden ser microservicios GraphQL, pero también microservicios construidos con otra tecnología. Y también es muy bueno para envolver servicios heredados con esa capa de datos GraphQL. Hay múltiples razones para construir un servidor GraphQL y estas son dos razones perfectamente válidas para construir uno.
Hay múltiples formas de crear un servidor GraphQL. Como mencioné al principio, no hay una forma correcta. Hay muchas formas diferentes y muchos patrones diferentes y bibliotecas que te ayudarán con eso. El primer patrón que tenemos aquí es un servidor GraphQL de código primero. Con un servidor GraphQL de código primero, siempre comienzas escribiendo resolvers. Y estos resolvers generalmente usan clases o si estás usando TypeScript, probablemente usen un sistema de tipos de TypeScript para definir los resultados que devuelven estos resolvers. Y en función de esos resultados, un servidor GraphQL de código primero generará un esquema basado en los resolvers. Y luego, por supuesto, creará un servidor para ti. Y hay una gran desventaja, puedes hacer todo programáticamente. Pero la desventaja es que es muy difícil tener una separación de preocupaciones.
2. Creación de una API GraphQL a partir de un esquema
El servidor GraphQL SDL first te permite escribir tu esquema por separado de tus resolvers, dándote control total. Sin embargo, este enfoque requiere escribir tanto resolvers como esquemas, lo cual puede llevar tiempo. Como alternativa, puedes crear automáticamente una API GraphQL a partir de un esquema utilizando el paso 10. Esto simplifica el proceso al generar resolvers en la nube y conectarse a diversas fuentes de datos, como bases de datos, APIs REST u otras APIs GraphQL. La API GraphQL sin servidor resultante maneja la escalabilidad y el rendimiento, eliminando la necesidad de implementaciones manuales.
Literalmente, no hay separación de preocupaciones, porque tu esquema se crea a partir de resolvers, y los resolvers son el único código que tienes. Por lo tanto, no tienes control sobre cómo se verá el esquema en última instancia. Para solucionar esto, existe el servidor SDL first GraphQL, también conocido como servidor schema first GraphQL.
La idea aquí es que escribas tu esquema, ya sea en SDL de GraphQL, de ahí el servidor SDL first, o puedes hacerlo con algunas bibliotecas externas. Existe la biblioteca GraphQL JS, que te permite escribir servidores schema first GraphQL, pero no utilizando SDL, sino sus propios métodos. Pero la idea es simple, creas tu esquema, creas tus resolvers basados en este esquema y esto creará un servidor para ti. Así que tienes una separación de preocupaciones muy buena, tienes tus esquemas separados de tus resolvers y tienes control total sobre todo. Pero esto, por supuesto, tiene las principales desventajas y escribir tanto resolvers como esquemas es mucho trabajo.
Afortunadamente, hay una solución. También puedes crear automáticamente tu API GraphQL a partir de un esquema. Y esto se puede hacer con el paso 10, como ejemplo. Veamos cómo funciona. Crear una API de gráficos con el paso 10 es muy sencillo. Simplemente escribes tu esquema. Puedes definir todos los tipos que tienes. Y estos tipos estarán vinculados a una fuente de datos de la que provienen. Y esto puede ser cualquier backend, como veremos más adelante. Y nuestra CLI generará automáticamente resolvers en el servidor para ti, directamente en la nube. Así que se implementará sin servidor, no tienes que preocuparte por ninguna implementación o por la escalabilidad de tus resolvers. Puedes conectar cualquier fuente de datos. Pueden ser bases de datos, ya sea SQL o Postgres. Pueden ser APIs REST, pueden ser APIs GraphQL, puedes conectar literalmente cualquier otra fuente de datos. Y luego, en función de esta fuente de datos, se creará una API GraphQL completamente sin servidor y de alto rendimiento para ti. Ya no tenemos que preocuparnos por la escalabilidad, el rendimiento o las implementaciones, todo se hará por ti. Y esto utiliza solo el lenguaje de diseño de esquemas de GraphQL. Aquí tienes dos ejemplos para MySQL Postgres a la izquierda y REST a la derecha. Como puedes ver, se utilizan directivas personalizadas para vincularse a la fuente de datos. Así que desde tu esquema, utilizando solo el lenguaje de diseño de esquemas de GraphQL, puedes crear conexiones con cualquier backend o cualquier fuente de datos. Además de Postgres y REST, también puedes usar cualquier otra API GraphQL como fuente de datos, como veremos en este ejemplo. Lo que tenemos aquí es un esquema.
3. Vinculación de fuentes de datos y APIs de terceros
El esquema vinculará las fuentes de datos por ti y creará un servidor en la nube. Se pueden agregar tipos adicionales como el idioma y vincularlos a los países. Se utilizará una directiva personalizada para conectar la información del idioma del país. La última versión del esquema siempre está disponible en los pasos. También se pueden integrar APIs de terceros y SaaS utilizando Step Send GraphQL Studio, una ID interactiva en tu navegador. Crea tu propia API seleccionando esquemas, ejecutando consultas e implementándola en la nube.
Y en el esquema, estaremos vinculando las data fuentes de datos por ti. Como puedes ver, simplemente puedes ejecutar step send start. Esto creará automáticamente un servidor para nosotros. Por lo tanto, se implementará en step send, lo que significa que se implementará en la cloud y luego estará disponible un punto de conexión.
Y luego, por supuesto, también podemos agregar más tipos aquí, como un idioma. Y este idioma puede estar vinculado al país. Entonces un país puede tener un idioma. Para esto, utilizaremos otra directiva personalizada y la vincularemos a una consulta existente. Entonces, para obtener el idioma del país, también se utilizará el IPL que conecta la información de un país. Y tan pronto como comencemos a guardar esto, se implementará automáticamente nuevamente. Por lo tanto, siempre tendrás la última versión de tu esquema en los pasos.
Y también puedes hacer esto con APIs de terceros o SaaS. Hace poco lanzamos un nuevo producto llamado Step Send GraphQL Studio. Puedes encontrarlo en graphql.stepsend.com. Y esto es una ID interactiva directamente en tu navegador donde puedes jugar con APIs de terceros, como step.to GitHub o Twitter, puedes vincularlos todos juntos, ya sea por separado o encontrando algunas combinaciones que hemos hecho para ti. Y directamente desde el navegador, puedes crear tu propia API seleccionando algunos esquemas, ejecutando algunas consultas, e implementándola también en la cloud. Entonces, si escaneas este código QR o vas a graphql.stepsend.com, ya puedes encontrar esto ahí mismo para ti.
Eso es principalmente todo. Tuvimos poco tiempo para cubrir todo. Mi nombre es Roy. Puedes encontrarme en Twitter como Edgate Hack Team. Puedes encontrar Stepsend en stepsend.com. Y también puedes encontrar nuestro producto GraphQL Studio en graphql.stepsend.com. Gracias, y espero verte por aquí.
Comments