En el mundo de la informática, se entiende 'Entorno de Producción' como aquel conjunto de servidores funcionales y totalmente operativos que ofrecen los servicios necesarios para que el usuario pueda ejercer su labor diaria.
Estas máquinas deben estar configuradas en modo de alta disponibilidad y deben gozar de restricciones y fuertes políticas de seguridad. Cualquier fallo en alguno de estos servidores es crítico, ya que paralizaría la rutina de los empleados que trabajan en ese entorno (pueden ser miles de personas!) o incluso peor, pueden provocarse pérdidas de datos sumamente importantes para la organización.
Por esta razón, cualquier desarrollo de software que se deba implantar en un entorno de producción, no puede instalarse tan alegremente sin haber pasado antes por una serie de validaciones que garantizen el éxito de la instalación. Es aquí donde aparecen los 'Entornos de PRE-Producción'. Es en este entorno donde se realizarán las instalaciones de software (ya sean evolutivos, desarrollos nuevos, parches etc.). Estos entornos no generan riesgo alguno, ya que el usuario no trabaja en ellos, 'simplemente' se utilizan a modo de prueba. Si el resultado es exitoso y el entorno sigue funcionando perfectamente con la nueva integración de software, entonces es cuando se repiten los mismos pasos en el entorno de Producción.
Si la implantación del software falla, o el entorno de PRE-Producción se vuelve inestable, debemos volver al punto de partida y buscar el error. Nunca, bajo ningún concepto se deben replicar los mismo pasos en el entorno de Producción, ya que el fracaso esta prácticamente garantizado. Teniendo en cuenta esto, se puede decir que el entorno de PRE-Producción da un acercamiento del éxito o desastre que se puede generar a partir de una mala implantación (o una buena implantación de un mal software).
Para que el entorno de PRE-Producción sea realmente útil debe cumplir un único requisito:
- El entorno de PRE-Producción debe ser idéntico al entorno de Producción.
Y cuando digo 'idéntico' me refiero a 'idéntico'. Es decir, las mismas máquinas, la misma configuración de red, la misma topología de servidores, los mismos sistemas operativos, con sus mismas versiones, las mismas CPU's, las mismas cantidades de memoria RAM, el mismo software, incluso la misma (o lo más parecida posible) información en la base de datos. TODO, y repito TODO, debe ser igual.
SI LOS ENTORNOS SON DIFERENTES, NO SE PUEDE GARANTIZAR QUE UNA IMPLANTACIÓN DE SOFTWARE EN PRODUCCIÓN SEA IGUAL DE EXITOSA QUE EN PRE-PRODUCCIÓN. Esa afirmación, creo, es bastante evidente.
Por desgracia, con lo que cuesta un entorno de Producción (granja de servidores + licencias + mantenimiento), pocas empresas se pueden permitir duplicar todos estos recursos para disponer de un entorno de PRE-Producción. Y aquí es donde aparecen las chapuzas. Es muy común encontrar entornos de PRE-Producción que se parecen a los de Producción como un huevo se parece a una castaña. La mayoría de entornos de PRE-Producción son máquinas llenas de polvo rescatadas del cajón de objetos perdidos. Máquinas que no se utilizan o tienen que ser próximamente sustituidas y bueno, "para PRE, ya sirven". Antes de empezar a hacer inventos que pueden provocar un desastre, es mejor optar por una buena práctica como por ejemplo virtualizar el entorno, de esta manera tenemos una copia exacta del entorno real de Producción. Los costes para esta solución son realmente mínimos (aun que un entorno virtualizado no garantiza tampoco el 100% de efectividad, ya que como he comentado, los dos entornos deben ser completamente iguales, y en este caso uno es 'real' y el otro es 'virtual').
En cualquier caso, si no se dispone de un entorno de PRE-Producción adecuado, es nuestra obligación informar al cliente que cualquier implantación con éxito en PRE, no garantiza para nada que vaya a ser también correcta en PRO. Es decir, si una implantación funciona en PRE y después falla en PRO, no podemos (NI DEBEMOS) hacernos responsables del desastre que se pueda ocasionar.