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

MONITOREO DE SOFTWARE

  MONITOREO DE SOFTWARE Un buen sistema de monitorización es indispensable para optimizar la administración de sistemas IT y ganar en eficiencia. Todos los datos que se guardan en los sistemas de monitorización y logs son realmente importantes tanto para predecir problemas como para ser proactivos. La monitorización permite anticiparse con datos para detectar debilidades y cuellos de botella, mejorar servicios y, por supuesto, evitar y solucionar cualquier problema —incluso antes de que llegue a manifestarse. Disponer de las herramientas adecuadas para monitorizar es tan importante como establecer los procedimientos a seguir y decidir los KPIs (métricas) que hay que controlar. Todo proceso de monitorización y administración de sistemas IT comienza por un estudio previo de las necesidades; que puede ir acompañado, en caso de necesidad, de una auditoría de sistemas y de seguridad. Si la plataforma es nueva, se definirá la arquitectura de sistemas ideal para cada proyecto específico; ...

¿QUÉ ES AUTOMATIZACIÓN?

  ¿QUÉ ES AUTOMATIZACIÓN? Las empresas de desarrollo de software buscan la manera de entregar sus productos o mejoras de estos de una forma ágil y fiable a sus clientes. Para lograr este objetivo necesitan automatizar este proceso de entrega o despliegue, es decir, incluir los mecanismos y herramientas necesarias para realizar el despliegue sin la intervención humana.  Implementar herramientas de automatización dentro del proceso de desarrollo de software permite agilizar la entrega de un producto de software al reducir el tiempo invertido en el desarrollo de este. La integración continua, la entrega continua y el despliegue continuo proporcionan un modelo informático automatizado que permite distribuir las aplicaciones de manera más rápida, eficiente y segura.  Ventajas de la automatización en sistemas  La automatización en el desarrollo de software proporciona una serie de beneficios entre los que podemos destacar las siguientes:  Reduce el tiempo necesario pa...