Hemos descansado lo suficiente, ¿qué sigue?

This ad is not shown to multipass and full ticket holders
JSNation US
JSNation US 2025
November 17 - 20, 2025
New York, US & Online
See JS stars in the US biggest planetarium
Learn More
In partnership with Focus Reactive
Upcoming event
JSNation US 2025
JSNation US 2025
November 17 - 20, 2025. New York, US & Online
Learn more
Bookmark
Rate this content

Muchos desarrolladores están familiarizados con el consumo/diseño de APIs RESTful, pero ¿qué pasa con la construcción y consumo de APIs GraphQL y gRPC? ¿Qué pasa con las APIs impulsadas por eventos o asíncronas? ¿Cuáles son los beneficios y las limitaciones técnicas de cada una? Vamos a adentrarnos en la madriguera y explorar algunos de estos tipos de API como alternativas a REST.

This talk has been presented at TestJS Summit 2023, check out the latest edition of this JavaScript Conference.

FAQ

Una API RESTful es un tipo de API que sigue los principios de REST (Transferencia de Estado Representacional). Fue definido en 2000 y permite a los desarrolladores tener cierta flexibilidad en cómo construyen sus servicios web.

Los WebHooks y los WebSockets son métodos utilizados en las arquitecturas de APIs impulsadas por eventos. Los WebHooks son utilizados para mecanismos de respuesta, mientras que los WebSockets permiten mantener una conexión abierta para una comunicación bidireccional en tiempo real.

GraphQL permite a los clientes especificar exactamente qué campos devolver en una solicitud, evitando problemas de subextracción y sobreextracción de datos que son comunes en las APIs RESTful, donde puede haber ineficiencias en la cantidad de datos enviados y recibidos.

gRPC, desarrollado por Google y basado en HTTP/2, ofrece conexiones de larga duración y un enfoque de datos binarios que resulta en una comunicación más eficiente y rápida. Es especialmente útil para comunicaciones de microservicios y en aplicaciones donde el rendimiento y la eficiencia son críticos.

Las arquitecturas de API pueden mejorar el manejo de tráfico y datos combinando tecnologías como REST y WebSockets para controlar datos, o utilizando gRPC para transmisiones eficientes y manejo de conexiones de larga duración.

HTTP/2 es una versión mejorada de HTTP que permite una conexión más eficiente, reduciendo la latencia a través de técnicas como la compresión de encabezados y múltiples flujos simultáneos en una conexión, lo que mejora significativamente el rendimiento de las comunicaciones web.

La subextracción ocurre cuando una API no envía suficientes datos, obligando a realizar múltiples solicitudes adicionales. La sobreextracción ocurre cuando una API envía más datos de los necesarios, lo cual puede llevar a ineficiencias y problemas de seguridad.

Las suscripciones en GraphQL son una forma de permitir que los clientes reciban datos en tiempo real a medida que ocurren eventos. Funciona como un patrón de publicar-suscribir, donde los clientes pueden 'suscribirse' a ciertos eventos y recibir actualizaciones automáticas.

QUIC es un nuevo protocolo de transporte que ofrece mejoras significativas sobre TCP, como la reducción del tiempo de conexión y una gestión de sesión más eficiente. HTTP/3 utiliza QUIC para proporcionar comunicaciones más rápidas y seguras en la web.

Un protocol buffer, o protobuf, es un sistema de serialización de datos estructurados utilizado por gRPC para intercambiar información entre servicios. Ofrece eficiencia en el tamaño y velocidad de los datos, y asegura que la estructura de los datos sea compatible entre diferentes aplicaciones.

W. Ian Douglas
W. Ian Douglas
17 min
11 Dec, 2023

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Esta charla compara las APIs RESTful, las arquitecturas impulsadas por eventos y las APIs de rendimiento de baja latencia. Discute las limitaciones de las APIs RESTful y la necesidad de tecnologías más nuevas como GraphQL. La charla explora la arquitectura impulsada por eventos utilizando webhooks y web sockets, así como los beneficios de gRPC como una alternativa de alto rendimiento. También destaca la integración de gRPC con el desarrollo de front-end y el uso de buffers de protocolo para mejorar el rendimiento. Por último, enfatiza la importancia de considerar la familiaridad del equipo y la infraestructura al elegir una arquitectura de API.

1. Introducción

Short description:

Hola a todos. Soy Ian Douglas, un defensor de desarrolladores senior en Postman. Hoy, estaré comparando las API RESTful, las arquitecturas impulsadas por eventos y las API de rendimiento de baja latencia. ¡Vamos a sumergirnos!

Hola a todos. Soy Ian Douglas. Soy un defensor de desarrolladores senior en Postman, y gracias por tenerme en TestJS. Voy a hacer una charla hoy comparando las API RESTful, arquitecturas impulsadas por eventos He estado en la industria tecnológica durante mucho tiempo. La mayoría de mis canas provienen de trabajar en más de una docena de startups y de tener dos adolescentes. He pasado más de ocho años en el espacio de defensa , cuatro años de los cuales estuvieron en educación, enseñando a las personas sobre software. Por otro lado, también estoy muy interesado en el entrenamiento de perros, la impresión en 3D, el coaching de career, y realmente me gustan los chistes realmente malos, así que verás algunos de esos en mis diapositivas también.

2. Normas RESTful y APIs impulsadas por eventos

Short description:

En esta parte, discutiremos las normas RESTful, las APIs impulsadas por eventos como los web hooks y los web sockets, y las APIs de rendimiento de baja latencia como gRPC. Las APIs RESTful se han vuelto populares, pero necesitan mantenerse al día con la nueva tecnología. HTTP 1 tiene limitaciones, como la falta de interrupción de un cliente y la subextracción o sobreextracción de datos. Tecnologías como GraphQL proporcionan formas más eficientes de enviar datos. También exploraremos la arquitectura impulsada por eventos, incluyendo WebSockets y WebHooks, que permiten el procesamiento asíncrono e impulsado por eventos.

Así que esta es la rápida agenda que vamos a repasar. Voy a darles algunos antecedentes sobre las normas standards RESTful. Vamos a hablar sobre las APIs impulsadas por eventos como los web hooks y los web sockets, y luego vamos a hablar sobre las APIs de performance de baja latencia como gRPC.

Así que REST fue definido en 2000. Mucha gente que está trabajando en desarrollo de software hoy en día sabe qué son los servicios REST. El término servicios RESTful apareció poco después en unos pocos años, aunque no hay una forma muy fácil de determinar cuándo surgió el término en sí. Sucedió porque a la mayoría de los desarrolladores no les gustaba seguir reglas tan estrictas. Querían cierta flexibilidad en lo que construían. La mayoría de las escuelas hoy en día que están enseñando diseño de API design están enseñando diseño de API design RESTful, o están enseñando consumo de API con APIs RESTful principalmente. Postman en realidad tiene un programa de estudiantes donde trabajamos con escuelas para que los estudiantes usen Postman sobre otros tipos de arquitecturas de API, también. Por muy populares que hayan sido, las APIs RESTful parecen un poco atascadas en el territorio de la versión 1.1 de HTTP y necesitan mantenerse al día con la nueva tecnología. Empresas como Google empezaron a introducir nuevos protocolos como speedy, que fue la base básica para HTTP 2.0. Por ejemplo, en HTTP 1, es un poco como una llamada telefónica donde llamo a alguien y le hago una sola pregunta, obtengo una sola respuesta y luego colgamos el teléfono. La próxima vez que necesite llamar a alguien y obtener más información, tengo que llamar, identificarme, hacer mi pregunta, obtener mi respuesta y colgar. Otro problema con HTTP 1 es que no hay forma de interrumpir a un cliente. Si un cliente se conecta a un servidor y dice, me gustaría subir algunos data, el servidor puede decir okay, y el servidor puede simplemente enviar gigabytes o terabytes de data antes de que el servidor tenga permiso para interrumpir y decir, espera, no puedo procesar todos los data que acabas de enviar. También tenemos un problema en las tecnologías RESTful que llamamos subextracción o sobreextracción, que es donde no tenemos formas eficientes de enviar data. Estamos enviando demasiado data y esperando que nuestros front ends oculten ese data, lo que puede llevar a problemas de security, o no enviamos suficiente data, lo que significa que tengo que hacer más y más de estas conexiones de nuevo. Así que tecnologías como GraphQL aparecieron en la escena, permitiendo al cliente especificar qué campos devolver como parte de la solicitud. Esto podría suceder en REST con parámetros, pero es un poco más difícil de hacer eso y pone un poco más de trabajo en el desarrollador para ser capaz de implementar qué campos enviar de vuelta como parte de un parámetro de consulta, por ejemplo.

Si has estado trabajando con desarrollo de front-end y tecnologías de front-end, probablemente has trabajado con WebSockets o cualquier tipo de característica colaborativa, como un sistema de mensajes de chat o aplicaciones impulsadas por eventos como juegos. Así que, voy a darles una rápida lección sobre WebSockets y WebHooks mientras miramos la arquitectura impulsada por eventos por un momento. La idea de las APIs asíncronas es que están impulsadas por eventos. Hay dos métodos clásicos, WebHooks y WebSockets, como mencioné. Todavía están basados en HTTP, y por lo tanto hacen una conexión, transfieren data, y luego se desconectan. Sin embargo, los WebSockets, a diferencia de las APIs RESTful y los WebHooks, pueden mantener una conexión abierta durante un largo período de tiempo, y cualquiera de los lados puede enviar data de ida y vuelta en cualquier momento. Y por lo tanto permite el procesamiento impulsado por eventos, que cuando algo sucede, puedes transmitirlo a través de una conexión que ya está abierta. Los desarrolladores no necesariamente necesitan pausar y esperar una respuesta antes de continuar trabajando. Así que puedo enviar una solicitud, y luego puedo continuar mi ciclo de eventos, esperando por otra interacción del usuario y esperar a que esa respuesta regrese. Así que, los ciclos de eventos como las promesas y otros mecanismos llamados async y await permiten a los desarrolladores elegir cuándo pausar la ejecución para esperar una respuesta o simplemente procesarla en segundo plano.

3. Webhooks, Web Sockets, GraphQL y gRPC

Short description:

Los webhooks y los web sockets se utilizan comúnmente para aplicaciones en tiempo real, mientras que GraphQL introduce la transmisión de datos y los eventos enviados por el servidor. Las API asíncronas tienen complejidades de diseño y desafíos con la reconciliación de datos, la limitación de la tasa y el estrangulamiento. Combinando lo mejor de las API RESTful y las API asíncronas, gRPC ofrece conexiones de larga duración, enfoque de datos binarios y rendimiento mejorado. gRPC se basa en la versión HTTP 2 y tiene cuatro mecanismos de transferencia de datos diferentes.

Normalmente, vemos los webhooks utilizados en un mecanismo de respuesta. Por ejemplo, alguien paga una factura con algo como PayPal. PayPal puede llamar a un webhook que usted especifica que puede tomar alguna otra acción como actualizar su sistema CRM. Como se mencionó anteriormente, los web sockets se utilizan comúnmente para aplicaciones más en tiempo real donde necesita mantener esa conexión abierta y tener una conversación. Puede ser necesario intercambiar cierta cantidad de estado al conectar o reconectar para reanudar donde lo dejó por última vez, como, en un mecanismo de chat, qué mensaje vimos la última vez para operaciones en tiempo real?

GraphQL también tiene algo ahora llamado transmisión de data que llaman suscripciones. Es un poco como un patrón de publicar-suscribir, que a veces llamamos PubSub. Hay otras opciones aquí, incluyendo mecanismos más nuevos llamados eventos enviados por el servidor, donde los servidores pueden enviar data a un cliente. De nuevo, porque estos canales asíncronos se mantienen abiertos durante un largo período de tiempo. Aún así, lo asíncrono tiene algunos problemas. Puede ser más difícil de design y planificar ya que no sabes qué eventos están sucediendo en ningún orden particular. Así que podrías necesitar reconciliar tus data en ambos extremos de la conexión para asegurarte de que todo se completó. Los mecanismos de webhook necesitan asegurarse de que cualquier sistema que lo llame pueda realmente enrutar a el servidor, lo cual es complicado cuando estás lidiando con mecanismos de red internos o pasarelas de API y así sucesivamente. Hay otros problemas que puedes encontrar con lo asíncrono, incluyendo la limitación de la tasa y el estrangulamiento de data, lo cual puede ser más desafiante.

Así que voy a hacer una pausa en esta pantalla por un momento si quieres mirar algunas diferencias primarias entre las API RESTful y las API asíncronas en cuanto a mecanismos de transferencia de data y complejidad de design y así sucesivamente. Las API asíncronas, tradicionalmente WebSockets, van a estar construidas principalmente en la versión HTTP dos. Los webhooks todavía pueden estar actuando como API RESTful y todavía usando HTTP 1.1. Pero en las API asíncronas, obteniendo esa respuesta, el cliente proporciona un medio para responder más tarde o ser interrumpido más tarde cuando un evento ha sucedido. Pero eso aumenta tu complejidad de design. Y el orden en que tus solicitudes y respuestas están volviendo no siempre es predecible y puede que necesite haber alguna reconciliación más tarde.

Así que hablemos sobre el rendimiento de la API y algunas cosas a tener en cuenta si necesitamos tomar lo mejor de las API RESTful y las API asíncronas. Por supuesto, podríamos escalar nuestro hardware y añadir más sistemas para manejar la carga. Y eso ayudará un poco en el lado del rendimiento, pero plantea otras preocupaciones y problemas, especialmente con el costo de los proveedores de computación en la nube. Entonces, ¿cómo podemos combinar lo mejor de las arquitecturas de API que hemos mencionado hasta ahora, como controlar nuestros data, pero también manejar cosas como data transmitido o tener conexiones de larga duración? ¿Qué pasaría si hubiera un tipo de API que nos diera la flexibilidad de una única solicitud de respuesta como REST o la capacidad de transmitir data en cualquier dirección, del cliente al servidor o ambos, y también permitir que esas conexiones permanezcan abiertas durante largos períodos de tiempo, pero también te dé un gran impulso de rendimiento para acelerar mientras minimizas tu rendimiento de data? Así que tomando lo mejor de todas estas cosas juntas, y podemos mirar a gRPC. Así que gRPC fue desarrollado por Google y está construido sobre la versión HTTP 2. Esto permite esas conexiones de larga duración, similar a los web sockets, y utiliza un enfoque de data binario por defecto. Todavía es un trabajo en progreso. No hay demasiadas API gRPC de cara al público por ahí. Pero estamos viendo mucho crecimiento. Otra área de crecimiento que estamos viendo es una biblioteca de JavaScript llamada gRPC web, que te permitirá conectarte a servidores gRPC desde aplicaciones web, donde principalmente fue introducido para ser comunicación de microservicios de servidor a servidor. gRPC tiene cuatro diferentes mecanismos de transferencia de data.

4. Rendimiento e Integración de gRPC

Short description:

gRPC es una alternativa de alto rendimiento a las API RESTful y WebSockets. Ofrece compresión incorporada y permite la transmisión de datos en ambas direcciones. La biblioteca web gRPC ha estado disponible desde 2018 y proporciona ejemplos para implementar gRPC en varios marcos de trabajo. Con estructuras de datos de tipo estático y validación automática de datos, gRPC simplifica el desarrollo. Aunque tradicionalmente se ha utilizado para aplicaciones móviles y comunicación de servidor a servidor, la biblioteca web gRPC permite la integración en el front-end. Al utilizar protocol buffers, gRPC logra un gran impulso de rendimiento y hace cumplir los tipos de datos. Implementar una API RESTful en la parte superior de HTTP2 es posible, pero GraphQL ofrece una combinación de REST y gRPC con cargas útiles JSON y un patrón PubSub para la comunicación asíncrona.

El primero es muy parecido a una API RESTful de una única solicitud, una única respuesta, y luego una desconexión. Los otros son una combinación de que el cliente quiere transmitir un montón de data al servidor o el servidor transmitiendo un montón de data al cliente, o transmitiendo en ambas direcciones. La idea de transmitir aquí es que puedes enviar múltiples solicitudes o respuestas en cualquier momento a medida que ocurren eventos en ambos extremos de la conexión.

Debido a todo esto, junto con cierta compresión incorporada, gRPC es típicamente de siete a diez veces más eficiente que las API RESTful, principalmente debido a la versión HTTP 2, y eso permite mucha de la comunicación de ida y vuelta entre el cliente y el servidor antes de desconectar.

Entonces podrías estar diciendo, bueno, gRPC es solo para el nivel de sistema o desde un dispositivo móvil a un servidor. Pero de nuevo, esta biblioteca web gRPC, fue introducida hace un tiempo, fue puesta en disponibilidad general hace cinco años en 2018. La biblioteca ha tenido mucho trabajo en ella, es bastante robusta, y hay varios ejemplos por ahí para implementar gRPC en frameworks como React y Vue, WebAssembly y Blazor, y más. gRPC tiene todo lo que necesitamos, colectivamente para reemplazar potencialmente REST y WebSockets en aplicaciones de front-end con una única architecture, y las data estructuras son de tipo estático. Así que si la biblioteca del cliente la desempaqueta, puedes confiar en que la data validation ya ha ocurrido, no necesitas validar si este atributo es realmente una cadena, es este atributo realmente un número. Si el cliente gRPC es capaz de desempaquetar esa data payload, ya ha hecho esa validation por ti. Y comienza a enviar un error de vuelta a lo que envió ese mensaje diciendo que no puedo procesar eso.

Todo esto es bastante nuevo, sin embargo. Y necesitamos que más personas comiencen a usar esta tecnología y ayuden con la documentation y ejemplos y comiencen a hacer aplicaciones reales para este proceso web gRPC para realmente tomar hold. Así que de nuevo, voy a hacer una pausa aquí por un momento y puedes ver algunas de las diferencias entre las API RESTful y las API gRPC. Las API gRPC tienen mucha similitud con las API asíncronas, pero te dan este extra performance boost. Así que de nuevo, está construido en la parte superior de la versión HTTP dos. Obteniendo una respuesta, puedes hacerla síncrona como REST. Puedes hacerla asíncrona como webhooks. Pero la design complejidad es generalmente mucho más alta. No permite la flexibilidad para lo que envías en el mensaje. Es un formato de mensaje muy rígido. Y como vimos entre REST y RESTful, algunos desarrolladores quieren más de esa flexibilidad. Hay algunos data tipos que permiten la provisión para esto dentro del formato binario que envías estos mensajes llamados protocol buffers que permitirán diferentes tipos de data para ser enviados o puedes simplemente enviar cosas como largas cadenas y hacer tu propia codificación y decodificación.

El caso de uso típico de gRPC ha sido tradicionalmente mobile apps y comunicación de servidor a servidor para cosas como registro de eventos y así sucesivamente, o para juegos móviles, pero con la biblioteca web gRPC, hay mucha flexibilidad aquí para ahora introducir esto como algo para trabajar en el front end también. De nuevo, porque esa data estructura es un formato binario usando protocol buffers o proto buffs como podrías escucharlos referidos, obtienes un gran performance boost y esa data validation ya está cuidada, lo que simplifica tu código.

La pregunta aquí entonces es, bueno, ¿no podríamos simplemente implementar una API RESTful en la parte superior de HTTP2 y ganar algunos de esos beneficios que vimos entre Websockets y gRPC y webhooks? Es como, sí, podrías si quieres construir eso. GraphQL es un poco de REST y gRPC con cargas útiles JSON donde puedes decirle a GraphQL, quiero llamar a esta instrucción y quiero que estos campos vuelvan, y con su nuevo proceso de suscripción es un poco como asíncrono también con ese patrón PubSub donde puedes suscribirte a diferentes canales y obtener eventos de vuelta del servidor a medida que ocurren. ¿Podríamos usar un formato binario en una API RESTful que haga cumplir los data tipos? Absolutamente. De hecho, puedes usar protocol buffers dentro de una API RESTful si quieres. Solo tienes que asegurarte de que cada cliente que se conecta sabe cómo desempaquetar el formato de mensaje protobuf y también lidiar con la rigidez del mensaje tiene que ser enviado en este formato.

5. Consideraciones de la Arquitectura de la API

Short description:

En el protobuf, puedes especificar campos opcionales. gRPC tiene un mecanismo de descubrimiento incorporado para los payloads de mensajes de la API e instrucciones. Implementar una arquitectura orientada a eventos usando REST es posible pero limitado. La versión HTTP 3, basada en QUIC, ofrece un rendimiento mejorado. Considera la familiaridad del equipo y la infraestructura al elegir una arquitectura de API.

Ahora, en el protobuf, puedes especificar que algunos campos son opcionales. Por lo tanto, no tienen que estar allí. Y de nuevo, puedes hacer tu propia codificación y decodificación, pero eso podría tener otras implicaciones en la eficiencia y el rendimiento de tu software.

Lo bueno de gRPC es que en realidad tiene un mecanismo de descubrimiento incorporado que permite a los clientes aprender sobre los payloads de mensajes de la API, así como los diferentes tipos de instrucciones que se pueden llamar. Ahora, normalmente esta introspección se desactiva en producción, pero mientras estás en modo de desarrollo o en modo de preparación, podrías activar esta introspección y ser capaz de recopilar datos del servidor en cuanto a lo que es posible, ¿qué métodos puedo llamar? ¿Cuáles son estos formatos de datos? ¿Cómo envío estos datos?

Otra pregunta es, ¿podríamos simplemente implementar algo como una arquitectura orientada a eventos usando REST? Más o menos, pero seguiría siendo un ciclo de solicitud y respuesta único debido a la versión HTTP uno y simular un flujo de datos entrantes es técnicamente posible. Así es como hemos gestionado el contenido en streaming durante algunas décadas, pero tiende a ser más construido en UDP para mecanismos de streaming para cosas como video y audio. Parte de la versión HTTP dos es que tus datos están cifrados por defecto. Con HTTP uno, tienes que construir tu propio cifrado o confiar en cosas como TLS. Así que podrías añadir otras capas de cifrado a esos datos también. De hecho, animamos a todos, por favor, cifren sus datos.

Hasta ahora, sin embargo, construir todas estas cosas y tener en cuenta todas estas cosas, has aumentado la complejidad de tu diseño de API bastante. Has hecho tu despliegue y tu gestión mucho más complejos, y probablemente has hecho tu infraestructura más compleja. Entonces, ¿realmente vale la pena? Elegir una arquitectura de API es un equilibrio delicado de rendimiento. Pero, ¿qué significa realmente el rendimiento? Cuando pensamos en la evolución entre la versión HTTP 1 y la versión 2 y las mejoras que se hicieron allí con las conexiones de larga duración y los formatos binarios y demás, y mirando hacia adelante a lo que va a ser el rendimiento de la versión HTTP 3, en realidad va a ser bastante interesante.

Así que hablemos por un momento de la versión HTTP 3. En realidad, se basa en un nuevo protocolo llamado QUIC, Q-U-I-C, y solo se construye en UDP. No se va a construir en TCP. Esto va a reducir parte del ruido de la comunicación, porque para cada paquete enviado, no tienes que esperar a que vuelva una respuesta. Va a tener una nueva gestión de sesiones incorporada para imitar las llamadas sin estado mientras sigue conservando los métodos HTTP, los encabezados y los sistemas de códigos de estado que hemos estado usando durante bastante tiempo ahora. De hecho, ha sido soportado ahora desde 2020 y 2021 en la mayoría de los navegadores principales. De hecho, la mayoría de las bibliotecas de clientes ya están soportando completamente HTTP 3. La última vez que lo comprobé, la única que no lo estaba soportando era la biblioteca Curl, que sigue siendo una biblioteca bastante importante.

Así que cuando se trata de rendimiento, lo otro en lo que pensar es ¿qué tan rápido puede el equipo trabajar en esto? Así que tengo algunas notas en esta diapositiva que básicamente dicen que soy un fan de los equipos que aprenden algo nuevo, pero si tu empresa necesita sacar algo rápidamente, ¿son estas tecnologías algo que tu equipo ya conoce? ¿O tu equipo va a tener que aprender esto? ¿Tu equipo de DevOps ya sabe cómo construir este tipo de infraestructura para soportar HTTP 2 o HTTP 3? Así que cuando pensamos en rendimiento, a menudo pensamos en el rendimiento del software. Pero, ¿qué pasa con el rendimiento del equipo y la cantidad de tiempo que le lleva al equipo construir lo que necesita construir? ¿Esa infraestructura ya está en su lugar? ¿Ya saben cómo configurar estas cosas? ¿O hay un camino de migración más fácil para el rendimiento en lugar de una reescritura total en alguna nueva arquitectura? Así que todas estas son cosas muy interesantes en las que pensar cuando pensamos en diferentes tipos de arquitecturas de API. Cuando pensamos en la historia de REST, y pasamos a las API asíncronas y las API orientadas a eventos cuando hablamos de cosas como WebSockets y Webhooks, pero también considerando el rendimiento de cosas como gRPC. Así que espero que este fondo haya sido útil. Estoy feliz de responder a cualquier pregunta que tengas. Mi nombre de usuario en la mayoría de las plataformas sociales, incluyendo LinkedIn y Twitter es iandouglas736. Si quieres hacer más preguntas, el código QR que ves en esta diapositiva también te llevará a toda mi información de contacto. Así que gracias de nuevo a todos en Test.js por tenerme hoy, y no dudes en ponerte en contacto con preguntas. Gracias por tu tiempo.

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

Una Guía del Comportamiento de Renderizado de React
React Advanced 2022React Advanced 2022
25 min
Una Guía del Comportamiento de Renderizado de React
Top Content
This transcription provides a brief guide to React rendering behavior. It explains the process of rendering, comparing new and old elements, and the importance of pure rendering without side effects. It also covers topics such as batching and double rendering, optimizing rendering and using context and Redux in React. Overall, it offers valuable insights for developers looking to understand and optimize React rendering.
Acelerando tu aplicación React con menos JavaScript
React Summit 2023React Summit 2023
32 min
Acelerando tu aplicación React con menos JavaScript
Top Content
Mishko, the creator of Angular and AngularJS, discusses the challenges of website performance and JavaScript hydration. He explains the differences between client-side and server-side rendering and introduces Quik as a solution for efficient component hydration. Mishko demonstrates examples of state management and intercommunication using Quik. He highlights the performance benefits of using Quik with React and emphasizes the importance of reducing JavaScript size for better performance. Finally, he mentions the use of QUIC in both MPA and SPA applications for improved startup performance.
Solicitudes de Red con Cypress
TestJS Summit 2021TestJS Summit 2021
33 min
Solicitudes de Red con Cypress
Top Content
Cecilia Martinez, a technical account manager at Cypress, discusses network requests in Cypress and demonstrates commands like cydot request and SCI.INTERCEPT. She also explains dynamic matching and aliasing, network stubbing, and the pros and cons of using real server responses versus stubbing. The talk covers logging request responses, testing front-end and backend API, handling list length and DOM traversal, lazy loading, and provides resources for beginners to learn Cypress.
Concurrencia en React, Explicada
React Summit 2023React Summit 2023
23 min
Concurrencia en React, Explicada
Top Content
React 18's concurrent rendering, specifically the useTransition hook, optimizes app performance by allowing non-urgent updates to be processed without freezing the UI. However, there are drawbacks such as longer processing time for non-urgent updates and increased CPU usage. The useTransition hook works similarly to throttling or bouncing, making it useful for addressing performance issues caused by multiple small components. Libraries like React Query may require the use of alternative APIs to handle urgent and non-urgent updates effectively.
How React Compiler Performs on Real Code
React Advanced 2024React Advanced 2024
31 min
How React Compiler Performs on Real Code
Top Content
I'm Nadia, a developer experienced in performance, re-renders, and React. The React team released the React compiler, which eliminates the need for memoization. The compiler optimizes code by automatically memoizing components, props, and hook dependencies. It shows promise in managing changing references and improving performance. Real app testing and synthetic examples have been used to evaluate its effectiveness. The impact on initial load performance is minimal, but further investigation is needed for interactions performance. The React query library simplifies data fetching and caching. The compiler has limitations and may not catch every re-render, especially with external libraries. Enabling the compiler can improve performance but manual memorization is still necessary for optimal results. There are risks of overreliance and messy code, but the compiler can be used file by file or folder by folder with thorough testing. Practice makes incredible cats. Thank you, Nadia!

Workshops on related topic

Masterclass de Depuración de Rendimiento de React
React Summit 2023React Summit 2023
170 min
Masterclass de Depuración de Rendimiento de React
Top Content
Featured Workshop
Ivan Akulov
Ivan Akulov
Los primeros intentos de Ivan en la depuración de rendimiento fueron caóticos. Vería una interacción lenta, intentaría una optimización aleatoria, vería que no ayudaba, y seguiría intentando otras optimizaciones hasta que encontraba la correcta (o se rendía).
En aquel entonces, Ivan no sabía cómo usar bien las herramientas de rendimiento. Haría una grabación en Chrome DevTools o React Profiler, la examinaría, intentaría hacer clic en cosas aleatorias, y luego la cerraría frustrado unos minutos después. Ahora, Ivan sabe exactamente dónde y qué buscar. Y en esta masterclass, Ivan te enseñará eso también.
Así es como va a funcionar. Tomaremos una aplicación lenta → la depuraremos (usando herramientas como Chrome DevTools, React Profiler, y why-did-you-render) → identificaremos el cuello de botella → y luego repetiremos, varias veces más. No hablaremos de las soluciones (en el 90% de los casos, es simplemente el viejo y regular useMemo() o memo()). Pero hablaremos de todo lo que viene antes - y aprenderemos a analizar cualquier problema de rendimiento de React, paso a paso.
(Nota: Esta masterclass es más adecuada para ingenieros que ya están familiarizados con cómo funcionan useMemo() y memo() - pero quieren mejorar en el uso de las herramientas de rendimiento alrededor de React. Además, estaremos cubriendo el rendimiento de la interacción, no la velocidad de carga, por lo que no escucharás una palabra sobre Lighthouse 🤐)
Diseñando Pruebas Efectivas con la Biblioteca de Pruebas de React
React Summit 2023React Summit 2023
151 min
Diseñando Pruebas Efectivas con la Biblioteca de Pruebas de React
Top Content
Featured Workshop
Josh Justice
Josh Justice
La Biblioteca de Pruebas de React es un gran marco para las pruebas de componentes de React porque responde muchas preguntas por ti, por lo que no necesitas preocuparte por esas preguntas. Pero eso no significa que las pruebas sean fáciles. Todavía hay muchas preguntas que tienes que resolver por ti mismo: ¿Cuántas pruebas de componentes debes escribir vs pruebas de extremo a extremo o pruebas de unidad de nivel inferior? ¿Cómo puedes probar una cierta línea de código que es difícil de probar? ¿Y qué se supone que debes hacer con esa persistente advertencia de act()?
En esta masterclass de tres horas, presentaremos la Biblioteca de Pruebas de React junto con un modelo mental de cómo pensar en el diseño de tus pruebas de componentes. Este modelo mental te ayudará a ver cómo probar cada bit de lógica, si debes o no simular dependencias, y ayudará a mejorar el diseño de tus componentes. Te irás con las herramientas, técnicas y principios que necesitas para implementar pruebas de componentes de bajo costo y alto valor.
Tabla de contenidos- Los diferentes tipos de pruebas de aplicaciones de React, y dónde encajan las pruebas de componentes- Un modelo mental para pensar en las entradas y salidas de los componentes que pruebas- Opciones para seleccionar elementos DOM para verificar e interactuar con ellos- El valor de los mocks y por qué no deben evitarse- Los desafíos con la asincronía en las pruebas de RTL y cómo manejarlos
Requisitos previos- Familiaridad con la construcción de aplicaciones con React- Experiencia básica escribiendo pruebas automatizadas con Jest u otro marco de pruebas unitarias- No necesitas ninguna experiencia con la Biblioteca de Pruebas de React- Configuración de la máquina: Node LTS, Yarn
Detox 101: Cómo escribir pruebas de extremo a extremo estables para su aplicación React Native
React Summit 2022React Summit 2022
117 min
Detox 101: Cómo escribir pruebas de extremo a extremo estables para su aplicación React Native
Top Content
Workshop
Yevheniia Hlovatska
Yevheniia Hlovatska
A diferencia de las pruebas unitarias, las pruebas de extremo a extremo buscan interactuar con su aplicación tal como lo haría un usuario real. Y como todos sabemos, puede ser bastante desafiante. Especialmente cuando hablamos de aplicaciones móviles.
Las pruebas dependen de muchas condiciones y se consideran lentas e inestables. Por otro lado, las pruebas de extremo a extremo pueden dar la mayor confianza de que su aplicación está funcionando. Y si se hace correctamente, puede convertirse en una herramienta increíble para aumentar la velocidad del desarrollador.
Detox es un marco de pruebas de extremo a extremo en caja gris para aplicaciones móviles. Desarrollado por Wix para resolver el problema de la lentitud e inestabilidad y utilizado por React Native en sí como su herramienta de pruebas E2E.
Únete a mí en esta masterclass para aprender cómo hacer que tus pruebas de extremo a extremo móviles con Detox sean excelentes.
Prerrequisitos- iOS/Android: MacOS Catalina o más reciente- Solo Android: Linux- Instalar antes de la masterclass
Next.js 13: Estrategias de Obtención de Datos
React Day Berlin 2022React Day Berlin 2022
53 min
Next.js 13: Estrategias de Obtención de Datos
Top Content
Workshop
Alice De Mauro
Alice De Mauro
- Introducción- Prerrequisitos para la masterclass- Estrategias de obtención: fundamentos- Estrategias de obtención – práctica: API de obtención, caché (estática VS dinámica), revalidar, suspense (obtención de datos en paralelo)- Prueba tu construcción y sírvela en Vercel- Futuro: Componentes de servidor VS Componentes de cliente- Huevo de pascua de la masterclass (no relacionado con el tema, destacando la accesibilidad)- Conclusión
Masterclass de Pruebas de API con Postman
TestJS Summit 2023TestJS Summit 2023
48 min
Masterclass de Pruebas de API con Postman
Top Content
WorkshopFree
Pooja Mistry
Pooja Mistry
En el panorama siempre en evolución del desarrollo de software, garantizar la fiabilidad y funcionalidad de las API se ha vuelto primordial. "Pruebas de API con Postman" es una masterclass completa diseñada para equipar a los participantes con los conocimientos y habilidades necesarios para sobresalir en las pruebas de API utilizando Postman, una herramienta poderosa ampliamente adoptada por profesionales en el campo. Esta masterclass profundiza en los fundamentos de las pruebas de API, avanza a técnicas de prueba avanzadas y explora la automatización, las pruebas de rendimiento y el soporte multiprotocolo, proporcionando a los asistentes una comprensión holística de las pruebas de API con Postman.
Únete a nosotros para esta masterclass para desbloquear todo el potencial de Postman para las pruebas de API, agilizar tus procesos de prueba y mejorar la calidad y fiabilidad de tu software. Ya seas un principiante o un probador experimentado, esta masterclass te equipará con las habilidades necesarias para sobresalir en las pruebas de API con Postman.
Monitoreo 101 para Desarrolladores de React
React Summit US 2023React Summit US 2023
107 min
Monitoreo 101 para Desarrolladores de React
Top Content
WorkshopFree
Lazar Nikolov
Sarah Guthals
2 authors
Si encontrar errores en tu proyecto frontend es como buscar una aguja en un pajar de código, entonces el monitoreo de errores de Sentry puede ser tu detector de metales. Aprende los conceptos básicos del monitoreo de errores con Sentry. Ya sea que estés ejecutando un proyecto de React, Angular, Vue, o simplemente JavaScript “vainilla”, mira cómo Sentry puede ayudarte a encontrar el quién, qué, cuándo y dónde detrás de los errores en tu proyecto frontend.
Nivel de la masterclass: Intermedio