Aplicando los principios de React a una base de datos en la nube

Rate this content
Bookmark

¿Cómo sería un backend si estuviera diseñado pensando en las aplicaciones modernas de React? ¿Qué podría hacer la base de datos si siguiera los principios fundamentales de React? Aprende sobre un nuevo enfoque para construir aplicaciones fullstack con una base de datos reactiva en esta charla relámpago.

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

Michal Srb
Michal Srb
7 min
14 Jun, 2024

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Los principios de React pueden desmoronarse para aplicaciones full-stack, pero Convex ha construido un backend y una base de datos para abordar esto. Los cinco principios de React discutidos incluyen reactividad, consistencia, escrituras superpuestas y almacenamiento en caché. La base de datos de Convex garantiza consistencia, maneja escrituras superpuestas con transacciones y invalida automáticamente las cachés basadas en las escrituras relevantes. Convex combina lo mejor de las bases de datos SQL y NoSQL y aplica los principios de React para simplificar el desarrollo de aplicaciones y mejorar la experiencia del usuario.

1. Introducción a Convex y los principios de React

Short description:

React ha revolucionado la forma en que construimos interfaces interactivas para nuestras aplicaciones. Convex ha construido un backend y una base de datos que lleva los principios de React al desarrollador full-stack y a la experiencia del usuario. El primer principio es la reactividad, lo que te permite construir puntos finales tan reactivos como tu estado. El segundo principio es la consistencia, asegurando una vista consistente incluso con obtenciones de datos separadas. El tercer principio trata sobre las escrituras superpuestas, garantizando actualizaciones correctas incluso con múltiples actualizaciones de estado.

Hola a todos. Soy Michael. Soy un ingeniero de software en Convex. He estado construyendo aplicaciones full-stack durante más de 15 años. Y como todos ustedes probablemente saben, React ha revolucionado la forma en que construimos interfaces interactivas para nuestras aplicaciones.

Pero cuando se trata de construir aplicaciones full-stack para múltiples usuarios que interactúan entre sí, los principios de React que nos ayudan a construir excelentes interfaces se desmoronan un poco. Así que en Convex, nos propusimos construir un backend y una base de datos que lleve estos principios al desarrollador full-stack y a la experiencia del usuario. Y hoy hablaré sobre cinco de estos principios de React, y cada uno resuelve un problema que estoy seguro de que muchos de ustedes han encontrado.

Entonces, el primer principio es la reactividad. Vamos a construir una aplicación de tareas en React, la demostración favorita de todos. Entonces, ¿qué sucede cuando toco una tarea y presiono enter? Actualizo mi estado y React renderiza automáticamente la lista de tareas. Súper fácil. Pero, ¿qué pasa si quiero almacenar la lista de tareas en una base de datos? Necesitaré un punto final de lectura y un punto final de escritura, y cuando presiono enter, llamo a mi punto final de escritura, pero nada sucede automáticamente. Tendré que indicarle a React o a mi framework que vuelva a obtener el punto final de lectura, y esto puede volverse bastante difícil y complejo a medida que las aplicaciones crecen en complejidad, y ni siquiera funcionará si otro usuario es el que agrega la tarea a la lista. Con Convex, puedes construir puntos finales que son tan reactivos como tu estado. En este ejemplo, simplemente escribo la tarea en la base de datos, y la base de datos se encarga de determinar que la lista de tareas necesita actualizarse, envía las actualizaciones a todos los clientes y esos desencadenan que React se vuelva a renderizar automáticamente. Y eso es todo lo que se necesita.

El segundo principio es la consistencia. No sé ustedes, pero las interfaces inconsistentes me frustran. ¿Alguna vez has estado en Slack o Instagram y hay un distintivo rojo y haces clic en ese icono y abres una lista y no hay nada? Bueno, la razón por la que eso sucede es porque ese distintivo rojo y la lista en la bandeja están alimentados por diferentes puntos finales de backend y se obtienen por separado. Así que el propio React del lado del cliente no tiene este problema. Si tienes algún estado y luego renderizas un árbol de componentes de React, la vista que obtienes siempre es consistente. Pero una vez que agregamos una base de datos y separamos las obtenciones de datos, es posible que obtengas una vista inconsistente de tu base de datos. Convex, por otro lado, siempre es consistente. En este ejemplo, cuando los datos cambian, la base de datos determina que esas dos lecturas necesitan actualizarse y envía la actualización al cliente y luego el cliente instruye nuevamente a React para renderizar un resultado consistente en un solo paso. El tercer principio tiene que ver con las escrituras superpuestas. El ejemplo más simple en el que puedes demostrar esto es incrementar un contador. Necesitas el valor actual y luego actualizas el contador al valor actual más uno. Y en React, podemos asegurarnos de que esto siempre funcione correctamente incluso si hay múltiples lugares donde se puede actualizar el estado, múltiples actualizaciones de estado juntas pasando una función de actualización a la función de configuración. React luego ejecuta todas las actualizaciones de estado en serie para que dos actualizaciones no puedan arruinar la lógica de la otra.

1. Introducción a los principios de React y Convex

Short description:

Hola a todos. Soy Michael, un ingeniero de software en Convex. React revolucionó el desarrollo front-end, pero sus principios se desmoronan para aplicaciones full-stack con interacciones de múltiples usuarios. En Convex, construimos un backend y una base de datos para abordar esto. Hoy, hablaré sobre cinco principios de React, cada uno resolviendo problemas comunes. El primero es la reactividad. Al utilizar Convex, puedes construir puntos finales reactivos que actualizan automáticamente el estado y desencadenan el re-renderizado de React.

Hola a todos. Soy Michael. Soy un ingeniero de software en Convex. He estado construyendo aplicaciones full-stack durante más de 15 años. Y como todos ustedes probablemente saben, React ha revolucionado la forma en que construimos interfaces interactivas para nuestras aplicaciones.

Pero cuando se trata de construir aplicaciones full-stack para múltiples usuarios que interactúan entre sí, los principios de React que nos ayudan a construir excelentes interfaces se desmoronan un poco. Así que en Convex, nos propusimos construir un backend y una base de datos que lleve estos principios al desarrollador full-stack y a la experiencia del usuario. Y hoy hablaré sobre cinco de estos principios de React, y cada uno resuelve un problema que estoy seguro de que muchos de ustedes han encontrado.

Entonces, el primer principio es la reactividad. Vamos a construir una aplicación de tareas en React, la demostración favorita de todos. Entonces, ¿qué sucede cuando toco una tarea y presiono enter? Actualizo mi estado y React renderiza automáticamente la lista de tareas. Súper fácil. Pero, ¿qué pasa si quiero almacenar la lista de tareas en una base de datos? Necesitaré un punto final de lectura y un punto final de escritura, y cuando presiono enter, llamo a mi punto final de escritura, pero nada sucede automáticamente. Tendré que indicarle a React o a mi framework que vuelva a obtener el punto final de lectura, y esto puede volverse bastante difícil y complejo a medida que las aplicaciones crecen en complejidad, y ni siquiera funcionará si otro usuario es el que agrega la tarea a la lista. Con Convex, puedes construir puntos finales que son tan reactivos como tu estado. En este ejemplo, simplemente escribo la tarea en la base de datos, y la base de datos se encarga de determinar que la lista de tareas necesita actualizarse, envía las actualizaciones a todos los clientes y esos desencadenan que React se vuelva a renderizar automáticamente. Y eso es todo lo que se necesita.

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

Serverless en Producción, Lecciones desde las Trincheras
Node Congress 2022Node Congress 2022
34 min
Serverless en Producción, Lecciones desde las Trincheras
This Talk provides valuable insights for those considering serverless in 2022, with a focus on troubleshooting and observability using Lumigo. It emphasizes the use of multiple AWS accounts and Org Formation for better control and scalability. Security considerations include securely loading secrets at runtime and implementing zero-trust networking. Optimizing Lambda performance is discussed, along with updates on serverless frameworks and the role of Terraform. The Talk also compares Honeycomb and Lumigo for observability in serverless applications.
Construyendo aplicaciones full-stack en el Edge
React Advanced 2022React Advanced 2022
9 min
Construyendo aplicaciones full-stack en el Edge
This Talk explores building full stack applications on the edge and the blurring line between front end and back end development. It discusses the benefits of using the JAMstack and APIs for scalable web development. The Talk also highlights the improvements in edge technology, such as serverless functions and efficient data storage, and the deployment of functions and durable objects on the edge network. Overall, the Talk emphasizes the importance of delivering high-quality experiences with low latency through edge computing.
Volteando la Nube al Revés
React Summit Remote Edition 2021React Summit Remote Edition 2021
36 min
Volteando la Nube al Revés
Today's Talk discusses turning the cloud inside out using GraphQL, highlighting its benefits such as type validation, real-time capabilities, and query efficiency. It explores the use of GraphQL as an API gateway, particularly in the context of microservices, third-party APIs, and blockchain. The talk also covers the efficient indexing and cloud integration offered by GraphQL, as well as building cloud APIs with AWS using API Gateway and AWS AppSync. It concludes with insights on deploying GraphQL APIs with tools like Amplify and CDK, and creating GraphQL APIs backed by Lambda and DynamoDB.
¡Un Cambio de Juego! Construyendo Búsqueda en tus Aplicaciones
Node Congress 2023Node Congress 2023
8 min
¡Un Cambio de Juego! Construyendo Búsqueda en tus Aplicaciones
Implementing the right strategies and tools, such as Apache Lucene, can improve search performance and user experience. The choice of analyzer affects search results, and query operators provide various search options. Relevant scoring is crucial for ranking documents based on relevance. Custom scoring can prioritize specific criteria. Consider analyzers, query operators, and scoring methods to optimize the search experience.
Ejecutando TypeScript en WebAssembly en la Nube
TypeScript Congress 2023TypeScript Congress 2023
10 min
Ejecutando TypeScript en WebAssembly en la Nube
Today's Talk discusses running TypeScript in WebAssembly on the cloud using Fermion's WebAssembly runtime. Fermion provides a serverless environment called Spin that allows for easy serverless application development in multiple languages. The process of creating a TypeScript serverless app with Spin involves installing Spin, creating a new app using the HTTP TS template, and testing it on localhost. To deploy the app, the 'spin deploy' command is used, and Fermi on cloud handles routing and makes the app accessible through a public URL.
Empujando los Límites Hasta el Edge
React Summit 2023React Summit 2023
9 min
Empujando los Límites Hasta el Edge
The Talk discusses the concept of the Edge and its role in content delivery networks (CDNs). CDNs are designed to improve the delivery of static content but cannot distribute dynamically generated content. Edge computing is a distributed network architecture that processes data close to the source or users, enabling personalization, geolocation-based dynamic content, AV testing, and content authentication. Frameworks like NexGIS, Bercel, Netlify, AWS, and Remix offer edge computing capabilities through edge functions or middleware, allowing execution of server-side logic closer to end users.

Workshops on related topic

Construye y Despliega un Backend con Fastify y Platformatic
JSNation 2023JSNation 2023
104 min
Construye y Despliega un Backend con Fastify y Platformatic
WorkshopFree
Matteo Collina
Matteo Collina
Platformatic te permite desarrollar rápidamente APIs GraphQL y REST con un esfuerzo mínimo. La mejor parte es que también te permite aprovechar todo el potencial de Node.js y Fastify cuando lo necesites. Puedes personalizar completamente una aplicación de Platformatic escribiendo tus propias características y complementos adicionales. En el masterclass, cubriremos tanto nuestros módulos de código abierto como nuestra oferta en la nube:- Platformatic OSS (open-source software) — Herramientas y bibliotecas para construir rápidamente aplicaciones robustas con Node.js (https://oss.platformatic.dev/).- Platformatic Cloud (actualmente en beta) — Nuestra plataforma de alojamiento que incluye características como aplicaciones de vista previa, métricas integradas e integración con tu flujo de Git (https://platformatic.dev/).
En este masterclass aprenderás cómo desarrollar APIs con Fastify y desplegarlas en la nube de Platformatic.
Despliegue de aplicaciones React Native en la nube
React Summit 2023React Summit 2023
88 min
Despliegue de aplicaciones React Native en la nube
WorkshopFree
Cecelia Martinez
Cecelia Martinez
Desplegar aplicaciones React Native manualmente en una máquina local puede ser complejo. Las diferencias entre Android e iOS requieren que los desarrolladores utilicen herramientas y procesos específicos para cada plataforma, incluidos los requisitos de hardware para iOS. Los despliegues manuales también dificultan la gestión de las credenciales de firma, las configuraciones de entorno, el seguimiento de las versiones y la colaboración en equipo.
Appflow es la plataforma de DevOps móvil en la nube creada por Ionic. Utilizar un servicio como Appflow para construir aplicaciones React Native no solo proporciona acceso a potentes recursos informáticos, sino que también simplifica el proceso de despliegue al proporcionar un entorno centralizado para gestionar y distribuir tu aplicación en múltiples plataformas. Esto puede ahorrar tiempo y recursos, permitir la colaboración, así como mejorar la confiabilidad y escalabilidad general de una aplicación.
En este masterclass, desplegarás una aplicación React Native para su entrega en dispositivos de prueba Android e iOS utilizando Appflow. También aprenderás los pasos para publicar en Google Play y Apple App Stores. No se requiere experiencia previa en el despliegue de aplicaciones nativas, y obtendrás una comprensión más profunda del proceso de despliegue móvil y las mejores prácticas para utilizar una plataforma de DevOps móvil en la nube para enviar rápidamente a gran escala.
Masterclass de GraphQL en la Nube con Neo4j Aura, Next.js y Vercel
GraphQL Galaxy 2021GraphQL Galaxy 2021
161 min
Masterclass de GraphQL en la Nube con Neo4j Aura, Next.js y Vercel
WorkshopFree
William Lyon
William Lyon
En este masterclass construiremos y desplegaremos una aplicación de GraphQL de pila completa utilizando Next.js, Neo4j y Vercel. Utilizando un grafo de conocimiento de artículos de noticias, primero construiremos una API de GraphQL utilizando las rutas de API de Next.js y la Biblioteca de GraphQL de Neo4j. A continuación, nos enfocaremos en el front-end, explorando cómo utilizar GraphQL para la obtención de datos con una aplicación de Next.js. Por último, exploraremos cómo agregar personalización y recomendación de contenido en nuestra API de GraphQL para servir artículos relevantes a nuestros usuarios, luego desplegaremos nuestra aplicación en la nube utilizando Vercel y Neo4j Aura.

Tabla de contenidos:
- Visión general de Next.js y cómo empezar con Next.js
- Rutas de API con Next.js y construcción de una API de GraphQL
- Utilizando la Biblioteca de GraphQL de Neo4j
- Trabajando con Apollo Client y obtención de datos de GraphQL en Next.js
- Despliegue con Vercel y Neo4j Aura
Infraestructura Declarativa: Repensando Cloud Native para JS
DevOps.js Conf 2024DevOps.js Conf 2024
29 min
Infraestructura Declarativa: Repensando Cloud Native para JS
Workshop
André Eriksson
André Eriksson
En esta masterclass descubriremos qué significa Infraestructura Declarativa y cómo puede funcionar en TypeScript para expresar de manera natural conceptos de sistemas distribuidos de alto nivel (como servicios backend, llamadas a API, consultas a bases de datos, mensajería Pub/Sub, almacenamiento en caché y más), a través del poder del análisis estático y la generación de código.El resultado es un proceso de DevOps completamente reinventado, con aprovisionamiento automático de infraestructura y observabilidad integrada, que se implementa directamente en tu propia nube.
Tabla de contenidos:- Introducción- Evolución del desarrollo backend, desde servidores hasta el mundo nativo de la nube actual impulsado por DevOps y GitOps- ¿Qué es Cloud Native y cómo construimos aplicaciones backend modernas? (Mostrando una arquitectura de microservicios impulsada por Express.js y Terraform)- ¿Qué es Infraestructura Declarativa? ¿Cómo se ve el espacio?- ¿Qué problemas resuelve en comparación con las prácticas tradicionales de DevOps?- ¿Cómo se relaciona con Terraform/AWS CDK para el aprovisionamiento de infraestructura?- ¿Cuáles son las desventajas?- Construyendo un backend Cloud Native con Infraestructura Declarativa
Cómo solucionar errores de API y reducir MTTD/R
Node Congress 2021Node Congress 2021
149 min
Cómo solucionar errores de API y reducir MTTD/R
Workshop
Gal Bashan
Gal Bashan
Los beneficios de Node.js para desarrollar aplicaciones en tiempo real a gran escala son muy conocidos. A medida que las arquitecturas de Node.js se vuelven más complejas, la visualización de su arquitectura basada en microservicios es crucial. Sin embargo, la visualización de los microservicios es increíblemente compleja debido a la escala y las transacciones entre ellos. En este masterclass, aprenderás cómo aprovechar los mapas de servicios para comprender instantáneamente tu arquitectura y solucionar cualquier error de API.

Escribiremos una aplicación Express simple y exploraremos las mejores prácticas al usar Express. Luego, desplegaremos la aplicación en AWS, integraremos el entorno con Epsagon y profundizaremos en varias características de la plataforma para permitir la detección inmediata y la solución rápida de errores de la aplicación. Objetivos: Visualizar tu arquitectura, monitorear tus aplicaciones, reducir tu tiempo medio de detección y recuperación (MTTD y MTTR).
¿Quién debería asistir?
DevOps, Ingenieros, Arquitectos de Cloud, IT, Desarrolladores de Software, Arquitectos y Ingenieros de Soluciones, SREs y cualquier persona que ejecute aplicaciones basadas en microservicios (Kubernetes, contenedores, funciones sin servidor, y más) en la nube.

PrerrequisitosPreferimos usar VSCode para una mejor experiencia (otros IDE también son válidos)Instalar previamente npm y node        Cuenta de AWS preexistente: puedes crear una cuenta gratuita aquí        Los asistentes pueden crear una cuenta de Epsagon con anticipación aquí, no es obligatorio