¿Cuándo usarías worker threads, procesos separados o colas para trabajo pesado?
¿Cuándo usarías worker threads, procesos separados o colas para trabajo pesado? en Node.js: criterios sobre asincronía y worker threads, errores comunes y re...
"¿Cuándo usarías worker threads, procesos separados o colas para trabajo pesado?" toca un punto muy concreto de Node.js: cómo tomar decisiones de asincronía sin esconder el problema bajo una abstracción vistosa.
Una respuesta senior se nota cuando nombras qué riesgo quieres reducir con asincronía en Node.js para "Cuándo usarías worker threads, procesos separados o colas para trabajo pesado", qué concesión aceptarías frente a worker threads y qué comprobarías antes de extender la decisión a todo el sistema.
Qué evalúa el entrevistador
- Si distingues qué parte de "Cuándo usarías worker threads, procesos separados o colas para trabajo pesado" pertenece a asincronía y cuál debería resolverse en worker threads.
- Si conviertes la respuesta en criterios observables: límites claros, impacto en el mantenimiento y forma de detectar regresiones.
- Si sabes ubicar efectos, limpiezas, cancelación y propagación de errores sin contaminar la parte declarativa del código.
Respuesta sólida
- Distingue qué parte puede seguir siendo pura y qué parte necesita sincronizarse con el mundo exterior.
- Describe cómo controlarías suscripciones, cancelación, reintentos o cierre de recursos para que el componente no acumule efectos zombis.
- Si hay asincronía, aclara qué harías con estados intermedios, errores y cambios rápidos de entrada.
Compromisos y errores comunes
- El error habitual es usar efectos para derivar datos que podrían calcularse de forma pura o para tapar un mal diseño de dependencias.
- Sin cancelación ni limpieza es muy fácil dejar trabajo en vuelo, respuestas tardías o cierres obsoletos.
Ejemplo de código
No se trata de memorizar esta implementación, sino de enseñar cómo ordenar el flujo de asincronía en Node.js sin mezclar responsabilidades ni perder de vista worker threads.
import { pipeline } from 'node:stream/promises';
import { createReadStream, createWriteStream } from 'node:fs';
import { createGzip } from 'node:zlib';
await pipeline(
createReadStream("server.log"),
createGzip(),
createWriteStream("server.log.gz"),
);
En entrevista yo usaría un ejemplo de este tamaño para "Cuándo usarías worker threads, procesos separados o colas para trabajo pesado": suficiente para demostrar criterio y lo bastante pequeño como para discutir riesgos y variantes sin perderse.
Ejemplo o caso real
Yo lo bajaría a un escenario reconocible de Node.js: una pieza donde "Cuándo usarías worker threads, procesos separados o colas para trabajo pesado" aparece de forma recurrente, ya ha dejado señales en revisión o en soporte y mezcla asincronía con worker threads. Si la decisión mejora claridad, observabilidad y velocidad de cambio en ese trozo, entonces merece escalarla; si no, la dejaría local y documentada.
Frase corta de entrevista
Primero aclaro qué problema resuelvo con asincronía y luego elijo la técnica; no al revés.
Marcarla como leída actualiza tu progreso.