Una aplicación no se desarrolla para operar solamente en un vacío ideal. Esa misma aplicación no correrá únicamente en el ordenador del administrador, también debe funcionar en todos los PCs y dispositivos necesarios. No vas a poder controlar las variables una vez salga de tus manos, así que es muy importante asegurar que funciona en todo tipo de entornos.
Para alcanzar estos requisitos, siempre estamos buscando las mejores prácticas para nuestros proyectos y su correcto funcionamiento y despliegue. Hoy, vamos a comentar dos términos que se han vuelto sinónimos con la tendencia actual en la industria de automatizar sin comprometer la calidad.
Hablamos de la Continuous Integration y el Continuous Delivery.
Conocemos como Continuous Integration la automatización de la compilación y el Unit Testing de una aplicación tan pronto como añadimos nuevas capacidades. Un pipeline basado en el CI suele emplear una plataforma, como Azure Pipelines, que reacciona ante un cambio en el repositorio del código. Entonces, realiza unos pasos previamente programados desde una máquina agente designada.
Para empezar, lo primero es descargar la versión más actualizada del repositorio con los cambios del programador. El pipeline compila el código y genera una aplicación funcional y ejecutable. El primer éxito es que ya hemos optimizado la creación, porque no dependemos de una máquina física del desarrollador. Gracias a la estandarización, podemos repetir los pasos cada vez que sea necesario. Además, los errores en el código en estos primeros momentos se pueden detectar y solucionar antes.
Una vez tenemos la aplicación compilada correctamente, podemos realizar Unit Tests y validaciones automáticas. Las validaciones las puedes personalizar con el análisis de código para evitar patrones incorrectos, y los Unit Tests se pueden juntar al code coverage para garantizar que:
Si las validaciones y los tests fallan, el pipeline deja de funcionar para notificar al programador que debe corregir el código. No se volverá a activar hasta que tu desarrollador haya trabajado sobre el código y lo vuelva a compartir en el repositorio.
Continuous Delivery se refiere al paso siguiente tras el CI, que es el concepto de automatizar la instalación y puesta en marcha de una aplicación. De nuevo, empleamos herramientas de automatización que realizarán el trabajo desde una máquina agente.
CD extiende el concepto de CI porque prepara y realiza la instalación en un entorno de desarrollo donde hacemos las pruebas pertinentes. El pipeline de CD se conecta automáticamente cuando concluye su homólogo de CI añadiendo unos pasos más al proceso.
El primer paso básico de una CD es recoger la aplicación cuando sale del pipeline de CI desde su repositorio o registro correspondiente. Así, la aplicación siempre estará disponible para instalaciones posteriores.
Una vez la tenemos compilada, el pipeline de CD aplica configuración específica al entorno de desarrollo donde se instalará la aplicación. Se configuran puntos como la ubicación de la base de datos, el usuario y la contraseña a emplear. Los atributos del entorno se pueden almacenar y usarse en la aplicación para que funcione en dicho entorno. De esta manera, formalizamos la configuración necesaria y asegurará que las instalaciones posteriores funcionen antes sin pasos manuales.
Con la aplicación configurada, el siguiente paso es, como no, instalar la aplicación. Dependiendo del tipo de instalación, el sistema puede desinstalar la versión anterior o volver a instalar la nueva. En ese caso, la instalación estará automatizada y se puede reproducir tantas veces como sea necesario, cortando muchas posibilidades de que haya un fallo por actuación manual durante el proceso.
Un pipeline bien implementado de CD amplia la cadena de montaje, ya que estandariza la configuración e instalación y la aplicación de trabajo en un entorno de desarrollo común
Una vez el pipeline que combina ambos términos esté implementado, podemos crear un flujo de trabajo optimizado. Te vamos a dar un ejemplo de cómo sería un flujo de trabajo para implementar una funcionalidad nueva:
Implementando pipelines similares a este, observaremos que emplear el CI y el CD dentro de nuestro trabajo ayudará a ordenar el flujo de trabajo y automatizar el trabajo de muchos departamentos de nuestra empresa. Una ventaja muy importante es que siempre tendremos una versión con los cambios más recientes posibles
El pipeline entorno al CI y CD está pensado para automatizar el desarrollo y tener un entorno listo para consultas posteriores, pero más adelante puede ser muy útil en otras funciones.Como ejemplo, si tenemos preparada la automatización de la instalación, es muy fácil ampliar esta instalación con variables para otros entornos para sus instalaciones en versiones similares. En los casos más extremos, existe el Continuous Deployment (no confundir con el CD que hemos referido durante todo el artículo). En esas instancias, realizamos instalaciones automáticas no sólo durante el desarrollo, sino también en todos los entornos procesables.
Todo sin ningún tipo de proceso manual, sólo validaciones automáticas para asegurar que no instalamos versiones incorrectas.
Las herramientas de automatización también te permiten extender pipelines para realizar acciones adicionales. Por ejemplo, quizá quieras que una página de aviso aparezca automáticamente en la instalación, o que los datos de pruebas se limpien tras cada testeo correcto.
Ambas opciones (y muchas más) están disponibles en la mayoría de las herramientas del mercado, demostrando el verdadero interés que hay en el sector en automatizar muchos de los procesos más tediosos del trabajo. Es una gran estrategia para animar a tus empleados a explorar más las posibilidades de las partes más implicadas.
A modo de vista general de lo que hemos escrito en este artículo, hemos visto como implementar pipelines que emplean técnicas de Continuous Integration, complementados con otros basados en Continuous Delivery, te asegura mejores flujos de trabajo, optimización de los tiempos de testeo e instalación y la automatización de tareas vitales para un buen desarrollo.
Conoce más sobre otros métodos de desarrollo o sobre como comenzar a automatizar en otros entornos de tu empresa.