La entrega continua (CD) es un enfoque de ingeniería de software en el que los equipos producen software en ciclos cortos, lo que garantiza que el software se pueda lanzar de manera confiable en cualquier momento y, al lanzar el software, hacerlo manualmente.
Tiene como objetivo construir, probar y lanzar software con mayor velocidad y frecuencia. El enfoque ayuda a reducir el costo, el tiempo y el riesgo de realizar cambios al permitir más actualizaciones incrementales para las aplicaciones en producción. Un proceso de implementación sencillo y repetible es importante para la entrega continua.
El CD contrasta con la implementación continua , un enfoque similar en el que el software también se produce en ciclos cortos pero a través de implementaciones automatizadas en lugar de manuales.
La entrega continua y DevOps son similares en sus significados y a menudo se combinan, pero son dos conceptos diferentes. DevOps tiene un alcance más amplio, y se centra en el cambio cultural, específicamente la colaboración de los diversos equipos involucrados en la entrega de software (desarrolladores, operaciones, aseguramiento de la calidad, gestión, etc.), así como en la automatización de los procesos. en la entrega de software.
La entrega continua, por otro lado, es un enfoque para automatizar el aspecto de la entrega y se centra en reunir diferentes procesos y ejecutarlos con mayor rapidez y frecuencia.
Por lo tanto, DevOps puede ser un producto de entrega continua y el CD fluye directamente hacia DevOps.
La entrega continua es la capacidad de entregar software que se puede implementar en cualquier momento mediante versiones manuales; esto contrasta con la implementación continua que utiliza implementaciones automatizadas.
Según Martin Fowler, el despliegue continuo requiere una entrega continua. La literatura académica diferencia entre los dos enfoques según el método de implementación; manual vs. automatizado.
Un conjunto de validaciones a través del cual una pieza de software deben pasar en su camino hacia la liberación.
El código se compila si es necesario y luego se empaqueta en un servidor de compilación cada vez que se confirma un cambio en un repositorio de control de código fuente, luego se prueba mediante una serie de técnicas diferentes (posiblemente incluyendo pruebas manuales) antes de que pueda marcarse como liberable.
Los desarrolladores acostumbrados a un ciclo de tiempo prolongado pueden necesitar cambiar su forma de pensar cuando trabajan en un entorno de CD.
Es importante comprender que cualquier confirmación de código puede ser entregada a los clientes en cualquier momento. Los patrones, como los de alternancia de funciones, pueden resultar muy útiles para la confirmación temprana de código que aún no está listo para su uso por parte de los usuarios finales.
El uso de NoSQL puede eliminar el paso de migraciones de datos y cambios de esquema, a menudo pasos manuales o excepciones a un flujo de trabajo de entrega continua.
Otras técnicas útiles para desarrollar código de forma aislada, como la ramificación de códigono son obsoletos en un mundo de CD, pero deben adaptarse para ajustarse a los principios de CD; por ejemplo, ejecutar múltiples ramas de código de larga duración puede resultar poco práctico, ya que un artefacto liberable debe construirse temprano en el proceso de CD a partir de una sola rama de código si va a pasar por todas las fases de la tubería.
La entrega continua se habilita a través de la canalización de implementación. El propósito de la canalización de implementación tiene tres componentes: visibilidad, retroalimentación e implementación continua:
La entrega continua lleva la automatización desde el control de la fuente hasta la producción. Hay varias herramientas que ayudan a lograr todo o parte de este proceso.
Estas herramientas forman parte del proceso de implementación que incluye la entrega continua.
Los tipos de herramientas que ejecutan varias partes del proceso incluyen: integración continua, automatización de lanzamiento de aplicaciones, automatización de compilación, gestión del ciclo de vida de las aplicaciones.
Para practicar la entrega continua de manera efectiva, las aplicaciones de software deben cumplir con un conjunto de requisitos arquitectónicamente significativos (ASR), como la capacidad de implementación, la modificabilidad y la capacidad de prueba.
Estos ASR requieren una alta prioridad y no se pueden negociar a la ligera.
Los microservicios se utilizan a menudo en la arquitectura para la entrega continua.
El uso de microservicios puede aumentar la capacidad de implementación y modificabilidad de un sistema de software. Las mejoras de implementación observadas incluyen: independencia de implementación, tiempo de implementación más corto, procedimientos de implementación más simples y sin tiempo de inactividad.
Las mejoras de modificabilidad observadas incluyen: tiempo de ciclo más corto para pequeños cambios funcionales incrementales, cambios de selección de tecnología más fáciles, cambios de atributos de calidad incrementales y actualizaciones más fáciles de idiomas y bibliotecas.
El libro de implementación continua escrito por Jez Humble y David Farley popularizó el término, sin embargo, desde su creación, la definición ha seguido avanzando y ahora tiene un significado más desarrollado.
Actualmente, las empresas están implementando estos principios de entrega continua y mejores prácticas. La diferencia en los dominios, por ejemplo, sigue siendo significativa y afecta la implementación y el uso.
Las empresas conocidas que tienen este enfoque incluyen Yahoo!, Amazon, Facebook, Google, Paddy Power y Wells Fargo.
Se han informado varios beneficios de la entrega continua:
A su vez, se han encontrado perjuicios:
Chen Lianping, planteó y desarrolló otros ocho desafíos de adopción. Estos desafíos se encuentran en las áreas de estructura organizativa, procesos, herramientas, infraestructura, sistemas heredados, arquitectura para CD, pruebas continuas de requisitos no funcionales y optimización de la ejecución de pruebas.
Categorías: Lanzamiento de Software Diseño de Software Proceso de Desarrollo de Software
{: .notice–success}
INF.: Esta obra contiene una traducción total derivada de Integración continua de la Wikipedia en inglés, versión del 29 de Septiembre de 2020, publicada por sus editores bajo la Licencia Libre de GNU (es) y licencia CC BY 3.0.
Los juegos gratis de Amazon Prime Gaming representan un atractivo significativo para los suscriptores de…
Si eres un amante de los videojuegos, estás de suerte. Hasta el 20 de noviembre…
La computación cuántica acaba de dar un salto gigante. John M. Martinis, recién galardonado con…
La biografía más vendida del cofundador de Apple, Steve Jobs; escrita por uno de los…
Hubo un tiempo en el que la “seguridad en el hogar” significaba confiar en un…
Elon Musk vuelve a romper todos los esquemas. Los accionistas de Tesla acaban de aprobar…