Construyendo Aplicaciones Multijugador con Cloudflare Workers y Durable Objects

Spanish audio is available in the player settings
Rate this content
Bookmark

Los Durable Objects, parte de la plataforma Cloudflare Workers, son la solución para un almacenamiento y coordinación fuertemente consistentes en el borde. En esta charla, aprenderás sobre los Durable Objects, por qué son adecuados para casos de uso colaborativos y cómo construir aplicaciones multijugador con ellos!

FAQ

Los Durable Objects en CloudFlare son una abstracción que aplica la filosofía serverless al estado y la coordinación. Permiten escribir una clase JavaScript con un método FetchHandler que se invoca en instancias de esa clase, facilitando la creación de aplicaciones colaborativas escalables como editores de documentos y servidores de juegos.

Los Durable Objects utilizan una API de almacenamiento persistente específica para cada instancia, basada en una interfaz de clave-valor con semánticas fuertemente consistentes. Esta API permite realizar operaciones de almacenamiento que son localmente coherentes y optimizadas para el rendimiento.

La plataforma de workers de CloudFlare permite ejecutar código JavaScript en una infraestructura global sin servidores, utilizando un tiempo de ejecución propio basado en el motor V8. Los workers son multitenant y ejecutan código en aislamientos V8, ofreciendo despliegue global inmediato y alta eficiencia en el arranque en frío.

Los Durable Objects aseguran la coordinación a través de un sistema de ID único global que permite a múltiples workers referenciar y interactuar con la misma instancia de un objeto duradero, garantizando así un punto de coordinación único y consistente para operaciones colaborativas.

El modelo de facturación para los Durable Objects se basa en la duración del tiempo que el objeto está manejando una solicitud activa. No se factura por tiempo de inactividad o cuando el objeto está dormido, solo por el tiempo de procesamiento activo.

Cada Durable Object es un único hilo de ejecución de JavaScript. Si un Durable Object individual necesita manejar una carga de trabajo significativa continuamente, puede no ser el enfoque adecuado. La plataforma está diseñada para aplicaciones que pueden dividirse en múltiples objetos duraderos con cargas moderadas.

Los Durable Objects utilizan 'IO Gates' que previenen condiciones de carrera y aseguran la consistencia del estado. Las puertas de entrada bloquean nuevos eventos mientras el objeto está esperando en el almacenamiento, y las puertas de salida previenen salidas de mensajes de red durante escrituras de almacenamiento pendientes.

Si un Durable Object está continuamente ocupado, puede experimentar retrasos en responder a nuevas solicitudes. Los Durable Objects tienen mecanismos de manejo de fallos que reinician el objeto en caso de que las operaciones de almacenamiento subyacente fallen o se excedan los tiempos de espera.

Matt Alonso
Matt Alonso
28 min
14 Apr, 2023

Comments

Sign in or register to post your comment.

Video Summary and Transcription

Los Durable Objects son parte del objetivo a largo plazo de CloudFlare para expandir las posibilidades de las aplicaciones en los workers, permitiendo la construcción de aplicaciones colaborativas escalables. Los Durable Objects proporcionan una forma de almacenar el estado global y coordinar aplicaciones multi-cliente. Pueden ser creados lo más cerca posible del usuario y tienen IDs únicos para el enrutamiento de solicitudes. Los Durable Objects tienen una API de almacenamiento persistente con semántica fuertemente consistente y compuertas de IO para prevenir errores de corrección. Son adecuados para aplicaciones colaborativas y pueden ser usados con WebSockets. El impacto en el rendimiento y las réplicas de lectura son consideraciones para acceder a los Durable Objects a nivel global.

1. Introducción a los Durable Objects

Short description:

Soy Matt Alonzo, un ingeniero de software en CloudFlare. Trabajo en el equipo de datos distribuidos de los trabajadores y tengo una amplia experiencia con los durable objects. Los Durable Objects son parte del objetivo a largo plazo de CloudFlare para expandir las posibilidades de las aplicaciones en los trabajadores. No son solo un producto de almacenamiento, sino también ideales para construir aplicaciones colaborativas escalables como editores de documentos, servidores de juegos y salas de chat.

Soy Matt Alonzo y soy un ingeniero de software en CloudFlare. Trabajo en el equipo de datos distribuidos de los trabajadores que mantiene los durable objects. Trabajé en CloudFlare durante casi tres años y pasé casi todo el tiempo trabajando en durable objects. Estoy muy familiarizado con ellos. Y los durable objects son parte de un objetivo a largo plazo para CloudFlare donde estamos tratando de expandir los tipos de aplicaciones que los clientes pueden construir sobre los trabajadores. Y los durable objects se han pensado como una especie de producto de almacenamiento que se añade a esto. Puedes almacenar estado-en-el-borde en los durable objects, pero hay mucho más en ellos que solo eso. Los durable objects también son realmente adecuados para construir aplicaciones colaborativas infinitamente escalables como editores de documentos, servidores de juegos y salas de chat, y esta charla es toda sobre analizar por qué.

2. Resumen de Workers y Durable Objects

Short description:

Voy a hablar sobre los workers, dar un rápido resumen. Hablaré sobre los durable objects, su API y coordinación. Tengo un estudio de caso y una demostración. Workers es la plataforma de JavaScript sin servidor de Cloudflare. Utiliza su propio tiempo de ejecución y se ejecuta a nivel mundial. Está implementado con aislamientos V8, lo que permite una ejecución de código eficiente. Así es como los workers pueden existir hoy.

Si alguien tiene alguna pregunta después de la charla, no dude en enviarme un correo electrónico o contactarme en mis redes sociales. Y entonces, voy a tratar algunos temas hoy. Voy a hablar sobre los workers, dar un rápido resumen de ellos. Voy a hablar sobre los durable objects, qué son, cómo se ve la API y luego voy a hablar sobre la coordinación. ¿Por qué son útiles los durable objects para la coordinación? ¿Por qué querrías usarlos? Y luego tengo un poco de un case study, una aplicación que construí sobre los durable objects, y luego si todo va bien, haré una demostración de ella.

Y entonces, workers es la plataforma JavaScript serverless de Cloudflare. La idea es que escribas un manejador de fetch como este de arriba, que toma un objeto de solicitud, hace algún trabajo y devuelve una respuesta. Y entonces tomas tu code de worker, lo subes a Cloudflare, y nosotros nos encargamos del resto. Esto es bastante similar a muchas otras plataformas serverless, pero hay algunas grandes diferencias con los workers. Los workers usan su propio tiempo de ejecución, y los workers no se ejecutan en regiones. Realmente, solo hay una región con los workers. Es la Tierra. Despliegas una vez, y tu code se ejecuta en cualquiera de las ubicaciones de red de Cloudflare en todo el mundo. Cuando usas workers, tu dominio también está utilizando los productos CDN de Cloudflare, y por lo tanto las consultas DNS a tu dominio devuelven una IP Anycast de Cloudflare. Cuando envías tráfico a una IP Anycast en una de las de Cloudflare, va a ir al centro de datos de Cloudflare más cercano, sin importar dónde estés en el mundo. Y entonces esto significa que cuando haces una solicitud a un worker de Cloudflare, se va a ejecutar cerca de ti en el centro de datos de Cloudflare más cercano, sin importar desde dónde estés haciendo la solicitud. Y este mapa aquí es un mapa del último que pude encontrar de todas las ubicaciones de Cloudflare alrededor del mundo. Como puedes ver, es bastante difícil estar lejos de un lugar donde los workers pueden ejecutarse, a menos que estés en medio de la selva o algo así.

Y entonces una parte central de poder ejecutar code de esta manera en el borde de Cloudflare es la forma en que los workers están implementados es muy diferente de otras plataformas serverless. Tenemos nuestro propio tiempo de ejecución de JavaScript construido sobre V8. Y este es el mismo motor de JavaScript utilizado por Node.js y Chromium. Y en lugar de implementar la multi-tenencia iniciando múltiples instancias de tiempo de ejecución como funcionan otras plataformas serverless, lo que hacen los workers es que implementamos la multi-tenencia con aislamientos V8. Esta es una característica de V8 que te permite ejecutar code separado, todo en el mismo proceso. Y entonces ejecutamos el code de varios clientes en el mismo proceso del sistema operativo, todos corren en diferentes aislamientos, y están completamente aislados entre sí, no pueden interferir con cada uno, cambiar el estado global, o algo así. Y entonces los aislamientos son mucho más baratos de iniciar que todo un proceso del sistema operativo. Y entonces cuando una solicitud para un worker en frío llega al tiempo de ejecución del worker, detectamos un nuevo aislamiento. Y esto solo toma unos pocos milisegundos, en comparación con cientos de milisegundos para iniciar en frío todo un tiempo de ejecución. Y esto es realmente importante para los workers. No sería posible para nosotros ejecutar todo un tiempo de ejecución por cliente en el Edge. Esta idea es cómo los workers son capaces de existir hoy.

QnA

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Viviendo al Límite
React Advanced Conference 2021React Advanced Conference 2021
36 min
Viviendo al Límite
React 18 introduce nuevas APIs para renderizar aplicaciones de forma asíncrona en el servidor, permitiendo un modelo más simple para diseñar y enviar interfaces de usuario. Cuando se implementa en plataformas de redes en el borde como Cloudflare Workers, podemos obtener mejoras dramáticas en el rendimiento y la experiencia del usuario en nuestras aplicaciones. En esta charla, Sunil demostrará y explicará este nuevo modelo de escribir aplicaciones React, con algunas ideas sobre las implicaciones para la obtención de datos, el estilo y la dirección general del ecosistema de React.
Acceso a la base de datos en el Edge con Cloudflare Workers y Prisma
Node Congress 2022Node Congress 2022
31 min
Acceso a la base de datos en el Edge con Cloudflare Workers y Prisma
Las funciones en el Edge están empujando los límites de la computación sin servidor, pero con nuevas herramientas surgen nuevos desafíos. Debido a sus limitaciones, las funciones en el Edge no permiten conectarse a bases de datos populares como PostgreSQL y MySQL. En esta charla, aprenderás cómo puedes conectar e interactuar con tu base de datos desde Cloudflare Workers utilizando el Proxy de Datos de Prisma.
Puedes consultar las diapositivas de la charla de Alex aquí.
Sitios web estáticos primero con Cloudflare Workers
Node Congress 2022Node Congress 2022
30 min
Sitios web estáticos primero con Cloudflare Workers
Los sitios web estáticos te brindan todo tipo de grandes beneficios. No tienes que preocuparte por la seguridad o la escalabilidad. Son simples de almacenar en caché, baratos de alojar y fáciles de mantener. ¡Pero a veces extraño todas las cosas divertidas que puedes hacer con solo un poco de estado! Combinando la plataforma Cloudflare Pages con Durable Objects y la API HTMLRewriter, ¡puedes tener tu pastel y comértelo también! Replicaremos una experiencia completa de WordPress con comentarios, publicaciones principales, botones de 'me gusta' y un contador de páginas. Todo en la plataforma gratuita de alojamiento de sitios estáticos de Cloudflare.
Puedes consultar las diapositivas de la charla de Jonathan aquí.
El Futuro de los Runtimes de JavaScript
Node Congress 2022Node Congress 2022
34 min
El Futuro de los Runtimes de JavaScript
JavaScript nació en el navegador, Node lo llevó al servidor abrazando primitivas de Unix y E/S asíncrona, y recientemente Cloudflare Workers & Deno Deploy lo llevaron al borde. Veamos hacia dónde se dirigen los runtimes de JavaScript y cómo darán forma al software que escribimos.
Automatiza el Navegador con la API de Renderizado del Navegador de Workers
JSNation 2024JSNation 2024
20 min
Automatiza el Navegador con la API de Renderizado del Navegador de Workers
En esta charla, exploraremos cómo la API de Renderizado del Navegador puede automatizar tareas del navegador, liberando a los desarrolladores del trabajo manual repetitivo. Comenzaremos con una visión general de Cloudflare Workers y cómo permiten ejecutar JavaScript en el borde. Luego, discutiremos la automatización del navegador en detalle, cubriendo cómo interactuar con el DOM, completar formularios y extraer datos de páginas web. Mostraremos ejemplos del mundo real de cómo la automatización del navegador con Cloudflare Workers puede mejorar la experiencia del usuario de las aplicaciones web, aumentar la productividad y automatizar tareas, como generar capturas de pantalla y PDFs de páginas web, probar aplicaciones web y realizar auditorías de rendimiento. Al final de esta charla, los asistentes obtendrán una mejor comprensión de cómo utilizar la API de Renderizado del Navegador para automatizar tareas del navegador y llevar sus habilidades de desarrollo web al siguiente nivel.
Construyendo aplicaciones full-stack en el Edge
React Advanced Conference 2022React Advanced Conference 2022
9 min
Construyendo aplicaciones full-stack en el Edge
Escalar y mantener aplicaciones puede ser un dolor, especialmente cuando se piensa en cómo construir para lograr una experiencia de usuario de la que estés orgulloso. Con todas estas partes en constante cambio para considerar, es importante abstraer partes de tus aplicaciones a servicios globales confiables. En esta charla, discutiremos algunos de los servicios que Cloudflare proporciona y el papel que desempeñan en la mejora de la experiencia general del desarrollador y del usuario.

Workshops on related topic