Entornos existentes en el ciclo de desarrollo de software y despliegue de aplicaciones
Cuando empezamos a programar una aplicación o una página web, necesitamos dos entornos: desarrollo y producción. La máquina de desarrollo suele ser nuestro propio ordenador en el que programaremos todo nuestro código. Por otra parte, tenemos el entorno de producción, que utilizaremos cuando queramos desplegar nuestra aplicación y hacerla pública.
Sin embargo, conforme pasa el tiempo vamos necesitando más entornos: un cliente puede necesitar un entorno para pruebas y testing, el equipo de desarrolladores un entorno de pre-producción o staging, el QA un entorno para encontrar bugs, etc.
¿Qué tipo de entornos existen en el ciclo de desarrollo y despliegue de aplicaciones?
Entorno de desarrollo
En el entorno de desarrollo se programa el software. Puede haber diferentes opciones: el propio ordenador del programador o incluso un servidor compartido por los desarrolladores para que creen la aplicación.
Este entorno debe parecerse lo máximo posible al entorno de producción, por no decir que debe ser igual. Por suerte, gracias a Docker conseguiremos tener nuestros entornos de desarrollo con exactamente la misma configuración que en producción.
Entorno de testing
Es en este entorno en el que se ejecutan los tests y se realizan las pruebas de una determinada funcionalidad que hayamos desarrollado. De la misma manera que el entorno de desarrollo, este entorno debe parecerse al máximo al entorno de producción.
Entorno UAT: User Acceptance Testing
Las pruebas de aceptación de usuario (User Acceptance Testing) forman la última fase de un proceso de pruebas. En este entorno, usuarios reales realizan pruebas para asegurarse de que los requisitos de desarrollo de software se han cumplido, es decir, que los desarrolladores han hecho una funcionalidad tal y como se ha pedido y el software es completamente usable.
Esta es una de las fases más importantes en el ciclo de desarrollo de software porque así nos aseguramos de que el usuario final está contento con el resultado.
Entorno de pre-producción o staging
El entorno de pre-producción o staging es, como su propio nombre indica, el último entorno al que vamos a desplegar nuestra aplicación antes de que vaya a producción.
En este entorno, lo mejor sería que además de tener la misma configuración software que en el entorno de producción, tuviésemos también la misma configuración hardware. De esta manera, un QA podría identificar errores incluso de rendimiento.
Entorno de producción
Este entorno ya es accesible a todo el mundo. Si hemos configurado todos nuestros entornos de la misma manera, realizado pruebas exhaustivas del software, tests automatizados y seguido buenas prácticas, no deberíamos tener ningún problema en el despliegue. Y si lo tuviéramos, simplemente tendríamos que comenzar de nuevo el ciclo de desarrollo: código, pruebas y despliegue.
¿Cuántos entornos necesito?
Es una pregunta muy difícil de responder porque depende de varias cosas: si tienes producto propio o si estás haciendo software para un cliente. También depende del tamaño de tu equipo de desarrollo, ya que no es lo mismo ser una persona, dos o 100 programadores.
Mi consejo es que los vayas creando bajo demanda y utilizando Docker, ya que te evitará muchos problemas de configuración y diferencias entre entornos. Evitarás el famoso "en mi ordenador funciona".