Recibe alertas instantáneas si tu sitio web cae
SMS Llamada Correo
Empezar a monitorizar

¿Qué son Continuous Delivery y Continuous Deployment?

Autor: Redacción HOSTTEST   | 26 nov 2021

Continuous Delivery und Continuous DeploymentTradicionalmente, el desarrollo de software se divide en tres fases distintas: la programación de componentes individuales (desarrollo), la integración de todas las piezas necesarias (integración) y, por último, la entrega o puesta a disposición de un producto terminado para los clientes finales (entrega). En el pasado, estas tres etapas se completaban durante mucho tiempo de forma cronológica y lineal, lo que provocaba importantes problemas al pasar de una fase a la siguiente. Por ello, los enfoques modernos de desarrollo de software contemplan una estrecha interconexión, conocida como integración continua, entrega continua (Continuous Delivery) y despliegue continuo (Continuous Deployment). Se conocen como el modelo CI/CD, donde CD puede significar Despliegue continuo o Entrega continua, o ambos a la vez.

Contenido:
¿Cuál es la idea principal y la definición de la entrega continua?
¿Qué tareas abarca la entrega continua?
¿Qué hay detrás del despliegue continuo?
¿Qué ventajas ofrece la entrega continua?
¿Qué herramientas ayudan a implementar la entrega continua?
 

¿Cuál es la idea principal y la definición de la entrega continua?

A diferencia de otros productos, el desarrollo de software no suele ser un proceso estático que, al completarse una vez, conduzca a un resultado permanentemente listo para el mercado. En su lugar, por lo general es necesario publicar actualizaciones con regularidad, que, por ejemplo, introduzcan nuevas funcionalidades o cierren vulnerabilidades de seguridad surgidas o detectadas. Incluso cuando esto no ocurra, el proceso de desarrollo exige la generación recurrente de versiones alfa y beta, que al menos deben entregarse a un entorno fijo de probadores, otros desarrolladores y, en ocasiones, a partes interesadas del público.

En lugar de considerar las distintas fases como pasos de desarrollo aislados, los proyectos complejos emplean un enfoque alternativo que, mediante la integración continua y la entrega continua, entrelaza las diferentes etapas. En este contexto, la entrega continua se refiere a un conjunto de herramientas, procesos y métodos que permiten complementar la distribución de software a los procedimientos clásicos, como la venta de soportes físicos o la puesta a disposición como descarga gratuita o de pago. Para ello deben cumplirse determinadas condiciones:

  • Control de versiones exhaustivo para el código fuente
  • Integración continua como base para el desarrollo rápido de software
  • Automatización de procesos recurrentes como la compilación, las pruebas y la creación de paquetes mediante herramientas adecuadas
  • Entrega continua a través de plataformas centrales como GitLab
  • Retroalimentación regular entre los distintos equipos y los usuarios (de prueba)
  • Ciclos de desarrollo cortos con compilaciones periódicas para el uso práctico

La definición de una distribución continua abarca, por tanto, todo el proceso de desarrollo, que no es lineal sino cíclico en un bucle estrecho y permanente de progreso, compilaciones y pruebas automatizadas, control de calidad y retroalimentación a las etapas anteriores. Suele incluir la incorporación dentro del marco de la integración continua de las contribuciones de los desarrolladores, que, en forma de compilaciones nocturnas, se integran en cortos intervalos en el producto final y permiten un control de errores prácticamente inmediato.

¿Qué tareas abarca la entrega continua?

La entrega continua es el segundo paso tras la integración continua y tiene como objetivo verificar y optimizar la calidad de un software de forma minuciosa y sin interrupciones. No se ocupa del desarrollo en sí, como la escritura de código, sino que constituye un procedimiento para un control de calidad eficiente y exhaustivo durante la creación y la evolución. Para alcanzar su objetivo, los proyectos se sitúan en una fase intermedia, la pipeline de entrega continua, donde se someten a comprobaciones tanto manuales como automatizadas mediante herramientas apropiadas. Las tareas se desarrollan en varios pasos, que se siguen en orden cronológico o, cuando es posible, en paralelo:

  • Cambios o ampliaciones en el código en el marco de la Integración continua
  • Verificación de la versión, compilación y creación de paquetes ejecutables como compilaciones nocturnas o versiones beta (etapa de commit)
  • Pruebas automatizadas de rendimiento, estabilidad, integración, funcionalidad y compatibilidad del sistema (etapa de pruebas de aceptación)
  • Envío de registros de la etapa anterior, corrección de errores y eliminación de bugs (etapa de retroalimentación)
  • Pruebas manuales en uno o varios entornos y verificación de componentes relevantes individuales (etapa de pruebas manuales)
  • Entrega continua a través de infraestructura propia o de terceros (etapa de entrega)

La entrega se realiza por diferentes vías y en distinta medida, por ejemplo en forma de soportes físicos o como descarga pública o protegida para grupos como clientes y desarrolladores. Un método alternativo y más amplio es el Despliegue continuo, que se emplea preferentemente para aplicaciones grandes o críticas en materia de seguridad. Las tareas de la entrega continua incluyen áreas de la Integración continua, pero la amplían con un aspecto adicional que abarca la publicación (release) de los productos.

¿Qué hay detrás del Despliegue continuo?

Aunque en publicaciones fuera de la prensa especializada y en el uso general del lenguaje a veces no se hace una distinción concreta entre Entrega continua y Despliegue continuo, técnicamente existe una diferencia considerable. En el Despliegue continuo el desarrollo da un paso más y automatiza, además de la integración y las pruebas de código, también la entrega continua: constituye por tanto una subdivisión de la Entrega continua que representa una ampliación opcional del proceso y que, entre otras cosas, incrementa la seguridad al instalar de forma temprana en los sistemas productivos actualizaciones destinadas a mejorar el rendimiento o la funcionalidad y a cerrar brechas de seguridad. La distribución se realiza por diferentes vías, como por ejemplo actualizaciones automáticas que se efectúan ya sea a través de servidores propios o en forma de una especializada Infraestructura como Servicio (IaaS). Actualmente existen además cada vez más plataformas como, por ejemplo, GitLab que integran explícitamente el Despliegue continuo como parte de su concepto junto con la Integración continua y la Entrega continua. Asimismo, proliferan los proveedores que ofrecen CI/CD junto con entornos de desarrollo completos como Software como Servicio (SaaS).

¿Qué ventajas tiene la entrega continua?

Mediante la combinación de Integración continua y entrega continua se vinculan casi todos los pasos importantes en el desarrollo de software y se diseña todo el proceso de forma cíclica en lugar de lineal. De ello resultan numerosas ventajas, de las que se benefician tanto los desarrolladores implicados como los clientes:

  • La localización rápida de errores en el código facilita la depuración y previene desarrollos erróneos
  • Las pruebas permanentes y automatizadas aceleran el desarrollo y reducen costes
  • Mayor eficiencia al prescindir de compilaciones y despliegues manuales
  • La retroalimentación directa y rápida mejora el trabajo de los desarrolladores y señala debilidades individuales
  • Lanzamientos más rápidos, frecuentes y de mayor calidad para los clientes
  • Instalación totalmente automatizada en los sistemas productivos finales mediante despliegue continuo
  • Concentrar todos los recursos en los procesos esenciales evita tiempos muertos y trabajo adicional

Debido a las numerosas ventajas, cada vez más empresas apuestan por aplicar de forma consecuente CI/CD en sus proyectos e implementar los procedimientos correspondientes. En la práctica, esto suele suponer, en la mayoría de los casos, una mayor inversión, por ejemplo en servidores de integración y entornos de prueba, que sin embargo se amortizan relativamente rápido gracias a un flujo de trabajo mejor y más ágil. Sin embargo, algunas condiciones para un uso exitoso incluyen, entre otras, una estructura adecuada de los equipos y la optimización de las pruebas automatizadas: aquí los errores pueden afectar gravemente a la estabilidad, seguridad, rendimiento y fiabilidad del software.

¿Qué herramientas ayudan en la implementación de la entrega continua?

La creación de un entorno completo y optimizado para integración continua y entrega continua resulta, especialmente para pequeñas y medianas empresas (pymes), a menudo laboriosa y consume mucho tiempo y recursos. En todo caso son imprescindibles herramientas profesionalizadas como, por ejemplo, la aplicación web Jenkins, que destaca por una interfaz clara y una usabilidad intuitiva. Una alternativa a montar una infraestructura propia son las soluciones prefabricadas ofrecidas por proveedores profesionales como GitLab o Codeship, que ofrecen CI/CD en forma de SaaS o IaaS como servicio. Con ellas los clientes pueden elegir entre varios paquetes con funcionalidades escalonadas o un entorno adaptado a medida que, según el alcance del servicio del proveedor, también puede incluir entornos de desarrollo especializados como instancia central para los programadores implicados. En la práctica también existe la posibilidad, con el know-how y la capacidad adecuados, de montar en un potente VPS (Servidor Privado Virtual), Servidor Cloud o servidor dedicado una plataforma propia e individualizada que sirva tanto para un único proyecto como para un entorno permanente. Por ejemplo, GitLab puede instalarse como software de código abierto de forma gratuita y sin limitaciones en el número de usuarios ni en la funcionalidad en una infraestructura autogestionada o en un Servidor gestionado.

Foto: Gerd Altmann en Pixabay

Escribe un comentario


Más proveedores de hosting


Más artículos interesantes

Qué es React y cuáles son las ventajas

Os explicamos qué es React y cómo podéis utilizarlo en vuestros proyectos web.

¿Qué es Vue.js y cuáles son sus ventajas?

Te mostramos dónde el uso de la herramienta JavaScript Vue.js resulta ventajoso.

Angular vs. React vs. vue.js - ¿Cuál es el mejor framework para JavaScript?

Angular vs. React vs. vue.js - Os mostramos cuál es el mejor framework para JavaScript para vuestro próximo proyecto.

¿Qué es HTML5 y qué ventajas ofrece?

Os mostramos todo lo que necesitáis saber sobre HTML5 y cómo aprovecharlo mejor en vuestro nuevo proyecto.

¿Qué es la Integración Continua y cuáles son sus ventajas?

Os mostramos qué es la CI y qué ventajas puede aportar a vuestro proyecto web en el futuro.

Zend Framework - ¿Cómo funciona la herramienta para la programación en PHP?

Zend Framework - Te mostramos las ventajas y desventajas del framework PHP.