Anteriormente hemos La Integración Continua (CI). Continuemos con la Entrega Continua. Este es un conjunto de métodos de desarrollo de software. Ayuda a asegurar que el código esté listo para el despliegue.
/ Pixabay / /
Historia
La expresión entrega continua se podía ver ya en de 2001 al inicio de la lista de principios básicos: "La prioridad es resolver las necesidades del cliente mediante el suministro continuo de software relevante".
En 2010, Jez Humble y David Farley publicaron sobre Entrega Continua. Según los autores, CD complementa el enfoque y permite simplificar la preparación del código para el despliegue.
Después de la publicación del libro, el enfoque comenzó a ganar popularidad y en solo un par de años se volvió prácticamente estándar. Según , realizada entre más de 600 desarrolladores y gerentes de TI en 2014, el 97% de los líderes técnicos y el 84% de los programadores estaban familiarizados con la Entrega Continua.
En la actualidad, este enfoque sigue siendo uno de los más populares. Según un estudio de 2018 que involucró a la comunidad de especialistas en TI de DevOps y Jenkins Community, su la mitad de los más de mil encuestados.
Cómo funciona la Entrega Continua
La base de CD es la preparación del código para el despliegue. Para llevar a cabo esta tarea se utiliza la automatización del proceso de preparación del software para el lanzamiento. Debe ser estándar para diferentes entornos de desarrollo, lo que ayudará a detectar más rápidamente los puntos débiles y optimizarlos. Por ejemplo, acelerar las pruebas.
Un ejemplo del proceso de Entrega Continua se presenta de la siguiente manera:

Si la automatización de las dos primeras etapas es responsabilidad del enfoque de Integración Continua, los siguientes dos recaen en la Entrega Continua. La estabilidad del proceso se asegura también mediante sistemas . Monitorizan los cambios en la infraestructura, bases de datos y dependencias. El propio despliegue puede ser automatizado o puede realizarse manualmente.
Al proceso se le plantean los siguientes requisitos:
- Disponibilidad de información sobre la preparación para entrar en el entorno de producción y disposición para el lanzamiento inmediato (las herramientas de CD prueban el código y permiten evaluar el efecto de los cambios en el lanzamiento).
- Responsabilidad general por el producto final. El equipo del producto — gerentes, desarrolladores, testers — piensa en el resultado, no solo en su área de responsabilidad (el resultado es un lanzamiento funcional que está disponible para los usuarios del producto).
En CD generalmente se aplica , y para recopilar opiniones de los clientes, el principio de . La nueva función se lanza primero a un segmento pequeño de usuarios; su experiencia con el producto ayuda a identificar errores y fallos que no se notaron en las pruebas internas.
¿Cuál es el beneficio?
La entrega continua ayuda a simplificar el despliegue de código, lo que impacta positivamente en la productividad y reduce la probabilidad de agotamiento emocional de los empleados. En última instancia, esto también reduce los costos generales de desarrollo. Por ejemplo, CD ayudó a uno de los equipos de HP esos costos en un 40%.
Además, según un estudio de 2016 (página 28 ), las empresas que implementaron CD resuelven problemas de seguridad de la información un 50% más rápido en comparación con aquellas que no utilizan el enfoque. En cierta medida, esta diferencia puede explicarse por el uso de herramientas de automatización de procesos.
Otro beneficio es la aceleración en el lanzamiento de versiones. En un estudio de desarrollo en Finlandia, la entrega continua a aumentar la velocidad de compilación de código en un 25%.
Dificultades potenciales
El primer y principal problema es la necesidad de reconstruir los procesos habituales. Para mostrar los beneficios del nuevo enfoque, es recomendable hacer la transición a CD gradualmente, comenzando por aplicaciones que no requieran tanto esfuerzo.
El segundo problema potencial es el gran número de ramas de código. La consecuencia de la "diversificación" son conflictos frecuentes y la pérdida de una gran cantidad de tiempo. Una posible solución es el enfoque .
. En particular, en algunas empresas, las principales dificultades surgen en las pruebas, ya que se requiere demasiado tiempo para realizarlas. A menudo, los resultados de las pruebas deben analizarse manualmente, pero una posible solución puede ser la paralelización de las pruebas en las primeras etapas de la implementación de CD.
También es importante capacitar a los empleados en el uso de las nuevas herramientas; un curso introductorio ahorrará esfuerzo y tiempo a los desarrolladores.

/ Flickr / /
Herramientas
Presentamos algunas herramientas de código abierto para entrega continua:
- — servidor para entrega continua en Java y JRuby on Rails. Permite controlar todo el proceso de entrega de aplicaciones: build—test—release. La herramienta se distribuye bajo la licencia Apache 2.0. En el sitio oficial se puede encontrar .
- — marco para crear scripts que automatizan la implementación de aplicaciones en Ruby, Java o PHP. Capistrano puede ejecutar comandos en una máquina remota conectándose a ella a través de SSH. Funciona con otras herramientas de integración y entrega continua, como el servidor CI Integrity.
- — herramienta multiplataforma que automatiza todo el ciclo de desarrollo de aplicaciones. Gradle trabaja con Java, Python, C/C++, Scala, entre otros. Tiene integración con Eclipse, IntelliJ y Jenkins.
- — plataforma para CD en Go. Drone se puede implementar on-premise o en la nube. La herramienta está construida sobre contenedores y utiliza archivos YAML para gestionarlos.
- — plataforma para entrega continua de código en sistemas multicloud. Desarrollada en Netflix, los ingenieros de Google jugaron un papel importante en el desarrollo de la herramienta. La guía de instalación la .
Lecturas recomendadas en nuestro blog corporativo:
Fuente: habr.com
