Diseño de esquema GraphQL a prueba de futuro

Rate this content
Bookmark
Slides

En esta charla, cubriremos las mejores prácticas de evolución de esquemas, los errores comunes al extender un esquema GraphQL existente y los patrones para monitorear de manera segura el uso y finalmente eliminar los campos de GraphQL obsoletos con el tiempo. El esquema GraphQL de última generación no necesita versionado, ya que solo devuelve los datos que son solicitados explícitamente por un cliente. En teoría, las nuevas capacidades y tipos agregados al esquema GraphQL solo están disponibles cuando el cliente actualiza sus conjuntos de selección de operaciones. Sin embargo, en la realidad, alterar y extender un esquema GraphQL podría romper fácilmente los clientes existentes dependiendo de cómo se haya implementado el cambio, especialmente al usar tipos de enumeración, interfaz y unión.

FAQ

GraphQL Yoga es un servidor GraphQL que originalmente fue creado por Prisma para simplificar el uso de GraphQL. Ha evolucionado desde una versión inicial más simple hasta la versión 3, la cual incluye mejoras significativas como la facilidad de uso, configuración predeterminada para producción y compatibilidad con diversos entornos de JavaScript.

The Guild es un grupo de desarrolladores que trabajan en proyectos de código abierto, incluido GraphQL. Su misión es trabajar con clientes para resolver problemas y luego compartir esas soluciones con la comunidad global a través del código abierto. Han adoptado y mantenido GraphQL Yoga, desarrollando nuevas versiones y funcionalidades.

La versión 3 de GraphQL Yoga incluye varias mejoras como una configuración más fácil para comenzar, integración con cualquier stack de JavaScript, ocultamiento de errores por defecto, validación y análisis mejorados, y soporte ampliado para suscripciones y manejo de operaciones de GraphQL.

The Guild ofrece diversas herramientas como el generador de código para GraphQL, GraphQL mash para convertir datos en SDKs, el inspector de GraphQL para validación de esquema, GraphQL Hive para registro y análisis de esquemas, y otras herramientas para facilitar el desarrollo y mantenimiento de aplicaciones GraphQL.

GraphQL Yoga versión 3 ha sido diseñada para adaptarse a cualquier entorno de JavaScript, incluyendo Node.js, Deno, Cloudflare Workers, y otros, gracias a su compatibilidad con el modelo de solicitud y respuesta de la API Fetch, facilitando así su integración y extensibilidad en diversos entornos de ejecución.

GraphQL Yoga ofrece varios beneficios para entornos de producción, como configuración predeterminada que incluye ocultamiento de errores, validación eficiente, caching de análisis, comprobaciones de salud, y soporte para Cross Origin Resource Sharing (CORS), asegurando así una implementación segura y optimizada.

Laurin Quast
Laurin Quast
38 min
08 Dec, 2022

Comments

Sign in or register to post your comment.

Video Summary and Transcription

La charla de hoy trata sobre GraphQL Yoga versión 3, su evolución, mejoras y características. Yoga versión 3 es fácil de comenzar, listo para producción por defecto y se adapta a cualquier pila existente. Ofrece mejoras para GraphQL 2, suscripciones más simples y una potente función de flujo de diferimiento. Yoga tiene como objetivo facilitar la implementación en producción con enmascaramiento de errores, validación y almacenamiento en caché del analizador, verificaciones de salud e integración con entornos de ejecución de JavaScript. La charla también destaca la capacidad de extensión de Yoga a través de complementos y su naturaleza probada en producción.

1. Introducción a GraphQL Yoga Versión 3

Short description:

Hoy vamos a hablar sobre cómo construir excelentes experiencias de servidor GraphQL con GraphQL Yoga versión 3. Soy Loren, un desarrollador de código abierto en The Guild. The Guild es un grupo de desarrolladores que resuelven problemas de clientes y contribuyen al código abierto. Tenemos proyectos destacados como generador de código, GraphQL mash, inspector de GraphQL, GraphQL Hive, herramientas de GraphQL y GraphQL scholars. Hoy nos centraremos en GraphQL Yoga versión 3 y su evolución desde la creación de Prisma hasta la participación de The Guild.

Hola a todos. Hoy vamos a hablar sobre cómo construir excelentes experiencias de servidor GraphQL con GraphQL Yoga versión 3.

En primer lugar, soy Loren y soy un desarrollador de código abierto en The Guild. Puedes encontrarme en Twitter y GitHub, donde principalmente publico sobre desarrollo de código abierto.

Antes de comenzar con la charla en sí, hablemos un poco sobre The Guild. Somos un grupo de desarrolladores que hemos estado trabajando en código abierto desde hace mucho tiempo y nos reunimos para trabajar en proyectos de clientes. Básicamente, trabajamos con los clientes para resolver sus problemas y luego compartimos esas soluciones con el mundo a través del código abierto.

Aquí tienes un resumen breve de algunos de nuestros proyectos más destacados en este momento. Tenemos el generador de código, que es una herramienta para generar código y definiciones de tipos para cualquier lenguaje en tu servidor GraphQL existente. También tenemos GraphQL mash, que es una biblioteca para convertir cualquier fuente de datos en un SDK o gateway GraphQL. Tenemos el inspector de GraphQL, que es una herramienta de validación de esquema y detección de cambios para el flujo de CI/CD. También tenemos GraphQL Hive, que es un registro de esquema y plataforma de análisis para equipos. Está disponible como una versión autohospedada, pero también como una versión SaaS. Luego tenemos GraphQL tools, que es una utilidad para todo tipo de herramientas de esquema y servidor GraphQL que puedas necesitar. Y también muy popular es GraphQL scholars, que es una biblioteca de validación de esquema y tipos de datos para GraphQL GS. Eso es solo una pequeña muestra de todo lo que tenemos. Puedes encontrar más información en guild.dev. Pero hoy vamos a hablar sobre GraphQL Yoga versión 3.

Antes de comenzar, déjame darte una breve descripción de lo que ha sucedido en el pasado. Cómo Yoga ha evolucionado y cómo hemos llegado hasta hoy. Intentaré ser breve. En algún momento del pasado, Yoga fue creado por Prisma y la razón de eso fue que en ese momento todas las soluciones de servidor GraphQL disponibles eran demasiado complicadas. Para las personas nuevas que comenzaban en el espacio de GraphQL, les resultaba difícil empezar realmente con GraphQL. Así que Prisma tomó el servidor Apollo existente, lo envolvió en otra capa y de ahí nació Yoga. Poco después, la comunidad vio este servidor GraphQL Yoga y, por razones obvias, facilidad de uso y baterías incluidas, comenzaron a adoptarlo. Luego, algún tiempo después, Prisma se alejó de GraphQL. Introdujeron su propio SDL, abandonaron GraphQL y, inevitablemente, GraphQL Yoga quedó sin mantenimiento durante mucho tiempo. Se acumularon muchos problemas en GitHub y otras discusiones. Ahí es cuando entró en escena The Guild.

2. Evolución de GraphQL Yoga Versión 3

Short description:

El año pasado adoptamos Yoga y comenzamos a trabajar en él. Lanzamos Yoga versión 2, seguida de GraphQL Yoga versión 3. Los puntos clave de GraphQL Yoga versión 3 fueron: fácil de comenzar, listo para producción por defecto, se adapta a cualquier stack existente, oculta la complejidad innecesaria, proporciona soluciones para problemas comunes y permite a los individuos resolver necesidades específicas con un potente sistema de complementos. Configurar un servidor GraphQL con Yoga es pan comido y obtienes un servidor GraphQL completo con todas las últimas características.

Así que el año pasado nos acercamos al equipo de Prisma y les preguntamos cuál era su plan para Yoga y si deberíamos ayudarlos. Al final, adoptamos Yoga, nos transfirieron el repositorio y luego comenzamos a trabajar en él.

El primer hito que teníamos en mente era Yoga versión 2, y básicamente la misión detrás de Yoga versión 2 era devolver la biblioteca de Yoga a un estado en el que estuviera mantenida, se abordaran todos los problemas y comentarios existentes, se actualizaran las dependencias críticas, y sí, eso sucedió. Hace aproximadamente medio año, en junio, finalmente lanzamos Yoga versión 2. Y luego, hace apenas un mes, lanzamos GraphQL Yoga versión 3.

Pero, ¿qué sucedió desde GraphQL Yoga versión 2 hasta GraphQL Yoga versión 3? Eso es de lo que voy a hablar ahora. Así que en realidad, en junio, cuando acabábamos de lanzar GraphQL Yoga versión 2, todos los miembros de The Guild se reunieron en San Francisco y nos sentamos juntos a brainstormear sobre la visión del servidor GraphQL que todos teníamos. Cada uno tenía alguna visión, pero cada individuo en The Guild tenía diferentes necesidades, provenientes de diferentes entornos y trabajando en diferentes proyectos de clientes.

Después de muchas discusiones intensas, llegamos a los siguientes puntos clave que son valiosos. En primer lugar, debería ser fácil comenzar. Al igual que Yoga versión 1 era fácil de comenzar y Yoga versión 2 también lo era, queríamos mantener eso para Yoga versión 3. Luego, lo otro que queríamos hacer es hacer que Yoga versión 3 esté listo para producción por defecto. Con las baterías incluidas. Los detalles sobre esto los hablaré más adelante. También queríamos que GraphQL Yoga se adapte a cualquier stack existente. Y eso no significa, `oh, quiero usarlo con Express, o con Fastify, o quiero usar SDL primero, o code first`. Cuando dijimos que se adapte a cualquier stack existente, en realidad nos referíamos a cualquier JavaScript que exista, ya sea Deno, Bunn, Cloudflare Workers, queríamos darles soporte a todos. Además, queríamos ocultar la complejidad innecesaria, lo cual está relacionado con ser fácil de comenzar. Sí. También queríamos proporcionar soluciones para problemas comunes, como operaciones persistentes, Apollo Federation, todas esas palabras de moda que existen. Queríamos abordarlos y darles soluciones. Y finalmente, también queríamos permitir que las personas o individuos resuelvan sus propias necesidades específicas con yoga sin tener que abandonar yoga, o salir de yoga, o tener que bifurcar yoga, lo que básicamente significa que queríamos tener un sistema de complementos lo más potente posible.

Entonces, ¿cómo logramos todos esos puntos? Comencemos con la facilidad de comenzar. Configurar un servidor GraphQL con yoga es pan comido. Con este código a la derecha, obtienes un servidor GraphQL completo que admite todas las últimas características de GraphQL. Esto existe en Platform Primitives, en este ejemplo, estamos usando Node con el módulo HTTP. También puedes ver que yoga no abstrae el manejo de HTTP de Node. Es simplemente un escuchador de solicitudes que obtienes de la biblioteca de yoga y puedes conectarlo a cualquier servidor HTTP específico para Node o Cloudflare Workers o BAN o DNO. Y a partir de eso, obtienes todo, incluido un IDE de GraphQL.

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
Todos amamos GraphQL, pero puede ser desalentador poner en marcha un servidor y mantener tu código organizado, mantenible y testeable a largo plazo. ¡No más! Ven a ver cómo paso de un directorio vacío a una API GraphQL completamente desarrollada en cuestión de minutos. Además, verás lo fácil que es usar y crear directivas para limpiar aún más tu código. ¡Vas a amar aún más GraphQL una vez que hagas las cosas Redwood Easy!
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
¿Cuántas veces has implementado el mismo flujo en tu aplicación: verificar si los datos ya se han obtenido del servidor, si es así - renderizar los datos, si no - obtener estos datos y luego renderizarlos? Creo que lo he hecho más de diez veces yo mismo y he visto la pregunta sobre este flujo más de cincuenta veces. Desafortunadamente, nuestra biblioteca de gestión de estado predeterminada, Vuex, no proporciona ninguna solución para esto.Para la aplicación basada en GraphQL, había una alternativa para usar el cliente Apollo que proporcionaba herramientas para trabajar con la caché. Pero, ¿qué pasa si usas REST? Afortunadamente, ahora tenemos una alternativa de Vue a una biblioteca de react-query que proporciona una buena solución para trabajar con la caché del servidor. En esta charla, explicaré la distinción entre el estado de la aplicación local y la caché del servidor local y haré algo de codificación en vivo para mostrar cómo trabajar con este último.
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
El Guild ha lanzado recientemente Envelop - un nuevo y moderno Framework de Servidor GraphQL y sistema de plugins. En esta charla compartiré una breve descripción de Envelop y por qué probablemente deberías actualizar tu servidor GraphQL existente a él.
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
En esta charla, veremos algunas de las opciones modernas para construir una aplicación full-stack de React y GraphQL con convenciones sólidas y cómo esto puede ser de enorme beneficio para ti y tu equipo. Nos enfocaremos específicamente en RedwoodJS, un framework full stack de React que a menudo se llama 'Ruby on Rails para React'.
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
Aunque GraphQL es declarativo, los resolvers operan campo por campo, capa por capa, lo que a menudo resulta en un trabajo innecesario para la lógica de tu negocio, incluso cuando se utilizan técnicas como DataLoader. En esta charla, Benjie presentará su visión de una nueva estrategia de ejecución de GraphQL de propósito general cuyo enfoque holístico podría conducir a ganancias significativas en eficiencia y escalabilidad para todas las APIs de GraphQL.

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
Seguridad de tipo de extremo a extremo con React, GraphQL y Prisma
React Advanced Conference 2022React Advanced Conference 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
Construyendo APIs GraphQL sobre Ethereum con The Graph
GraphQL Galaxy 2021GraphQL Galaxy 2021
48 min
Construyendo APIs GraphQL sobre Ethereum con The Graph
WorkshopFree
Nader Dabit
Nader Dabit
The Graph es un protocolo de indexación para consultar redes como Ethereum, IPFS y otras blockchains. Cualquiera puede construir y publicar APIs abiertas, llamadas subgrafos, para hacer que los datos sean fácilmente accesibles.

En este masterclass aprenderás cómo construir un subgrafo que indexa datos de blockchain de NFT del contrato inteligente Foundation. Desplegaremos la API y aprenderemos cómo realizar consultas para recuperar datos utilizando diferentes tipos de patrones de acceso a datos, implementando filtros y ordenamiento.

Al final del masterclass, deberías entender cómo construir y desplegar APIs de alto rendimiento en The Graph para indexar datos de cualquier contrato inteligente desplegado en Ethereum.