Ir al contenido principal

Preparación del entorno para desarrollo e integración continua

 

Entorno de desarrollo

Es el lugar dónde programamos, lo más habitual es que esté localizado en la propia máquina de cada desarrollador de forma que varias personas pueden estar trabajando en un mismo proyecto a la vez sin molestarse.

Para minimizar incidencias en etapas posteriores es recomendable que este entorno disponga de un software y una configuración lo más parecida posible a la que nos encontraremos en el entorno de producción. Situaciones como desarrollar sobre php 7.2 y que el entorno de producción se encuentre corriendo php 5.6 o hacerlo sobre windows con el driver «x» de sql server y que el servidor de producción sea una máquina linux con el driver «y» suelen acabar generando muchos quebraderos de cabeza fácilmente evitables.

Solo cuando el desarrollador completa un código perfectamente funcional e integrable en el entorno de pre-producción y tras realizar las pruebas necesarias para asegurar que el software desarrollado tiene la estabilidad suficiente  se podrá pasar al entorno de integración continua.

Entorno de integración continua

Este entorno cumple un triple objetivo:

  1. Integrar el trabajo de los diferentes desarrolladores en un repositorio central, dando como resultado una versión del código actualizada y consolidada.
  2. Automatizar las pruebas de integración y su validación antes de ser movido al siguiente entorno.
  3. Enviar el código al siguiente entorno si las pruebas han sido superadas satisfactoriamente.

La forma más habitual de implementar este entorno es mediante un software de control de versiones, dónde Git es la opción más popular. Una vez consolidado el código utilizamos los hooks para ejecutar las pruebas definidas, notificar los resultados y enviar a pre-producción si es preciso.

Entorno de pre-producción

Una vez superadas las pruebas de integración en el entorno de integración continua, el código será movido al entorno de pre-producción. Aquí se realizarán las pruebas de validación al conjunto del software, teniendo como objetivo localizar cualquier error antes de llegar al entorno de producción y evitar así los problemas derivados de ellos.

Este entorno será completamente funcional a nivel de usuario, y si hemos recomendado que el entorno de desarrollo fuese lo más similar posible al entorno de producción, aquí se convierte en algo crítico. Tanto el software, dónde no solo hablamos de las aplicaciones si no también de sus versiones y configuraciones, como el hardware y los sets de datos. Cuanto mayor sea la similitud con el entorno de producción menor será el número de  incidencias que nos encontremos cuando el software esté en productivo.

Entorno de demo

Es un entorno muy similar al de pre-producción, y por lo tanto al de producción. Lo habilitamos para que el cliente final pueda probar la nueva aplicación o las modificaciones o correcciones realizadas a la aplicación existente. De aquí extraeremos las impresiones del cliente y localizaremos de una forma temprana posibles carencias en los requisitos iniciales, en el diseño o en su implementación.

Si en nuestro proyecto la validación del cliente es necesaria, no disponer de este entorno puede suponer que el cliente valide contra el entorno de pre-producción (o mucho peor aun contra el de desarrollo o de producción), en cuyo caso pueden darse varias situaciones:

  1. Que todo salga maravillosamente bien, improbable pero posible.
  2. Que una nueva actualización en el entorno de pre-producción, esté o no relacionada con la funcionalidad que estamos probando, provoque errores y demos la validación por fallida.
  3. Que congelemos la actualización del entorno de pre-producción incurriendo en molestias y dificultades extra para el equipo de desarrollo y retrasando las fechas del proyecto.

Estos problemas se verán aumentados si trabajamos en base a una metodología de desarrollo ágil con entregas iterativas.

Entorno de producción

Es la culminación de nuestro esfuerzo, el entorno dónde se verán las virtudes y defectos de nuestro trabajo, el objeto por el que seremos valorados. Los cuatro entornos anteriores están pensados para llegar aquí de la forma más eficiente posible garantizando la fiabilidad, y la diferencia de calidad sobre el resultado final puede ser realmente significativa significativa de disponer de un circuito de entornos adecuado a no disponer de él.

Comentarios

Entradas más populares de este blog

Trazas o rastros (Tracers)

  Trazas o rastros (Tracers) La gestión de trazas en los sistemas informáticos es un proceso fundamental para garantizar la seguridad. La gran mayoría de software, hardware y dispositivos de red, poseen mecanismos para generar registros del estado de su funcionamiento. Es de gran importancia conocer los accesos realizados, u otros eventos que permiten determinar el comportamiento de un sistema en un período de tiempo. Las trazas se generan en diferentes formatos lo que hace difícil su procesamiento. La gestión de trazas requiere de sistemas que procesen y normalicen la gran variedad de formatos existentes. También es fundamental definir mecanismos de transporte, planeación y ejecución, sistemas de almacenamiento eficientes en cuanto la utilización de espacio y herramientas para la búsqueda y detección de patrones.  Las trazas generadas por los sistemas de hardware y software tienen una importancia fundamental en el proceso de gestión de la seguridad de la información. Dentro d...

SELENIUM IDE

  SELENIUM IDE Es una extensión de Firefox que permite escribir test de Selenium con las interacciones del usuario y ejecutarlos directamente desde el navegador. Puedes indicarle rutinas de navegación para luego ejecutarlas una y otra vez y detectar así, de una manera sencilla, posibles errores. Todo esto sin necesidad de tener conocimientos de ningún lenguaje de scripting de prueba. Enseñarle a Selenium lo que queremos probar de nuestro sistema web es relativamente sencillo. Y digo “relativamente” porque Selenium IDE, por desgracia, tiene muchos límites. Su interfaz es muy fácil de usar, pero para sacarle el máximo provecho no se recomienda quedarse solo con lo que nos ofrece Selenium IDE. Se pueden crear funciones personalizadas para necesidades específicas en lenguaje JavaScript, ampliando así, el espectro de las posibles pruebas. Además de esto también existen unos cuantos plugins oficiales recogidos en el portal web del proyecto. Selenium es compatible con una gran variedad de...