Comencé a jugar con el servidor HTTP Node.js y realmente me gusta escribir Javascript del lado del servidor, pero algo me impide comenzar a usar Node.js para mi aplicación web.
Entiendo todo el concepto de E / S asíncrona, pero estoy algo preocupado por los casos extremos en los que el código de procedimiento requiere mucha CPU, como la manipulación de imágenes o la clasificación de grandes conjuntos de datos.
Según tengo entendido, el servidor será muy rápido para solicitudes simples de páginas web, como ver una lista de usuarios o ver una publicación de blog. Sin embargo, si quiero escribir un código muy intensivo de CPU (en el back-end de administración, por ejemplo) que genera gráficos o redimensiona miles de imágenes, la solicitud será muy lenta (unos segundos). Dado que este código no es asíncrono, todas las solicitudes que lleguen al servidor durante esos pocos segundos se bloquearán hasta que finalice mi solicitud lenta.
Una sugerencia fue usar Web Workers para tareas intensivas de CPU. Sin embargo, me temo que los trabajadores web harán que sea difícil escribir código limpio, ya que funciona al incluir un archivo JS separado. ¿Qué sucede si el código intensivo de la CPU se encuentra en el método de un objeto? Es un poco malo escribir un archivo JS para cada método que requiere mucha CPU.
Otra sugerencia fue generar un proceso hijo, pero eso hace que el código sea aún menos mantenible.
¿Alguna sugerencia para superar este obstáculo (percibido)? ¿Cómo se escribe código limpio orientado a objetos con Node.js mientras se asegura de que las tareas pesadas de la CPU se ejecuten de forma asíncrona?