Construyendo Flujos de Trabajo Duraderos Desde Cero en JavaScript

Bookmark
Rate this content

Los flujos de trabajo duraderos - flujos de trabajo que registran su estado para recuperarse automáticamente de fallos - permiten a los desarrolladores construir código confiable más rápido y reducir drásticamente la gravedad de los incidentes de producción. La mayoría de los sistemas de flujo de trabajo requieren que configures un montón de infraestructura, ¡pero eso no es necesario! En esta charla, te mostraremos cómo construir flujos de trabajo duraderos en puro JavaScript, como una biblioteca que cualquier aplicación puede importar.

This talk has been presented at JSNation US 2025, check out the latest edition of this JavaScript Conference.

Peter Kraft
Peter Kraft
18 min
20 Nov, 2025

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Peter discute la construcción de flujos de trabajo duraderos en puro JavaScript, destacando los desafíos en la creación de sistemas confiables, especialmente en aplicaciones complejas como Money Transfer. Las fallas pueden ocurrir por varias razones, incluyendo fallos de proceso, problemas de recursos, tiempos de espera y fallos de API. Los flujos de trabajo duraderos implican el registro de puntos de control para la recuperación, tradicionalmente involucrando sistemas de orquestación externos pesados. Diseñar una biblioteca de flujo de trabajo en JavaScript apunta a la simplicidad y durabilidad, permitiendo el registro de puntos de control directamente en los servidores de aplicaciones. Implementar la biblioteca incluye puntos de control para la seguridad, recuperación y mantenimiento de la integridad del flujo de trabajo.

1. Building Durable Workflows in JavaScript

Short description:

Peter discute la construcción de flujos de trabajo duraderos en JavaScript puro, destacando los desafíos en la creación de sistemas confiables, especialmente en aplicaciones complejas como Money Transfer. Las fallas pueden ocurrir por varias razones, incluyendo bloqueos de procesos, problemas de recursos, tiempos de espera y fallas de API. Reiniciar procesos fallidos puede llevar a la corrupción de datos o al desperdicio de recursos, lo que requiere soluciones de recuperación complejas.

Hola, soy Peter, y hoy quiero hablarles sobre cómo pueden construir flujos de trabajo duraderos desde cero en JavaScript puro. Así que todos ustedes son desarrolladores, y saben lo difícil que es construir sistemas verdaderamente confiables. Es difícil hacer que sus aplicaciones sean confiables porque cuando están construyendo una aplicación compleja, casi cualquier paso puede romperse en cualquier lugar. Si están construyendo algo como Money Transfer, por ejemplo, tienen que preocuparse de que su aplicación se rompa, como cuando comienzan a transferir, mientras están en medio de la transferencia, al final, cuando están tratando de enviar una confirmación. Y las cosas pueden romperse por casi cualquier razón.

Las aplicaciones pueden romperse y fallar porque son bloqueos de procesos, porque se quedan sin recursos o encuentran un error. Pueden fallar debido a tiempos de espera, porque alguien tarda demasiado en responder. Pueden fallar porque una API externa que utilizan se descompone, porque está limitada por tasa, porque falla transitoriamente, porque tiene una interrupción. Y, por supuesto, las fallas son una preocupación aún mayor si están operando a gran escala, donde simplemente hay más cosas que pueden fallar. O si están usando IA, que muchas personas están haciendo hoy en día, porque la IA es un poco inherentemente frágil, y los proveedores de IA, los proveedores de modelos en los que confiamos, frecuentemente tienen problemas e interrupciones que pueden romper las aplicaciones de IA.

Si algo falla, lo fácil es volver a intentar desde el principio, reiniciar lo que falló. Pero a menudo no pueden hacer eso. Si están reiniciando un proceso de negocio, como un Money Transfer desde el principio, están arriesgando algún tipo de corrupción o duplicación, donde transfieren dinero dos veces, o reservan una cita dos veces. Si están tratando de reiniciar una tarea realmente grande, entonces están arriesgando desperdiciar recursos de cómputo o ser increíblemente lentos. Así que a menudo, en lugar de simplemente reiniciar algo que falla, tienen que implementar un código de recuperación complicado que determine exactamente cuál es la falla, y trate de remediarla directamente. Y ese tipo de cosas son difíciles de escribir.

2. Implementing Lightweight Durable Workflows

Short description:

Los flujos de trabajo duraderos implican la creación de puntos de control para recuperar programas en caso de fallo, similar a los puntos de guardado en videojuegos. Útiles para diversas aplicaciones, son complejos de integrar en aplicaciones JavaScript. La arquitectura tradicional de flujos de trabajo duraderos implica orquestación externa con sistemas pesados, altas dependencias y sobrecarga de latencia.

Así que una nueva herramienta que realmente puede ayudar con esto son los flujos de trabajo duraderos. Así que la idea detrás de los flujos de trabajo duraderos es que regularmente creas puntos de control del estado de tu programa. De modo que si algo falla, puedes usar esos puntos de control para recuperar tu programa desde su último paso completado. Y puedes pensar en los flujos de trabajo y sus puntos de control como funcionando mucho como los puntos de guardado en un videojuego, donde si estás jugando, puedes guardar regularmente, de modo que si mueres, puedes recargar desde el último guardado. Y cuando estás ejecutando un flujo de trabajo duradero, estás creando puntos de control en cada paso, de modo que si tu programa falla, puedes recargar, reanudar, recuperar desde el último paso completado.

Así que este tipo de flujos de trabajo son realmente útiles para todo tipo de aplicaciones, para procesos de negocio importantes, para pipelines de CI, para pipelines de datos, y hoy en día también para agentes. Así que hay muchos sistemas de flujos de trabajo por ahí, pero la mayoría de ellos son bastante grandes y complicados. No son fáciles de integrar en una aplicación JavaScript. La arquitectura clásica para flujos de trabajo duraderos es lo que me gusta llamar orquestación externa. Y la idea aquí es que tienes una superficie de orquestador central que orquesta tus flujos de trabajo. Y si quieres ejecutar un flujo de trabajo, ahora ejecutas el flujo de trabajo y no en tu propia aplicación JavaScript, sino en el servicio.

Ejemplos de estos servicios incluyen AWS Step Functions, Airflow, Temporal, ya sabes, esos tipos de sistemas. Y luego la forma en que funcionan es que tu servidor envía una solicitud al servicio de flujo de trabajo para iniciar un flujo de trabajo. El servicio de flujo de trabajo despacha el primer paso en el flujo de trabajo a un trabajador. El trabajador ejecuta la tarea. El servicio despacha el segundo paso y así sucesivamente hasta que cada paso ha sido despachado y el flujo de trabajo está terminado. Estos son sistemas grandes y pesados y funcionan, pero requieren que asumas grandes dependencias, añadas nuevos servicios, re-arquitectures tu aplicación. También pueden tener una alta sobrecarga de latencia desde el despacho de pasos.

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

Escalando con Remix y Micro Frontends
Remix Conf Europe 2022Remix Conf Europe 2022
23 min
Escalando con Remix y Micro Frontends
Top Content
This talk discusses the usage of Microfrontends in Remix and introduces the Tiny Frontend library. Kazoo, a used car buying platform, follows a domain-driven design approach and encountered issues with granular slicing. Tiny Frontend aims to solve the slicing problem and promotes type safety and compatibility of shared dependencies. The speaker demonstrates how Tiny Frontend works with server-side rendering and how Remix can consume and update components without redeploying the app. The talk also explores the usage of micro frontends and the future support for Webpack Module Federation in Remix.
Entendiendo la Arquitectura Fiber de React
React Advanced 2022React Advanced 2022
29 min
Entendiendo la Arquitectura Fiber de React
Top Content
This Talk explores React's internal jargon, specifically fiber, which is an internal unit of work for rendering and committing. Fibers facilitate efficient updates to elements and play a crucial role in the reconciliation process. The work loop, complete work, and commit phase are essential steps in the rendering process. Understanding React's internals can help with optimizing code and pull request reviews. React 18 introduces the work loop sync and async functions for concurrent features and prioritization. Fiber brings benefits like async rendering and the ability to discard work-in-progress trees, improving user experience.
Thinking Like an Architect
Node Congress 2025Node Congress 2025
31 min
Thinking Like an Architect
Top Content
In modern software development, architecture is more than just selecting the right tech stack; it involves decision-making, trade-offs, and considering the context of the business and organization. Understanding the problem space and focusing on users' needs are essential. Architectural flexibility is key, adapting the level of granularity and choosing between different approaches. Holistic thinking, long-term vision, and domain understanding are crucial for making better decisions. Effective communication, inclusion, and documentation are core skills for architects. Democratizing communication, prioritizing value, and embracing adaptive architectures are key to success.
Componentes de Full Stack
Remix Conf Europe 2022Remix Conf Europe 2022
37 min
Componentes de Full Stack
Top Content
RemixConf EU discussed full stack components and their benefits, such as marrying the backend and UI in the same file. The talk demonstrated the implementation of a combo box with search functionality using Remix and the Downshift library. It also highlighted the ease of creating resource routes in Remix and the importance of code organization and maintainability in full stack components. The speaker expressed gratitude towards the audience and discussed the future of Remix, including its acquisition by Shopify and the potential for collaboration with Hydrogen.
El Lado Oscuro de los Micro-Frontends
React Advanced 2025React Advanced 2025
29 min
El Lado Oscuro de los Micro-Frontends
In the Talk, various key points were discussed regarding micro-front-end architecture. These included challenges with micro-intents, common mistakes in system design, the differences between micro-intents and components, granularity in software architecture, optimizing micro-front-end architecture, efficient routing and deployment strategies, edge computing strategies, global state and data sharing optimization, managing data context, governance and fitness functions, architectural testing, adaptive growth, value of micro-frontends, repository selection, repo structures, and web component usage.

Workshops on related topic

IA a demanda: IA sin servidor
DevOps.js Conf 2024DevOps.js Conf 2024
163 min
IA a demanda: IA sin servidor
Top Content
Featured WorkshopFree
Nathan Disidore
Nathan Disidore
En esta masterclass, discutimos los méritos de la arquitectura sin servidor y cómo se puede aplicar al espacio de la IA. Exploraremos opciones para construir aplicaciones RAG sin servidor para un enfoque más lambda-esque a la IA. A continuación, nos pondremos manos a la obra y construiremos una aplicación CRUD de muestra que te permite almacenar información y consultarla utilizando un LLM con Workers AI, Vectorize, D1 y Cloudflare Workers.
Masterclass de alto rendimiento Next.js
React Summit 2022React Summit 2022
50 min
Masterclass de alto rendimiento Next.js
Workshop
Michele Riva
Michele Riva
Next.js es un marco convincente que facilita muchas tareas al proporcionar muchas soluciones listas para usar. Pero tan pronto como nuestra aplicación necesita escalar, es esencial mantener un alto rendimiento sin comprometer el mantenimiento y los costos del servidor. En este masterclass, veremos cómo analizar el rendimiento de Next.js, el uso de recursos, cómo escalarlo y cómo tomar las decisiones correctas al escribir la arquitectura de la aplicación.
Model Context Protocol (MCP) Deep Dive: 2-Hour Interactive Masterclass
AI Coding SummitAI Coding Summit
86 min
Model Context Protocol (MCP) Deep Dive: 2-Hour Interactive Masterclass
Workshop
Stepan Suvorov
Stepan Suvorov
Únete a una sesión enfocada de 2 horas que cubre el propósito de MCP, su arquitectura, implementación práctica de servidores y direcciones futuras. Diseñado para desarrolladores y arquitectos de sistemas que buscan integrar datos contextuales con modelos de ML de manera efectiva. Agenda:- Introducción & ¿Por qué MCP? Desafíos clave que MCP resuelve y beneficios principales.- Profundización en la Arquitectura: componentes, interacciones, principios de escalabilidad. - Construyendo tu propio Servidor MCP: recorrido guiado con fragmentos de código y mejores prácticas; demostración en vivo o revisión de código.- Futuro de los Desarrollos de MCP: potenciales mejoras, tendencias emergentes, escenarios del mundo real.
Puntos Clave:- Comprensión clara del razonamiento detrás de MCP.- Perspectiva sobre patrones de diseño y consideraciones de escalado.- Pasos prácticos para implementar un servidor prototipo.- Conciencia de las tendencias futuras y cómo aplicar MCP en proyectos.