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.

This talk has been presented at GraphQL Galaxy 2022, check out the latest edition of this Tech Conference.

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
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.
Adoptando GraphQL en una Empresa
GraphQL Galaxy 2021GraphQL Galaxy 2021
32 min
Adoptando GraphQL en una Empresa
Today's Talk is about adopting GraphQL in an enterprise. It discusses the challenges of using REST APIs and the benefits of GraphQL. The Talk explores different approaches to adopting GraphQL, including coexistence with REST APIs. It emphasizes the power of GraphQL and provides tips for successful adoption. Overall, the Talk highlights the advantages of GraphQL in terms of efficiency, collaboration, and control over APIs.
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.

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 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