Práctica recomendada para desarrollar aplicaciones Node.js

Al desarrollar aplicaciones Node.js , debe considerar la posibilidad de utilizar una variable de entorno para externalizar la configuración de un recurso. También debe tener en cuenta el manejo de la señal SIGTERM en la aplicación Node.js para permitirle finalizar de forma correcta.

Utilización de variables de entorno

Si una aplicación Node.js accede a un recurso, como un puerto TCP/IP o URI o base de datos, se recomienda externalizar la configuración de dicho recurso utilizando una variable de entorno. Esto permite especificar distintos valores cuando la aplicación se despliega en entornos de desarrollo, prueba y producción.

Por ejemplo, el puerto TCP/IP para escuchar peticiones HTTP puede especificarse en el perfil de aplicación CICS Node.js :
PORT=8080
La aplicación Node.js puede obtener el valor utilizando la propiedad process.env:
var httpPort = process.env.PORT

Terminación ordenada

Cuando un CICS BUNDLE que contiene una aplicación Node.js está DISABLED, CICS envía la señal SIGTERM al proceso Node.js . Esto ofrece a la aplicación Node.js una oportunidad de terminar correctamente. Por ejemplo, ya no aceptando nuevas conexiones, deteniendo las conexiones persistentes, completando las solicitudes pendientes y, finalmente, cerrando los archivos y la conexión con las bases de datos, y saliendo. La aplicación debe terminar dentro del periodo especificado por la opción NODEJSAPP_DISABLE_TIMEOUT.

He aquí un ejemplo de manejo de la señal SIGTERM y cierre de un servidor HTTP :

var http = require('http');
var httpPort = process.env.PORT;
var process = require('process');

//create a server object
var server = http.createServer(
    function (request, response) {
        response.write('Hello World! PID:' + process.pid); //write a response to the client
        response.end(); //end the response
    }
);

process.on('SIGTERM',
    function () {
      server.close(
            function () {
                console.log('Received SIGTERM at ' + (new Date()));
            }
        );
    }
);

console.log("Started hello.js at " + (new Date()));
server.listen(httpPort);

Los ejemplos de ambas técnicas se muestran en el ejemplo de IVP Node.js . Para obtener más información, consulte Verificación de la instalación del tiempo de ejecución de Node.js.