Integración y despliegue continuos

Ramas de la ingeniería de software orientadas a aumentar la calidad y frecuencia de la iteración en las soluciones desarrolladas y a tener un mayor control sobre todas las etapas que comprenden el ciclo de vida del software.


Período

2017-2023

Sector

Ingeniería software

Servicio

Desarrollo software: integración y despliegue
PDF

CONTEXTO

Las actividades de desarrollo y operación del software son candidatas a análisis y automatización, detectando y corrigiendo así errores de forma ágil y reduciendo la complejidad y costes asociados a las modificaciones incorporadas. Se parte por una estrategia orientada al control de versiones de software, incorporando los entornos de desarrollo y ejecución necesarios para implementar los procesos automatizables de forma desatendida. SOLUTE realiza estas actividades, validando las soluciones implementadas in-house y verificando los requisitos especificados por el cliente.

La integración y despliegue continuos son ramas de la ingeniería de software orientadas a aumentar la calidad y frecuencia de la iteración en las soluciones desarrolladas y a tener un mayor control sobre todas las etapas que comprenden el ciclo de vida del software. Es necesario llevar un control de los métodos aplicados en las metodologías ágiles para cerciorarse de que las implementaciones son acordes a su especificación de requisitos y estas son puestas en producción bajo una supervisión automatizada. Estas prácticas de CI/CD (Continuous Integration/Continuous Delivery) buscan reducir los tiempos de iteración de versiones, detectar posibles problemas en las soluciones desarrolladas antes de entregarse a cliente y hacer más eficientes sus pruebas unitarias.


RESULTADOS

Las tareas de automatización de DevOps permiten al equipo de desarrollo centrar sus esfuerzos en la implementación de módulos software críticos para las aplicaciones, detectando posibles errores de forma prematura y desatendida, a la vez que permiten su corrección antes de las entregas de software establecidas entre la organización y el cliente. Eso resulta en flujos de trabajo más eficientes, priorizando la entrega de valor y reduciendo la incertidumbre en el ciclo de desarrollo.

EXPERIENCIA

SOLUTE es partícipe de los procesos de desarrollo de software de varios clientes orientados a la analítica de datos, tanto en sus proyectos internos como en otras contrataciones, implicándose así de manera directa con los equipos de desarrollo y supervisión. Además, SOLUTE incorpora estos procedimientos testados en sus desarrollos propios, pudiendo ofrecer estas actividades a otros clientes.

La implementación de sistemas de CI/CD comienza por el análisis de las necesidades del proyecto software, determinando qué módulos son críticos para su funcionamiento y pueden ser sujetos al escrutinio de sistemas automatizados de pruebas. 

METODOLOGÍA

Se dispone de diversas plataformas de automatización para implementar los procesos de CI/CD de manera estandarizada y con la aplicación de los últimos estándares de comunicación. Existen herramientas que integran repositorios software y automatización (GitLab, Jira, Bitbucket) y dedicadas a programación de tareas (Jenkins, CircleCI, TeamCity).

La implementación de sistemas de CI/CD comienza por el análisis de las necesidades del proyecto software, determinando qué módulos son críticos para su funcionamiento y pueden ser sujetos al escrutinio de sistemas automatizados de pruebas. El diseño de estas últimas es una tarea que ha de en conjunto con los stakeholders del proyecto software, priorizando las pruebas relacionadas de forma más cercana con los atributos de calidad definidos y con las restricciones de compatibilidad y/o rendimiento.

Es necesario atender a los requisitos de despliegue de la propia organización, evaluando los problemas que pueden aparecer en las integraciones a producción de los desarrollos y las restricciones técnicas de los sistemas en operación. Se deben crear pipelines que permitan la ejecución concurrente de pruebas unitarias, procesos de compilación y empaquetado y, por último, que aseguren un despliegue controlado de las aplicaciones. El versionado de las mismas, junto con sus artefactos generados, han de ser dispuestos al equipo de trabajo como parte de los resultados de entrega junto con los resultados de las pruebas ejecutadas.

La salida de estos procesos de automatización estará adecuada a las necesidades del proyecto, de las infraestructuras disponibles y de la organización, por ejemplo, generando artefactos para distintas plataformas en uso. Estos artefactos serán dispuestos en las plataformas de distribución de software si todo el flujo de trabajo, desde la adición de cambios del software hasta su empaquetado ha sido exitoso. De esta manera se libera al equipo de desarrollo de los procedimientos manuales que dan pie a errores, retrasos en las entregas y que restan tiempo a otras tareas de mayor importancia.

Según los principios de desarrollo ágil de Agile Manifesto, las operaciones anteriormente descritas han de resultar en la entrega de valor al cliente, entregar cambios más eficientemente, soportar los cambios, colaborar y motivar a los equipos de trabajo, dándoles libertad para actuar independientemente.

Automoción

Protección de peatones

Desarrollo CAE de la carrocería de un automóvil para optimizar su diseño y así evitar o minimizar las lesiones producidas al peatón en un potencial impacto.

Eólica

Predicción energética y meteorológica para operadores renovables

Servicio de predicción meteorológica y energética a través del entrenamiento de algoritmos de inteligencia artificial.