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

This ad is not shown to multipass and full ticket holders
React Summit US
React Summit US 2025
November 18 - 21, 2025
New York, US & Online
The biggest React conference in the US
Learn More
In partnership with Focus Reactive
Upcoming event
React Summit US 2025
React Summit US 2025
November 18 - 21, 2025. New York, US & Online
Learn more
Bookmark
Rate this content

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

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

Short description:

React ha revolucionado la forma en que construimos interfaces interactivas. Convex resuelve el problema de construir aplicaciones full-stack para múltiples usuarios. Los principios de React se desmoronan cuando se trata de construir aplicaciones full-stack. Convex introduce cinco principios de React. El primer principio es la reactividad, que permite actualizaciones automáticas. El segundo principio es la consistencia, asegurando una interfaz de usuario consistente. El tercer principio trata sobre las escrituras superpuestas y garantiza actualizaciones de estado correctas en 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 de 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

Short description:

React ha revolucionado la forma en que construimos interfaces interactivas. Sin embargo, cuando se trata de construir aplicaciones full-stack para múltiples usuarios, los principios de React se desmoronan. Convex resuelve este problema construyendo un backend y una base de datos reactivos. El primer principio es la reactividad, donde Convex permite construir puntos finales reactivos que actualizan automáticamente el cliente.

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

2. Transacciones, Caché y API de Base de Datos

Short description:

Las transacciones en React son económicas y garantizan que ninguna escritura concurrente pueda afectar su lógica. La caché en el backend es difícil debido a la invalidación automática de la caché. El principio de React de ser simplemente JavaScript proporciona simplicidad, composabilidad y seguridad de tipos. La API de la base de datos Convex es simple, componible y completamente tipada. Aplicar estos principios al stack completo simplifica el desarrollo de aplicaciones y permite una mejor experiencia de usuario. El backend Convex es completamente de código abierto y viene con un panel de control y varias características.

Pero en una base de datos, que puede tener muchas tablas, cada una con muchas filas, no puedes simplemente ejecutar en serie cada mutación. Ahí es donde entran en juego las transacciones y resuelven este problema. El problema con los backends actuales es que las transacciones son costosas y, por lo tanto, opcionales. Es muy fácil escribir código de backend como este, y que falle, no en las pruebas, no durante el desarrollo, sino solo en producción cuando obtienes suficiente volumen de escritura para que esas escrituras concurrentes arruinen la lógica de los demás.

React está diseñado para que las transacciones sean económicas. Esto le permite requerir que cada punto final que escribe en la base de datos se ejecute como una transacción automáticamente, asegurando que ninguna escritura concurrente pueda afectar su lógica. El cuarto principio se relaciona con la caché. Un componente de React es una función pura de las props y el estado al UI renderizado. Y esto nos permite almacenar en caché fácilmente el renderizado de los componentes con el memo de React. Esto conduce a una mejor rendimiento. La caché es aún más importante en el backend, donde el propietario del servidor, a veces nosotros, paga el costo de la computación, no el usuario. Pero la caché en el backend hoy en día es difícil porque la invalidación de la caché no es automática. Tomemos el ejemplo de la lista de tareas pendientes. Queremos almacenar en caché la lista de tareas pendientes, pero cuando se agrega un nuevo elemento, un backend tradicional no sabe que necesita invalidar la caché. Nuevamente, debemos instruirlo manualmente.

Entonces, la base de datos Convex realiza un seguimiento de qué escrituras afectan a qué lecturas, y en Convex, los puntos finales de lectura son funciones puras del estado de la base de datos al resultado. Por lo tanto, si no ocurren escrituras relevantes, el punto final de lectura se puede almacenar en caché automáticamente y con una validación de caché perfecta. Y el último principio que mencionaré es que React es simplemente JavaScript, ¿verdad? Y este principio le otorga a React varias propiedades excelentes. Es altamente componible, fácil de construir sobre él y viene con una excelente verificación de tipos opcional, gracias a TypeScript, como hemos escuchado antes. Y JavaScript se está volviendo cada vez más popular en el backend, lo cual es genial, pero cuando se trata de bases de datos, las opciones más populares parecen ser Postgres y MySQL. Y SQL es lo opuesto a JavaScript. Es difícil de componer, difícil de construir sobre él y no tiene verificación de tipos estática en sí mismo. Y esta falta de composabilidad conduce a consultas complejas que la base de datos intenta optimizar, lo que luego conduce a un rendimiento impredecible. Y es por eso que la API de la base de datos Convex es simplemente JavaScript.

2. Consistencia, Escrituras Superpuestas y Caché

Short description:

El segundo principio es la consistencia. En React del lado del cliente, la vista siempre es consistente. Sin embargo, agregar una base de datos puede introducir inconsistencias. Convex, por otro lado, garantiza la consistencia actualizando el cliente con los cambios de datos en un solo paso. El tercer principio se refiere a las escrituras superpuestas, que se pueden resolver con transacciones. Los backends actuales a menudo carecen de transaccionalidad, lo que lleva a fallas lógicas. El cuarto principio se centra en la caché, donde la base de datos de Convex invalida automáticamente las cachés basadas en las escrituras relevantes, asegurando una validación perfecta de la caché.

El segundo principio es la consistencia. A mí, personalmente, me frustran las interfaces de usuario inconsistentes. ¿Alguna vez has estado en Slack o Instagram y hay un distintivo rojo y haces clic en ese ícono y abres una lista y no hay nada allí? Bueno, la razón de esto es porque ese distintivo rojo y la lista en la bandeja están alimentados por diferentes puntos finales del backend y se obtienen por separado. Por sí mismo, 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 consultas de datos, es posible que obtengas una vista inconsistente desde tu base de datos. En cambio, Convex 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, 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 se puede demostrar esto es incrementar un contador. Necesitas el valor actual y luego actualizas el contador sumándole uno al valor actual. Y en React, podemos asegurarnos de que esto siempre funcione correctamente incluso si hay varios lugares donde se puede actualizar el estado, múltiples actualizaciones de estado juntas pasando una función de actualización a la función set. React luego ejecuta todas las actualizaciones de estado en serie para que dos actualizaciones no puedan afectar la lógica de la otra.

Pero en una base de datos, que puede tener muchas tablas, cada una con muchas filas, no puedes simplemente ejecutar en serie cada mutación. Ahí es donde entran en juego las transacciones y resuelven este problema. El problema con los backends actuales es que las transacciones son costosas y, por lo tanto, opcionales. Es muy fácil escribir código de backend como este, y que falle, no en las pruebas, no durante el desarrollo, sino solo en producción cuando obtienes suficiente volumen de escritura para que esas escrituras concurrentes arruinen la lógica de los demás. React está diseñado para que las transacciones sean baratas. Esto le permite requerir que cada punto final que escribe en la base de datos se ejecute como una transacción automáticamente, asegurando que ninguna escritura concurrente pueda arruinar su lógica.

El cuarto principio se relaciona con la caché. Un componente de React es una función pura de las props y el estado al UI renderizado. Y esto nos permite almacenar en caché fácilmente el renderizado de los componentes con el memo de React. Esto conduce a una mejor rendimiento. La caché es aún más importante en el backend, donde el propietario del servidor, a veces nosotros, paga el costo de la computación, no el usuario. Pero la caché en el backend hoy en día es difícil porque la invalidación de la caché no es automática. Tomemos el ejemplo de la lista de tareas pendientes. Queremos almacenar en caché la lista de tareas pendientes, pero cuando se agrega un nuevo elemento, un backend tradicional no sabe que necesita invalidar la caché. Nuevamente, debemos instruirlo manualmente.

2. Principios de Convex: Transacciones, Caché y API

Short description:

Las transacciones resuelven el problema de ejecutar mutaciones en una base de datos. React garantiza transacciones baratas y caché. React es altamente componible y fácil de construir sobre él. La base de datos de Convex realiza un seguimiento de las escrituras y afecta las lecturas, lo que permite la caché automática. La API de la base de datos de Convex es simple, componible y completamente tipada. Convex combina lo mejor de las bases de datos SQL y NoSQL. Convex está construyendo un backend de código abierto con escalabilidad y varias características.

Pero en una base de datos, que puede tener muchas tablas, cada una con muchas filas, no puedes simplemente ejecutar en serie cada mutación. Ahí es donde entran en juego las transacciones y resuelven este problema. El problema con los backends actuales es que las transacciones son costosas y, por lo tanto, opcionales. Es muy fácil escribir código de backend como este, y que falle, no en las pruebas, no durante el desarrollo, sino solo en producción cuando obtienes suficiente volumen de escritura para que esas escrituras concurrentes arruinen la lógica de los demás. React está diseñado para que las transacciones sean baratas. Esto le permite requerir que cada punto final que escribe en la base de datos se ejecute como una transacción automáticamente, asegurando que ninguna escritura concurrente pueda arruinar su lógica. El cuarto principio se relaciona con la caché. Un componente de React es una función pura de las props y el estado al UI renderizado. Y esto nos permite almacenar en caché fácilmente el renderizado de los componentes con el memo de React. Esto conduce a una mejor rendimiento. La caché es aún más importante en el backend, donde el propietario del servidor, a veces nosotros, paga el costo de la computación, no el usuario. Pero la caché en el backend hoy en día es difícil porque la invalidación de la caché no es automática. Tomemos el ejemplo de la lista de tareas pendientes. Queremos almacenar en caché la lista de tareas pendientes, pero cuando se agrega un nuevo elemento, un backend tradicional no sabe que necesita invalidar la caché. Nuevamente, debemos instruirlo manualmente. Entonces, la base de datos de Convex realiza un seguimiento de qué escrituras afectan a qué lecturas, y en Convex, el punto final de lectura es una función pura del estado de la base de datos al resultado. Por lo tanto, si no ocurren escrituras relevantes, el punto final de lectura se puede almacenar en caché automáticamente y con una validación de caché perfecta. Y el último principio que mencionaré es que React es solo JavaScript, ¿verdad? Y este principio le otorga a React varias propiedades excelentes. Es altamente componible, fácil de construir sobre él y viene con una gran verificación opcional de tipos gracias a TypeScript, como hemos escuchado antes. Y JavaScript se está volviendo cada vez más popular en el backend, lo cual es genial, pero cuando se trata de bases de datos, las opciones más populares parecen ser Postgres y MySQL. Y SQL es lo opuesto a JavaScript. Es difícil de componer, difícil de construir sobre él y no tiene verificación de tipos estática en sí mismo. Y esta falta de composabilidad conduce a consultas complejas que la base de datos intenta optimizar, lo que luego conduce a un rendimiento impredecible. Y es por eso que la API de la base de datos de Convex es simplemente JavaScript. Es simple, altamente componible, fácil de construir sobre él y completamente tipado, lo que permite la seguridad de tipos de extremo a extremo hasta el cliente. Y Convex combina lo mejor de las bases de datos SQL y NoSQL al ser relacional y, sin embargo, no requerir que definas un esquema de antemano. Entonces, tomando estos cinco principios de React y aplicándolos a la pila completa, simplifica radicalmente la construcción de aplicaciones y permite una mejor UX. Y, por supuesto, este backend necesita escalar según tus necesidades. Así que estamos construyendo un backend así en Convex. Es completamente de código abierto, viene con un panel de control y un montón de características, búsqueda de texto, almacenamiento de archivos, programación, y más de lo que no tuve la oportunidad de hablar.

2. Consistencia y Convex

Short description:

Las interfaces de usuario inconsistentes pueden ser frustrantes, especialmente cuando diferentes partes de la interfaz de usuario son alimentadas por puntos finales de backend separados. Convex garantiza la consistencia al enviar actualizaciones juntas al cliente, lo que resulta en una vista consistente.

El segundo principio es la consistencia. No sé ustedes, pero las interfaces de usuario inconsistentes me frustran. ¿Alguna vez han estado en Slack o Instagram y hay un distintivo rojo y hacen clic en ese icono y abren una lista y no hay nada allí? Bueno, la razón de eso es porque ese distintivo rojo y la lista en la bandeja son alimentados por diferentes puntos finales de backend y se obtienen por separado. Entonces, el propio React del lado del cliente no tiene este problema. Si tienes algún estado y luego renderizas un árbol de componentes 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.

Por otro lado, Convex 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 junta al cliente, luego el cliente instruye nuevamente a React para renderizar un resultado consistente en un solo paso.

3. Convex Backend and Features

Short description:

El backend convex combina bases de datos SQL y NoSQL sin requerir una definición de esquema previa. Aplicar los principios de React al stack completo simplifica el desarrollo de aplicaciones y permite una mejor experiencia de usuario. El backend convex es completamente de código abierto y viene con un panel de control y varias características.

Es simple, altamente componible, fácil de construir sobre él y completamente tipado, lo que permite una seguridad de tipos de extremo a extremo hasta el cliente. Y convex combina lo mejor de las bases de datos SQL y NoSQL siendo relacional y sin requerir que definas un esquema previo.

Tomando estos cinco principios de React y aplicándolos al stack completo, simplifica radicalmente la construcción de aplicaciones y permite una mejor experiencia de usuario. Y, por supuesto, este backend necesita escalar según tus necesidades. Por eso estamos construyendo un backend así en convex. Es completamente de código abierto, viene con un panel de control y un montón de características, búsqueda de texto, almacenamiento de archivos, programación, y más de lo que no tuve la oportunidad de hablar.

Si estás interesado, échale un vistazo o ven y hazme una pregunta más tarde. Muchas gracias. Gracias. Gracias. Muchas gracias. Muchas gracias. Gracias. Muchas gracias. Muchas gracias. Muchas gracias. Muchas gracias. Muchas gracias. Muchas gracias.

3. Backend, React Principles, and Convex

Short description:

La base de datos de Convex realiza un seguimiento de las escrituras y lecturas, lo que permite el almacenamiento en caché automático y una validación perfecta. Las grandes propiedades de React incluyen ser altamente componibles, fáciles de construir y tener verificación de tipos opcional con TypeScript. La falta de capacidad de composición de SQL conduce a consultas complejas y un rendimiento impredecible. La API de la base de datos de Convex es simple, componible y completamente tipada, combinando lo mejor de las bases de datos SQL y NoSQL. Aplicar los principios de React al stack completo simplifica el desarrollo de aplicaciones y permite una mejor experiencia de usuario. Convex está construyendo un backend escalable, completamente de código abierto, con características como búsqueda de texto, almacenamiento de archivos y programación.

La base de datos de Convex realiza un seguimiento de qué escrituras afectan a qué lecturas, y en Convex, los puntos finales de lectura son funciones puras desde el estado de la base de datos hasta el resultado. Por lo tanto, si no ocurren escrituras relevantes, el punto final de lectura se puede almacenar en caché automáticamente y con una validación de caché perfecta.

Y el último principio que mencionaré es que React es solo JavaScript, ¿verdad? Y este principio le otorga a React varias propiedades excelentes. Es altamente componible, fácil de construir y viene con una excelente verificación de tipos opcional, gracias a TypeScript, como hemos escuchado antes.

Y JavaScript se está volviendo cada vez más popular en el backend, lo cual es genial, pero cuando se trata de bases de datos, las opciones más populares parecen ser Postgres y MySQL. Y SQL es lo opuesto a JavaScript. Es difícil de componer, difícil de construir y no tiene verificación de tipos estática en sí mismo. Y esta falta de capacidad de composición conduce a consultas complejas que la base de datos intenta optimizar, lo que luego conduce a un rendimiento impredecible.

Y por eso la API de la base de datos de Convex es simplemente JavaScript. Es simple, altamente componible, fácil de construir y completamente tipada, lo que permite una seguridad de tipo de extremo a extremo hasta el cliente. Y Convex combina lo mejor de las bases de datos SQL y NoSQL al ser relacional y, al mismo tiempo, no requerir definir un esquema de antemano.

Por lo tanto, tomar estos cinco principios de React y aplicarlos al stack completo simplifica radicalmente la construcción de aplicaciones y permite una mejor UX. Y, por supuesto, este backend necesita escalar según tus necesidades. Por eso estamos construyendo un backend así en Convex. Es completamente de código abierto, viene con un panel de control y un montón de características, búsqueda de texto, almacenamiento de archivos, programación y más de lo que no tuve la oportunidad de hablar. Así que si estás interesado, échale un vistazo o ven a hacerme una pregunta más tarde.

Muchas gracias. Gracias. Gracias. Muchas gracias. Muchas gracias. Gracias. Muchas gracias. Muchas gracias. Muchas gracias. Muchas gracias. Muchas gracias.

3. Convex: Siguientes Pasos y Agradecimiento

Short description:

Si estás interesado, échale un vistazo o ven a hacerme una pregunta más tarde. Muchas gracias.

Así que si estás interesado, échale un vistazo o ven a hacerme una pregunta más tarde. Muchas gracias. Gracias. Gracias. Muchas gracias. Muchas gracias. Gracias. Muchas gracias. Muchas gracias. Muchas gracias. Muchas gracias. Muchas gracias. Muchas gracias.

3. Overlapping Writes and Transactions

Short description:

React asegura el manejo correcto de las escrituras superpuestas ejecutando todas las actualizaciones de estado en serie. En las bases de datos, se necesitan transacciones para manejar mutaciones concurrentes. Sin embargo, los backends actuales hacen que las transacciones sean costosas y opcionales, lo que puede llevar a posibles fallas. Por otro lado, React hace que las transacciones sean económicas y requiere que los puntos finales que escriben en la base de datos se ejecuten como transacciones, asegurando la consistencia lógica.

El tercer principio tiene que ver con las escrituras superpuestas. El ejemplo más simple en el que se puede 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 afectar la lógica de la otra. Pero en una base de datos, que puede tener muchas tablas, cada una con muchas filas, no puedes simplemente ejecutar en serie cada mutación. Ahí es donde entran en juego las transacciones, y ellas resuelven este problema.

El problema con los backends actuales es que las transacciones son costosas y, por lo tanto, opcionales. Es muy fácil escribir código de backend de esta manera, y que falle, no en las pruebas, no durante el desarrollo, sino solo en producción cuando obtienes suficiente volumen de escritura para que esas escrituras concurrentes arruinen la lógica de las demás. React está diseñado para que las transacciones sean económicas. Esto le permite requerir que cada punto final que escribe en la base de datos se ejecute automáticamente como una transacción, asegurando que ninguna escritura concurrente pueda afectar su lógica.

4. Caching, JavaScript, and the Convex Backend

Short description:

La caché en React conduce a un mejor rendimiento. La caché en el backend es desafiante debido a la invalidación manual de la caché. La base de datos de Convex realiza un seguimiento de las escrituras y lecturas, lo que permite una caché automática y validada. El uso de JavaScript en React proporciona composabilidad y seguridad de tipos. Las bases de datos SQL carecen de composabilidad y verificación de tipos, a diferencia de JavaScript. La API de la base de datos de Convex permite la simplicidad, la composabilidad y la seguridad de tipos de extremo a extremo. Combina lo mejor de las bases de datos SQL y NoSQL, simplificando el desarrollo de aplicaciones. El backend de Convex es de código abierto, escalable y ofrece varias características.

El cuarto principio se relaciona con la caché. Un componente de React es una función pura de props y estado al UI renderizado. Y esto nos permite almacenar en caché fácilmente el renderizado de los componentes con el memo de React. Esto conduce a un mejor rendimiento. La caché es aún más importante en el backend, donde el propietario del servidor, a veces nosotros, paga el costo de la computación, no el usuario.

Pero la caché en el backend es difícil hoy en día porque la invalidación de la caché no es automática. Tomemos como ejemplo la lista de tareas pendientes. Queremos almacenar en caché la lista de tareas pendientes, pero cuando se agrega un nuevo elemento, un backend tradicional no sabe que necesita invalidar la caché. Nuevamente, necesitamos instruirlo manualmente.

Entonces, la base de datos de Convex realiza un seguimiento de qué escrituras afectan a qué lecturas, y en Convex, los puntos finales de lectura son funciones puras desde el estado de la base de datos hasta el resultado. Por lo tanto, si no ocurren escrituras relevantes, el punto final de lectura se puede almacenar en caché automáticamente y con una validación de caché perfecta. Y el último principio que mencionaré es que React es simplemente JavaScript, ¿verdad? Y este principio le otorga a React varias propiedades excelentes. Es altamente componible, fácil de construir sobre él y viene con una gran verificación de tipos opcional gracias a TypeScript, como hemos escuchado antes.

Y JavaScript se está volviendo cada vez más popular en el backend, lo cual es genial, pero cuando se trata de bases de datos, las opciones más populares parecen ser Postgres y MySQL. Y SQL es lo opuesto a JavaScript. Es difícil de componer, difícil de construir sobre él y no tiene verificación de tipos estática en sí mismo. Y esta falta de composabilidad conduce a consultas complejas que la base de datos intenta optimizar, lo que luego conduce a un rendimiento impredecible. Y es por eso que la API de la base de datos de Convex es simplemente JavaScript. Es simple, altamente componible, fácil de construir sobre él y completamente tipado, lo que permite una seguridad de tipos de extremo a extremo hasta el cliente.

Y Convex combina lo mejor de las bases de datos SQL y NoSQL al ser relacional y, sin embargo, no requerir que definas un esquema de antemano. Entonces, tomando estos cinco principios de React y aplicándolos a la pila completa, simplifica radicalmente la construcción de aplicaciones y permite una mejor UX. Y, por supuesto, este backend debe escalar según tus necesidades. Por eso estamos construyendo un backend así en Convex. Es completamente de código abierto, viene con un panel de control y un montón de características, búsqueda de texto, almacenamiento de archivos, programación, y más de lo que no tuve la oportunidad de hablar. Así que si estás interesado, échale un vistazo o ven a hacerme una pregunta más tarde. Muchas gracias. Gracias. Gracias. Muchas gracias. Muchas gracias. Gracias. Muchas gracias. Muchas gracias. Muchas gracias. Muchas gracias. Muchas gracias. Muchas gracias.

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

Construir y Desplegar un Backend Con Fastify & Platformatic
JSNation 2023JSNation 2023
104 min
Construir y Desplegar un Backend Con Fastify & Platformatic
Top Content
WorkshopFree
Matteo Collina
Matteo Collina
Platformatic te permite desarrollar rápidamente GraphQL y REST APIs con un esfuerzo mínimo. La mejor parte es que también te permite desatar todo el potencial de Node.js y Fastify siempre que lo necesites. Puedes personalizar completamente una aplicación de Platformatic escribiendo tus propias características y plugins adicionales. En la masterclass, cubriremos tanto nuestros módulos de Open Source 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 esta masterclass aprenderás cómo desarrollar APIs con Fastify y desplegarlas en la Platformatic Cloud.
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
Workshop
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