Quiero ejecutar varias aplicaciones Node.js (Express) en el mismo servidor. Conozco dos métodos diferentes:
Uso de un proxy inverso para redirigir solicitudes a aplicaciones que escuchan en diferentes puertos. Por ejemplo
https://website.com/app1 --> https://localhost:1001 https://website.com/app2 --> https://localhost:1002
Uso de middleware express para ejecutar las aplicaciones en el mismo puerto ( Ejecución de varias aplicaciones de nodo (Express) en el mismo puerto ):
app .use('/app1', require('./app1/index').app) .use('/app2', require('./app2/index').app) .listen(8080);¿Cuáles son las ventajas y desventajas de estos dos métodos?
El mayor inconveniente de ejecutarlos en Express es que ambas aplicaciones compartirán recursos de Node. Un servidor manejará ambas solicitudes, por lo que todos sus recursos (Memoria, CPU, especialmente porque es de un solo subproceso) se compartirán. Esto también significa que cualquier problema de seguridad introducido en una aplicación ahora afecta a ambas aplicaciones.
Por el lado positivo, solo tiene 1 conjunto de gastos generales si su servidor físico es pequeño, aunque ese proceso de un solo nodo comparte sus recursos entre 2 aplicaciones, su servidor físico solo tiene que ejecutar un proceso de nodo.
Sin embargo, de manera óptima, cada aplicación debería tener su propio proceso de Nodo. Separa preocupaciones, seguridad, paquetes, recursos. Cuando se trata de la implementación, le permite escalarlos por separado, lo que facilita la depuración.
Básicamente, a menos que tenga una buena razón para no hacerlo, debe separarlas en aplicaciones de 2 nodos.