Desarrollo de software |
---|
Actividades centrales Actividades principales |
Paradigmas y modelos |
Metodologías y marcos |
Disciplinas de apoyo |
Practicas |
Instrumentos |
Estándares y cuerpos de conocimiento |
Glosarios |
Contornos |
|
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, sin hacerlo manualmente. Su objetivo es crear, 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 en 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 lanzamientos manuales; esto contrasta con la implementación continua que utiliza implementaciones automatizadas. Según Martin Fowler, la implementación continua requiere una entrega continua. La literatura académica diferencia entre los dos enfoques según el método de implementación; manual vs. automatizado.
La entrega continua trata la noción común de una tubería de implementación como un Poka-Yoke esbelto : un conjunto de validaciones a través del cual una pieza de software debe pasar en su camino para su lanzamiento. 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 se pueda marcar 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 las migraciones de datos y los 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ódigo, no son obsoletas 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 resultar poco práctico. 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 canalización.
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, comentarios 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 son 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 compilaciones, 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 en CD escrito por Jez Humble y David Farley (2010) popularizó el término, sin embargo desde su creación la definición ha seguido avanzando y ahora tiene un significado más desarrollado. Hoy en día, las empresas están implementando estos principios de entrega continua y mejores prácticas. La diferencia en los dominios, por ejemplo, médico frente a web, sigue siendo significativa y afecta la implementación y el uso. Las empresas bien conocidas que tienen este enfoque incluyen Yahoo!, Amazon, Facebook, Google, Paddy Power y Wells Fargo.
Se han informado varios beneficios de la entrega continua.
También se han investigado obstáculos.
Chen planteó y elaboró 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.
Se han informado varias estrategias para superar los desafíos de adopción de la entrega continua.
Estrategia | Descripción |
---|---|
Vender CD como analgésico | Identifique los puntos débiles de cada parte interesada que el CD puede resolver y venda el CD como analgésico a esa parte interesada. Esta estrategia ayuda a lograr la aceptación de la amplia gama de partes interesadas que requiere la implementación de un CD. |
Equipo dedicado con miembros multidisciplinarios | Sin un equipo dedicado, puede ser difícil progresar porque a menudo se asigna a los empleados a trabajar en otras corrientes de valor. Un equipo multidisciplinario no solo proporciona la amplia gama de habilidades necesarias para la implementación de CD, sino que también facilita la comunicación con los equipos relacionados. |
Entrega continua de entrega continua | Organice la implementación de CD de una manera que brinde valor a la empresa lo antes posible, incorporando más proyectos gradualmente, en pequeños incrementos y, finalmente, implementando CD en toda la organización. Esta estrategia ayuda a justificar la inversión requerida al hacer visibles los beneficios concretos a lo largo del camino. Los beneficios visibles, a su vez, ayudan a lograr el apoyo y la inversión sostenidos de la compañía necesarios para sobrevivir el largo y arduo viaje hacia el CD. |
Comenzando con aplicaciones sencillas pero importantes | Al seleccionar las primeras aplicaciones para migrar a CD, elija aquellas que sean fáciles de migrar pero que sean importantes para la empresa. Ser fácil de migrar ayuda a demostrar los beneficios de CD rápidamente, lo que puede evitar que se elimine la iniciativa de implementación. Ser importante para la empresa ayuda a asegurar los recursos necesarios, demuestra un valor claro e indiscutible y aumenta la visibilidad del CD en la organización. |
Esqueleto de canalización de Visual CD | Proporcione a un equipo un esqueleto de canalización de CD visual que tenga la vista de canalización de CD completo pero con etapas vacías para aquellos que aún no pueden implementar. Esto ayuda a desarrollar una mentalidad de CD y mantener el impulso para la adopción de CD. El esqueleto de la canalización es especialmente útil cuando la migración del equipo a CD requiere un gran esfuerzo y cambios de mentalidad durante un largo período de tiempo. |
Gota de expertos | Asigne a un experto en CD para que se una a proyectos difíciles como miembro senior del equipo de desarrollo. Tener al experto en el equipo ayuda a generar la motivación y el impulso para pasar al CD desde dentro del equipo. También ayuda a mantener el impulso cuando la migración requiere un gran esfuerzo y un largo período de tiempo. |