Al momento de desarrollar un software nos daremos cuenta que cuando lo finalicemos en realidad no acaba ahí. Llegará el día que estrenemos el proyecto y el cliente lo empiece a usar, todo va bien por ahora. Luego se le ocurrió realizar un pequeño cambio que hasta ahora se dieron cuenta que no tenía. No podemos cambiar directamente sobre el ambiente productivo por que podríamos tumbar todo el software. Los ambientes de trabajo para software son una práctica recomendada. Esto se hace para realizar estos cambios y que el cliente pueda probarlos antes de realizar el cambio real. En general siempre he trabajado con tres ambientes, aunque dependiendo del modelo de tu equipo (o personal) puede variar.
Ambiente de desarrollo
Este es el lugar donde realizamos todos los cambios locos que se nos ocurran, nuevas ideas, o ajustes del cliente. Nada de lo que se realice acá afectará realmente la aplicación de software. En este ambiente se suelen hacer cambios directos a la base de datos como agregar o quitar columnas, relación entre tablas y datos, nuevas tablas, cambiar los modelos de la base de datos entre otros. La información que se trabaja acá siempre va a terminar siendo muy incoherente con la realidad. Incluso en los ambientes de trabajo para software se recomienda que los datos de usuarios y personas sean modificados para su tratamiento de los ingenieros.
Ambiente de pruebas
Normalmente es un lugar que tiene casi los mismos datos del ambiente productivo, pero que se le implementan los cambios realizados en desarrollo. Estos cambios deben haber pasado por las pruebas iniciales y se trasladan a pruebas para ver la integración. En este ambiente es donde el usuario final intenta comprobar que lo que pidió en realidad ocurra. Lo que suele pasar es que se da cuenta que algunos efectos que no pensaban terminan ocurriendo por lo que se solicitan nuevos ajustes. Si se presenta una falla que el desarrollador no visualizó se reporta y se corrige. Todo debe quedar debidamente ajustado antes de realizar el cambio final.
Photo by matthewvenn
Ambiente de producción
En este ambiente es donde ocurren todas las transacciones de los usuarios en caliente. Dependiendo de que haga el software puede ser de mucho o poco movimiento, pero al final es la realidad de los usuarios. Los cambios que se han solicitado se recomienda realizarlos en horas de poco o ningún acceso. De hecho, se debe intentar pasar la mayor cantidad de cambios que en el ambiente de pruebas funcionen correctamente. De todos los ambientes de trabajo para software es el más delicado ya que si algo falla podría darse una de esas famosas “caídas del sistema“.
Muchas veces se presentan fallos que no se presentan en pruebas porque cada usuario maneja la información de forma diferente. Esto se conoce como errores de usuario y por lo general son los que saturan el soporte. El equipo de soporte debe detectar la falla y replicarla en el ambiente de pruebas. Luego debe solicitar la corrección para que en el ambiente de desarrollo se realicen los cambios y pasar por todo el proceso nuevamente.
Múltiples y diferentes ambientes de trabajo para software
Los tres ambientes mencionados son representados de forma muy general y aplican casi siempre a equipos de desarrollo pequeños. En realidad, los tres ambientes son los mínimos que se deberían usar por cada aplicación siempre. Sin embargo, entre más crece la aplicación y el equipo de desarrollo se presentan otros ambientes intermedios como lo son el de pre-producción, integración entre otros personalizados. Esta información es interesante porque en software que se ofrece como servicio, en general no tendría tantos entornos. Pero considero y recomiendo siempre a cada cliente que considere los tres entornos donde cada uno debe tener por ejemplo una base de datos diferente. Esto técnicamente se llaman tres instancias diferentes y cuando se va a contratar un hosting se debe tener en cuenta.