Desarrollador Node.js: pregunta de entrevista
¿Cuándo usarías clustering en Node.js?
Clustering ejecuta varios procesos Node.js para usar varios núcleos y aislar fallos. Prefiere un orquestador externo cuando exista, conserva estado fuera de workers y drena conexiones al reiniciar.
Respuesta directa
Qué debe cubrir una buena respuesta
Cómo funciona
El módulo cluster bifurca el mismo servidor en varios procesos que comparten un puerto de escucha, así que un servicio Node puede usar todos los núcleos y un fallo en un worker no tumba a los demás. Encaja en despliegues en bare-metal o VM donde el gestor de procesos es el propio Node. Bajo Kubernetes o una plataforma que ya ejecuta un contenedor por núcleo y reinicia los fallidos, agrupar dentro del contenedor duplica ese trabajo. En cualquier modelo, los workers no deben guardar en memoria sesiones ni caché que otro worker necesite, y los reinicios deben drenar las conexiones en vuelo antes de salir.
Ejemplo
Un monolito en una VM de 8 núcleos corría bajo PM2 en modo cluster con ocho workers, sesiones en Redis y un apagado ordenado que dejaba de aceptar conexiones y esperaba hasta 10 s a que terminaran las solicitudes. Cuando el mismo servicio pasó a Kubernetes corrió un proceso por pod con una petición de CPU de un núcleo y dejó que el autoscaler horizontal añadiera pods.
Errores frecuentes
- Guardar sesiones o contadores de rate limit en memoria del proceso y obtener comportamiento inconsistente entre workers.
- Matar workers con SIGKILL durante despliegues y perder solicitudes activas.
- Ejecutar cluster dentro de un contenedor que ya se planifica por núcleo.
Una estructura útil para responder
Responde desde tu propia experiencia.
No memorices un guion: usa solo ejemplos que puedas explicar con honestidad en preguntas posteriores.
Abre el espacio de trabajo de escritorio y ensaya una respuesta clara con tus propias palabras.