tecnología-cloud-para-erp-blog-conasa
La tecnología cloud para los ERP
6 mayo, 2019
proyecto-hiperconvergencia-simplivity-primaflor-conasa
Conasa desarrolla un proyecto de hiperconvergencia con la tecnología de Simplivity
30 mayo, 2019

Automatización en el desarrollo de Software

automatizacion-en-el-desarrollo-de-software-blog-conasa

automatizacion-en-el-desarrollo-de-software-blog-conasa

Automatización: CI/CD

A lo largo de la historia la automatización ha sido un gran aliciente para el ser humano. Desde el principio de los tiempos el hombre ha creado una gran cantidad de artilugios para facilitar todo tipo de trabajos; además, ha ideado muchos métodos para incrementar la producción reduciendo costes y esfuerzo.

La división del trabajo de un proceso de fabricación en fases independientes, desarrollada con más ahínco durante la segunda mitad del siglo XVIII, fue el primer paso hacia la automatización.

La mecanización fue la siguiente etapa ya que, aprovechando la ventaja que aportaba la división del trabajo, permitió fabricar máquinas que reproducían las tareas de un trabajador. La mecanización apoyada en la motorización y la tecnología energética dio paso al sistema industrial de producción.

Los robots industriales son extremadamente hábiles para trasladar y manipular piezas ligeras y pesadas. Se trata de varias máquinas separadas que están integradas en cadena y que a simple vista parecen una. En 1920 la industria automovilística convirtió estos conceptos en un sistema de producción integrado con el objetivo de reducir los costes en la línea de montaje. Éste es el concepto que la mayoría de la gente asocia con la automatización.

Muchas industrias están muy automatizadas, casi la mayoría usa tecnología de automatización para realizar alguna etapa de sus actividades. Ahora bien, por todos es sabido que la industria informática no es diferente al resto. El auge de las nuevas tecnologías ha provocado que sea una industria muy importante y en cambio constante. El software es un elemento crucial que ha permitido un gran ahorro en costes y un gran incremento en productividad al realizar tareas sencillas y repetitivas como el envío de un e-mail o incluso tareas mucho más complejas como la facturación de una empresa.

Automatización en el desarrollo de Software

Al igual que todas las fábricas han implementado tecnología para ahorrar costes, ser más productivos y obtener productos de calidad, el desarrollo de software está inmerso en un entorno tan exigente que tiene que adaptarse, está obligado a cubrir las exigencias del mercado, a entregar aplicaciones de calidad y a la mayor brevedad posible si no quiere quedarse obsoleto.

Por todo ello, implementar herramientas de automatización en el proceso de desarrollo de software es muy importante. Agilizar la entrega de un producto software es vital y la reducción del tiempo de desarrollo es cada vez un requisito más solicitado. Además, el valor añadido que supone entregar un producto de calidad con menor esfuerzo es imprescindible.

Por todo ello, el objetivo de este post es recalcar el valor que tiene la automatización en el desarrollo de aplicaciones.

Cada vez menos debido a todas las herramientas de las que disponemos, pero hasta hace poco el proceso de desarrollo era arcaico, lento y poco eficiente. De hecho, hace no demasiados años, e incluso hoy en día, muchas empresas no usan ni siquiera un control de versiones. Por tanto, el flujo que seguía el desarrollo de software consistía en: toma de requisitos, análisis, programación de toda la funcionalidad, pruebas manuales y despliegue manual.

Uno de los principales problemas venía al hacer modificaciones en el código para desarrollar una nueva funcionalidad de la aplicación: al hacer pruebas dejaban de funcionar cosas que antes lo hacían, al no disponer de un control de versiones encontrar el error era muy lento. Por otro lado, tras haber realizado pruebas, se realizaba un despliegue manual pero muchas veces nos dejábamos de copiar cosas o ejecutar comandos, es decir, era otro punto susceptible de errores humanos. Ante esta problemática surgen los conceptos de Integración Continua (CI por sus siglas en inglés Continuous Integration), Entrega Continua (CD – Continuous Delivery) y Despliegue Continuo (CD – Continuous Deployment). Nos proporcionan un modelo informático para distribuir aplicaciones de forma más rápida y segura.

Continuous Integration (CI)

El objetivo principal de la integración continua es implementar un proceso automático y consistente para compilar, empaquetar y testear aplicaciones. Esto permite que los equipos de desarrolladores suban más frecuentemente código al control de versiones lo que conlleva una mejor colaboración entre el equipo y una mejor calidad de código.

En este proceso se prepara un artefacto fácilmente, para ello se compila y se ejecutan tests automáticamente. Centra su empeño en chequear la aplicación para que no se “rompa” al subir nuevos cambios a la rama principal del repositorio en el control de versiones.

Continuous Delivery (CD)

La entrega continua va un paso más allá: es la continuación de la integración continua, permite generar artefactos automáticamente listos para ser desplegados en producción de forma manual. Sin embargo, a veces no tenemos un artefacto que entregar como en el caso de una aplicación compilada, como es el caso de una web; en este caso se despliega la web en un entorno de staging o QA para que sea validada antes de pasar a producción.

Continuous Deployment (CD)

El despliegue continuo es la última fase de este modelo de distribución de aplicación. Esta etapa se centra en desplegar automáticamente el artefacto o aplicación a producción, sin intervención humana. Es decir, una vez commiteado el código al control de versiones, se ejecutará la integración continua, generará el artefacto y lo desplegará automáticamente en producción. Sólo si ocurre un fallo en algún paso del flujo no se efectuará el despliegue.

Es un paso bastante crítico, por lo que es conveniente realizar un estudio pormenorizado de si es conveniente aplicarlo o no en una aplicación.

El siguiente diagrama explica resumidamente la funcionalidad de cada paso en este modelo:

Conclusiones

Hoy en día estamos envueltos en un mundo muy cambiante, en una sociedad que avanza a pasos agigantados y a una velocidad vertiginosa.

El auge de las nuevas tecnologías ha permitido a las empresas crecer muy rápido, lo cual a priori puede ser algo muy positivo. No obstante, de la misma manera que han crecido, podrían quedarse obsoletas si no cubren las necesidades de sus clientes. Cabe destacar que los requerimientos de los clientes cambian constantemente, por lo que hay que ser muy flexibles y ágiles para adaptarse a dichas necesidades. Es por ello por lo que la automatización tiene tanta importancia.

El mundo del desarrollo de software no es la excepción. De hecho, es posible que sea al revés, la automatización de procesos de compilación, empaquetado y despliegue, englobados en los conceptos de Integración, Despliegue y Entrega Continua, permiten desarrollar software mucho más rápido y con mayor calidad.

Por todo ello, os animamos a empezar a implementar estos procesos en vuestros desarrollos. La optimización de tiempo y la calidad de vuestras aplicaciones se verá incrementada, con lo que obtendréis clientes mucho más contentos y un negocio más productivo con los mismos recursos.

Recursos

¿En qué punto se encuentra tu organización?

Si quieres saber más sobre cómo trabajamos la tecnología cloud desde Conasa contacta con nosotros sin compromiso y juntos avanzaremos al ritmo que precise tu negocio.