Últimamente he estado pensando en cómo puedo mantener ciertos pedazos de mi código alojado en un ambiente seguro sin preocupaciones a que se filtre algún security key entre los diferentes commits que occuren a lo largo de un proyecto. Hay veces que aún sabiendo lo que hacemos puede ocurrir que tu clave de seguridad quede expuesta a la merced de gente inescrupulosa donde su único objetivo es aprovecharse lo más rápido posible de este tipo de descuido.

Es por eso que vengo coqueteando con los environment variables para poder salvaguardarme de este tipo de situación. Esta nota es de tipo recuérdate-a-ti-mismo-Jaime que debes usar un poco más este tipo de mecanismo. Además, el buen uso de esta opción mejora considerablemente el proceso de desarrollo continuo. Ya que hoy día cambiamos rápidamente de un ambiente de desarrollo a un ambiente de prueba, staging o producción, mucha de esta configuración es conveniente definirla a través de varios environment variables.

Scott Hanselman muy diligentemente ha recopilado alguna prácticas que podemos utilizar en nuestro proceso de desarrollo. A continuación voy a compartir un sencillo ejemplo utilizando Nodejs en Visual Studio.

El siguiente código no hace ningún tipo de uso de variables de configuración o de ambiente.

if (processData == true) {
    var ref = new fb("https://data-embalses-pr.firebaseio.com/v1/embalse/siteID/" + previousValue);
    ref.auth('llave-que-es-un-garabato')
// App logic a continuación

En Nodejs podemos acceder los environment variables a través del objeto process.env. Ya que estamos usando Visual Studio es casi obligatorio utilizar Nodejs Tools for Visual Studio. Para poder definir estas variables solo necesitamos pasar por las propiedades del proyecto y asignar cada variable utilizando un par nombre/valor por línea. Como lo muestra el siguiente ejemplo:environment-variable-in-node-js
Ahora podemos hacer uso de estas variables utilizando el objecto process.env.

if (processData == true) {
    var ref = new fb(process.env.SiteIdData + previousValue);
    ref.auth(process.env.FirebaseSecret)
// App logic a continuación

La idea es sencilla, utilizar algún mecanismo para agilizar la configuración de nuestro código y asegurar las claves importantes de nuestros servicios. Para abundar un poco más en el tema te invito a leer el siguiente artículo “Leer App Settings de Web Apps con Node.js y ASP.NET” del grupo de Microsoft Developer en español.