Todo lo que necesitas es un contrato...

Rate this content
Bookmark

¿Cuántas veces has tenido que esperar a que tu equipo de backend termine de construir la API para poder comenzar tus tareas? ¿Y si todo lo que necesitaras para mover esa tarea a en progreso fuera el contrato de la API? ¿Y si hubiera una biblioteca que hiciera esto para las API de REST y GraphQL y, al mismo tiempo, llevara tus pruebas al siguiente nivel? Únete a mí y prepárate para mejorar tu experiencia de desarrollo mientras aprendes todas las experiencias ganadas en batalla de usar una de mis bibliotecas favoritas: Mock Service Worker.

This talk has been presented at React Advanced 2023, check out the latest edition of this React Conference.

FAQ

React Query es una herramienta utilizada para manejar el estado del servidor en aplicaciones web. Ayudó a solucionar problemas de código inmantenible al manejar eficientemente la caché, la deduplicación de solicitudes y la prebúsqueda de datos, lo que permitió simplificar y mejorar la calidad del código.

Cuando el código es inmantenible, esta característica se traslada a las pruebas, haciéndolas también inmantenibles y de baja calidad. Esto puede resultar en pruebas inestables que afectan la confiabilidad del software y generan estrés adicional para los desarrolladores.

Se utilizó Mock Service Worker, una biblioteca que permite interceptar solicitudes de API y proveer respuestas simuladas utilizando Service Workers. Esto permitió manejar las pruebas de manera más efectiva sin depender de un backend real, lo que mejoró la estabilidad y confiabilidad de las pruebas.

El problema se solucionó mediante la definición de contratos al inicio del sprint y el uso de Mock Service Worker para simular respuestas de API. Esto permitió que los equipos de frontend y backend trabajaran de manera paralela, mejorando la eficiencia y reduciendo el estrés al final del sprint.

El uso de contratos permitió definir claramente las expectativas de las APIs entre los equipos, facilitando un desarrollo paralelo y más eficiente. En las pruebas, aseguró que todos los componentes interactuaran correctamente según lo especificado, lo que resultó en pruebas más fiables y menos propensas a errores.

Los cambios en los contratos durante un sprint pueden gestionarse ajustando los contratos y respuestas simuladas en Mock Service Worker según sea necesario. Aunque esto puede requerir revisión adicional del trabajo realizado, generalmente implica menos esfuerzo comparado con reajustes mayores al final del sprint.

Daniel Afonso
Daniel Afonso
29 min
20 Oct, 2023

Comments

Sign in or register to post your comment.
Video Summary and Transcription
El orador discute los desafíos del estado del servidor y el mantenimiento de pruebas, y cómo encontraron soluciones usando React Query y Mock Service Worker. Enfatizan los beneficios de definir contratos para un desarrollo más rápido y la reducción del estrés. El orador también destaca las ventajas de usar Mock Service Worker sobre los servidores simulados y explica cómo permite una fácil personalización y anulaciones de pruebas. Mencionan el próximo lanzamiento de la V2 de MS-Double y animan al público a mantenerse actualizado.
Available in English: All You Need Is a Contract…

1. Introducción y molestias como desarrollador

Short description:

En esta parte, el orador expresa gratitud hacia la audiencia y reconoce el arduo trabajo de los organizadores de la conferencia. También mencionan tres cosas que les molestan como desarrollador: código inmantenible, pruebas afectadas por la inmantenibilidad y tareas tardías en los sprints. El orador promete compartir una historia sobre cómo ellos y su equipo solucionaron estos problemas.

Bueno, permítanme aclarar la sala. No va a haber contrato testing aquí. Esta es una broma de la que estábamos hablando antes de subir al escenario. Además, me voy a mover mucho, así que estoy tratando de averiguar el lugar. Eso está bien, si no me ciega la luz.

Antes que nada, React Advance, muchas gracias por tenerme aquí. Es un placer. Caminaré por ese lugar porque aparentemente la cámara no me captará en el otro, así que intentaré no moverme mucho.

Solo quería comenzar esta charla con, me gustaría dar un aplauso alegre, porque hubo mucho trabajo duro para preparar esta conferencia para todos de Git nation, todos del equipo técnico. No sé si están al tanto, pero cuando comenzamos hoy, tuvimos algunos problemas para conectar todo, y ahora todo ya está funcionando hasta ahora, ¿puedo obtener un todos los que están trabajando en esto? Vale. Muchas gracias.

Entonces, comencemos esto porque ya pasó un minuto, y realmente hay tres cosas que me molestan como desarrollador. La primera es cuando tienes un código inmantenible. Conoces la sensación. Tu código no es realmente tan bueno a veces. Cuanto más agregas, peor se pone. Es difícil. Sí, es duro. Y luego la segunda cosa que realmente me molesta, es cuando esa inmantenibilidad encuentra una forma de meterse en tus pruebas. Ahora no es malo que tu código no sea bueno, tus pruebas tampoco son buenas. Probablemente no estás durmiendo tan bien por la noche porque sabes lo que se siente tener pruebas inestables. Y la tercera cosa que realmente me molesta, y prometo no empezar una diatriba aquí, es cuando tienes una tarea que llega tarde al sprint. Sé que algunos de ustedes se relacionan con la sensación. Imaginemos que tenemos un equipo donde dos partes están trabajando en una tarea y la primera parte toma el 98% del tiempo, y una vez que la tarea llega a ti, tienes el 2% del tiempo. Así que obviamente tu gerente de producto va a esperar que entregues eso ayer. Y este es un sentimiento del que podría empezar a hablar aquí y no pararía.

Así que continuemos, porque tengo una historia sobre cómo yo y mi equipo solucionamos estos problemas hace un par de años. Así que comencemos desde el principio sobre cómo acabamos de solucionar el primer problema. Yo y mi equipo acabamos de derrotar al monstruo del código inmantenible. Porque esto había sido algo que estaba rondando, nos amenazaba, era duro.

Read also

2. Desafíos del Estado del Servidor y Problemas de Pruebas

Short description:

El orador discute los desafíos del estado del servidor y cómo tuvieron que implementar varias funcionalidades por sí mismos. Luego descubrieron React Query, que resolvió sus problemas de estado del servidor. Sin embargo, surgió un nuevo desafío con pruebas inmantenibles y defectuosas. El orador finalmente encontró una solución y se presenta como Daniel Alfonso, un defensor del desarrollador en OLX.

¿Y cuál era la razón? Bueno, la razón era el estado del servidor. No sé si están al tanto de lo que es el estado del servidor. Normalmente es el estado que existe en algún lugar de Internet como externo a su aplicación. Y tiene un montón de desafíos. Caché, deduplicación de solicitudes, data prebúsqueda. Hay un mantenedor aquí de React Query del que puedes hablar de muchos de estos desafíos y probablemente puedes entender cuánto dolor es entender y tener que implementar esto a mano y puedo decirles que mi equipo y yo, no teníamos React Query en aquel entonces o al principio, no lo teníamos. Así que estábamos implementando todas estas cosas por nosotros mismos y cuanto más código teníamos, peor se volvía el monstruo del código inmantenible. Así que empezamos a pensar, ¿por qué estamos implementando esto nosotros mismos de nuevo? ¿Qué estamos tratando de demostrar al ir en esta dirección? Y bueno, pasaron un par de meses y fue cuando un par de, bueno, estos meses pasaron un compañero de trabajo, como el Rey Arturo en la película de la Espada y la Piedra. Creo que así se dice en inglés. Lo siento, hablante no nativo de inglés aquí. Un compañero de trabajo se acercó a la piedra y sacó una consulta de 10 pilas. Así que aparentemente, esta nueva cosa, React Query, acababa de aparecer y era la solución para nuestros problemas. Y la consulta de 10 pilas trajo armonía a nuestro código porque ahora todos los problemas e inconvenientes que teníamos con el estado del servidor se resolvieron y no tuvimos que preocuparnos por implementar eso por un tiempo.

Ahora, una nueva amenaza se cernía en las sombras. Verás, esa inmantenibilidad encontró una forma de salir de nuestro código y entrar en nuestras pruebas. Ahora, no sé si recuerdan esta imagen que les mostré hace un par de minutos, pero esto es Hydra. Y ya saben lo que dicen de las Hidras. Corta una cabeza, dos más toman su lugar. Y esto es más o menos lo que empezaba a suceder con nosotros porque ahora nuestras pruebas no solo eran inmantenibles. Eran defectuosas. Eran complejas. No podía dormir por la noche porque no confiaba en lo que estaba haciendo y ahora te preguntas, ¿cuál es la relación? ¿Qué vamos a ver? Bueno, ahora, hace un par de años puedo decirles que mi equipo y yo logramos solucionar estos problemas. Y la parte divertida fue que todo lo que necesitábamos era un contrato. Así que esta es la parte donde realmente empiezo la charla.

Permítanme presentarme rápidamente. Soy Daniel Alfonso. Trabajo como defensor del desarrollador en OLX. Soy instructor de AGIT y embajador de Out-there y puedes encontrarme, voy a decir Twitter debido a la encuesta anterior en Twitter y prácticamente en cualquier red social al final Así que Daniel GC Alfonso. También algo sobre mí, recientemente publiqué un libro llamado State Management con React Query. Gracias.

QnA

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

Depuración Web Moderna
JSNation 2023JSNation 2023
29 min
Depuración Web Moderna
Top Content
This Talk discusses modern web debugging and the latest updates in Chrome DevTools. It highlights new features that help pinpoint issues quicker, improved file visibility and source mapping, and ignoring and configuring files. The Breakpoints panel in DevTools has been redesigned for easier access and management. The Talk also covers the challenges of debugging with source maps and the efforts to standardize the source map format. Lastly, it provides tips for improving productivity with DevTools and emphasizes the importance of reporting bugs and using source maps for debugging production code.
El Futuro de las Herramientas de Rendimiento
JSNation 2022JSNation 2022
21 min
El Futuro de las Herramientas de Rendimiento
Top Content
Today's Talk discusses the future of performance tooling, focusing on user-centric, actionable, and contextual approaches. The introduction highlights Adi Osmani's expertise in performance tools and his passion for DevTools features. The Talk explores the integration of user flows into DevTools and Lighthouse, enabling performance measurement and optimization. It also showcases the import/export feature for user flows and the collaboration potential with Lighthouse. The Talk further delves into the use of flows with other tools like web page test and Cypress, offering cross-browser testing capabilities. The actionable aspect emphasizes the importance of metrics like Interaction to Next Paint and Total Blocking Time, as well as the improvements in Lighthouse and performance debugging tools. Lastly, the Talk emphasizes the iterative nature of performance improvement and the user-centric, actionable, and contextual future of performance tooling.
Remix Flat Routes – Una Evolución en el Enrutamiento
Remix Conf Europe 2022Remix Conf Europe 2022
16 min
Remix Flat Routes – Una Evolución en el Enrutamiento
Top Content
Remix Flat Routes is a new convention that aims to make it easier to see and organize the routes in your app. It allows for the co-location of support files with routes, decreases refactor and redesign friction, and helps apps migrate to Remix. Flat Folders convention supports co-location and allows importing assets as relative imports. To migrate existing apps to Flat Routes, use the Remix Flat Routes package's migration tool.
Despídete de tus esquemas de API con tRPC
React Day Berlin 2022React Day Berlin 2022
29 min
Despídete de tus esquemas de API con tRPC
Today's Talk introduces TRPC, a library that eliminates the need for code generation and provides type safety and better collaboration between front-end and back-end. TRPC is demonstrated in a Next JS application integrated with Prisma, allowing for easy implementation and interaction with the database. The library allows for seamless usage in the client, with automatic procedure renaming and the ability to call methods without generating types. TRPC's client-server interaction is based on HTTP requests and allows for easy debugging and tracing. The library also provides runtime type check and validation using Zod.
pnpm: un gestor de paquetes rápido y eficiente para JavaScript
DevOps.js Conf 2022DevOps.js Conf 2022
31 min
pnpm: un gestor de paquetes rápido y eficiente para JavaScript
pnpm is a fast and efficient package manager that gained popularity in 2021 and is used by big tech companies like Microsoft and TikTok. It has a unique isolated node module structure that prevents package conflicts and ensures each project only has access to its own dependencies. pnpm also offers superior monorepo support with its node module structure. It solves the disk space usage issue by using a content addressable storage, reducing disk space consumption. pnpm is incredibly fast due to its installation process and deterministic node module structure. It also allows file linking using hardlinks instead of symlinks.
Cómo hacer un juego web tú solo
JS GameDev Summit 2023JS GameDev Summit 2023
27 min
Cómo hacer un juego web tú solo
This talk guides you on how to make a web game by yourself, emphasizing the importance of focusing on tasks that interest you and outsourcing the rest. It suggests choosing a game engine that allows distribution on the web and aligns with your understanding and enjoyment. The talk also highlights the significance of finding fun in the creative process, managing scope, cutting features that don't align with the game's direction, and iterating to the finish line. It concludes by discussing the options for publishing the game on the web and leveraging unique web features.

Workshops on related topic

React, TypeScript y TDD
React Advanced 2021React Advanced 2021
174 min
React, TypeScript y TDD
Top Content
Featured WorkshopFree
Paul Everitt
Paul Everitt
ReactJS es extremadamente popular y, por lo tanto, ampliamente soportado. TypeScript está ganando popularidad y, por lo tanto, cada vez más soportado.

¿Los dos juntos? No tanto. Dado que ambos cambian rápidamente, es difícil encontrar materiales de aprendizaje precisos.

¿React+TypeScript, con los IDEs de JetBrains? Esa combinación de tres partes es el tema de esta serie. Mostraremos un poco sobre mucho. Es decir, los pasos clave para ser productivo, en el IDE, para proyectos de React utilizando TypeScript. En el camino, mostraremos el desarrollo guiado por pruebas y enfatizaremos consejos y trucos en el IDE.
Dominando conceptos avanzados en TypeScript
React Summit US 2023React Summit US 2023
132 min
Dominando conceptos avanzados en TypeScript
Top Content
Featured WorkshopFree
Jiri Lojda
Jiri Lojda
TypeScript no es solo tipos e interfaces. Únete a esta masterclass para dominar características más avanzadas de TypeScript que harán tu código a prueba de balas. Cubriremos tipos condicionales y notación de inferencia, cadenas de plantillas y cómo mapear sobre tipos de unión y propiedades de objetos/arrays. Cada tema se demostrará en una aplicación de muestra que se escribió con tipos básicos o sin tipos en absoluto y juntos mejoraremos el código para que te familiarices más con cada característica y puedas llevar este nuevo conocimiento directamente a tus proyectos.
Aprenderás:- - ¿Qué son los tipos condicionales y la notación de inferencia?- ¿Qué son las cadenas de plantillas?- Cómo mapear sobre tipos de unión y propiedades de objetos/arrays.
Masterclass: Integrando LangChain con JavaScript para Desarrolladores Web
React Summit 2024React Summit 2024
92 min
Masterclass: Integrando LangChain con JavaScript para Desarrolladores Web
Featured Workshop
Vivek Nayyar
Vivek Nayyar
Sumérgete en el mundo de la IA con nuestro masterclass interactivo diseñado específicamente para desarrolladores web. "Masterclass: Integrando LangChain con JavaScript para Desarrolladores Web" ofrece una oportunidad única para cerrar la brecha entre la IA y el desarrollo web. A pesar de la prominencia de Python en el desarrollo de IA, el vasto potencial de JavaScript sigue siendo en gran medida inexplorado. Este masterclass tiene como objetivo cambiar eso.A lo largo de esta sesión práctica, los participantes aprenderán cómo aprovechar LangChain, una herramienta diseñada para hacer que los modelos de lenguaje grandes sean más accesibles y útiles, para construir agentes de IA dinámicos directamente dentro de entornos JavaScript. Este enfoque abre nuevas posibilidades para mejorar las aplicaciones web con funciones inteligentes, desde el soporte al cliente automatizado hasta la generación de contenido y más.Comenzaremos con los conceptos básicos de LangChain y los modelos de IA, asegurando una base sólida incluso para aquellos nuevos en IA. A partir de ahí, nos sumergiremos en ejercicios prácticos que demuestran cómo integrar estas tecnologías en proyectos reales de JavaScript. Los participantes trabajarán en ejemplos, enfrentando y superando los desafíos de hacer que la IA funcione sin problemas en la web.Este masterclass es más que una experiencia de aprendizaje; es una oportunidad de estar a la vanguardia de un campo emergente. Al final, los asistentes no solo habrán adquirido habilidades valiosas, sino que también habrán creado funciones mejoradas con IA que podrán llevar a sus proyectos o lugares de trabajo.Ya seas un desarrollador web experimentado curioso acerca de la IA o estés buscando expandir tus habilidades en áreas nuevas y emocionantes, "Masterclass: Integrando LangChain con JavaScript para Desarrolladores Web" es tu puerta de entrada al futuro del desarrollo web. Únete a nosotros para desbloquear el potencial de la IA en tus proyectos web, haciéndolos más inteligentes, interactivos y atractivos para los usuarios.
Práctica con la Rejilla de Datos React de AG Grid
React Summit 2022React Summit 2022
147 min
Práctica con la Rejilla de Datos React de AG Grid
Top Content
WorkshopFree
Sean Landsman
Sean Landsman
Comienza con la Rejilla de Datos React de AG Grid con un tutorial práctico del equipo central que te llevará a través de los pasos para crear tu primera rejilla, incluyendo cómo configurar la rejilla con propiedades simples y componentes personalizados. La edición comunitaria de AG Grid es completamente gratuita para usar en aplicaciones comerciales, por lo que aprenderás una herramienta poderosa que puedes agregar inmediatamente a tus proyectos. También descubrirás cómo cargar datos en la rejilla y diferentes formas de agregar renderizado personalizado a la rejilla. Al final de la masterclass, habrás creado una Rejilla de Datos React de AG Grid y personalizado con componentes React funcionales.- Comenzando e instalando AG Grid- Configurando ordenación, filtrado, paginación- Cargando datos en la rejilla- La API de la rejilla- Usando hooks y componentes funcionales con AG Grid- Capacidades de la edición comunitaria gratuita de AG Grid- Personalizando la rejilla con Componentes React
De Todo App a B2B SaaS con Next.js y Clerk
React Summit US 2023React Summit US 2023
153 min
De Todo App a B2B SaaS con Next.js y Clerk
WorkshopFree
Dev Agrawal
Dev Agrawal
Si eres como yo, probablemente tengas un millón de ideas para proyectos secundarios, algunas de las cuales incluso podrían hacerte ganar dinero como un micro SaaS, o podrían resultar ser la próxima startup de mil millones de dólares. Pero, ¿cómo sabes cuáles? ¿Cómo pasas de una idea a un producto funcional que puede ser puesto en manos de clientes que pagan sin renunciar a tu trabajo e invirtiendo todo tu tiempo y dinero en ello? ¿Cómo pueden competir tus proyectos secundarios en solitario con las aplicaciones construidas por enormes equipos y grandes empresas?
Construir productos SaaS ricos viene con desafíos técnicos como infraestructura, escalabilidad, disponibilidad, seguridad y subsistemas complicados como autenticación y pagos. Por eso, a menudo son los gigantes tecnológicos ya establecidos quienes pueden construir y operar productos de este tipo de manera razonable. Sin embargo, una nueva generación de devtools está permitiendo a los desarrolladores construir fácilmente soluciones completas que aprovechan la mejor infraestructura en la nube disponible, y ofrecen una experiencia que te permite iterar rápidamente en tus ideas por un bajo costo de $0. Se llevan todos los desafíos técnicos de construir y operar productos de software para que solo tengas que pasar tu tiempo construyendo las características que tus usuarios quieren, dándote una oportunidad razonable de competir contra el mercado al mantenerte increíblemente ágil y receptivo a las necesidades de los usuarios.
En esta masterclass de 3 horas comenzarás con una simple aplicación de gestión de tareas construida con React y Next.js y la convertirás en un producto SaaS completamente funcional y escalable integrando una base de datos escalable (PlanetScale), autenticación multi-tenant (Clerk), y pagos basados en suscripción (Stripe). También aprenderás cómo los principios del desarrollo de software ágil y el diseño impulsado por el dominio pueden ayudarte a construir productos rápidamente y de manera rentable, y competir con las soluciones existentes.
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.