¿Cómo se relaciona la integración continua con la entrega / implementación continua?

20

Aquí hay una cita del contenido actual de :

... proceso de fusionar copias de código de trabajo del desarrollador en una base de código compartida con frecuencia para evitar o minimizar los problemas de integración.

OK, entiendo eso. Pero entonces también hay y , y ahí es donde continuamente perderse un poco:

  • ¿Cómo se relaciona la integración continua con la entrega continua y / o la implementación continua , suponiendo que en algún lugar a lo largo de la (s) línea (s) a través de integrationusted termine deliveringen un entorno objetivo donde todo estará deployed?
  • ¿Cuál es la diferencia entre entrega continua y despliegue continuo ?

En el pasado, antes de que DevOps se llamara DevOps, utilizamos terminología que posiblemente podría ayudar a comprender estos nuevos términos de DevOps, como:

  • promover a (o degradar ) algún objetivo previo a la producción, opcionalmente combinado con algún tipo de proceso de regeneración (compilaciones, enlaces, etc.) para empaquetar todos los componentes relacionados en cosas similares a ejecutables. ¿Eso es lo que debería ser similar / cercano a la integración continua , o no?
  • distribuir a algún entorno de destino, utilizando algo como FTP (si las copias estándar no pueden cerrar la brecha), pero aún no lo active en el destino. ¿Eso es lo que debería ser similar / cercano a la entrega continua , o no?
  • instalar (o activar ) en algún entorno de destino, combinado con cosas como enlaces, operaciones de detención / inicio, etc. ¿Eso es lo que debería ser similar / cercano a la implementación continua , o no?
Pierre.Vriens
fuente
Demasiada rebaja de etiqueta hace que sea difícil de leer. Eso no trae más contexto a la pregunta, así que creo que los Ords pueden ser subrayados por un subrayado _markdown_ para facilitar la lectura
Tensibai
1
Me refiero a la edición es un dolor :) pista para la respuesta blog.crisp.se/wp-content/uploads/2013/02/…
Tensibai
Publicación
Dan Cornilescu el
Mi respuesta relacionada: softwareengineering.stackexchange.com/a/358551/3385
Nakilon

Respuestas:

23

La entrega continua y la implementación continua llevan la integración continua un paso más allá, al agregar un paso de 'implementación a producción' al proceso. La diferencia entre la entrega continua y la implementación es que para la entrega este paso se realiza manualmente y para la implementación es automático.

Diferencia entre integración continua, entrega continua y despliegue continuo

Diferencia entre integración continua, entrega continua e implementación continua. Imagen copiada de codeproject.com

Ya sea que realice una entrega continua o una implementación continua, es una opción de implementación. Si realiza una implementación continua, los cambios en el código se implementarán automáticamente después de que se pasen las pruebas de aceptación. Esto puede o no ser deseable para su producto. Con la entrega continua, las personas pueden elegir si se implementa o no un cambio de código en particular (y posiblemente dónde se implementa exactamente).

Dado que la diferencia entre la entrega continua y la implementación es pequeña y muchas personas desconocen la diferencia exacta, los dos términos a veces se usan indistintamente.

THelper
fuente
¡Agradable! Pero ... la solución (su respuesta) a un problema (mi pregunta), cambia el problema ... lea más ...
Pierre.Vriens
4

La entrega continua y la implementación continua (CD) son más o menos lo mismo *. Cada vez que un cambio se considera "válido" (probado / verificado), debe publicarse de inmediato. Puede hacerlo tantas veces al día como haya terminado el trabajo.

La integración continua (CI) solo se refiere a la combinación de código a menudo para garantizar que las ramas de características no se desvíen demasiado de su rama principal 'maestra', y también para que sepa muy rápidamente si hay algún problema con el código de un perspectiva de integración, es decir, ¿rompió alguna funcionalidad al cambiar cosas?

En cuanto a cómo se relacionan entre sí, CI ayuda en gran medida a verificar el código para que pueda ser lanzado rápidamente (CD). Todavía puede lograr CD sin CI (y viceversa), pero encontrará que a menudo hace que la vida sea mucho más fácil integrar su código temprano y, a menudo, encontrar problemas más rápido, lo que a su vez le permitirá solucionar dichos problemas más rápido y finalmente ¡entregue sus funciones más rápido!

* Editar: aquí hay un artículo que discute la diferencia. https://puppet.com/blog/continuous-delivery-vs-continuous-deployment-what-s-diff La entrega continua no siempre significa realmente desplegarse a la producción en todo momento, sino que significa un despliegue constante en un entorno similar a la producción , con la confianza de que esos cambios podrían pasar a producción en cualquier momento una vez que el negocio esté listo. En la práctica, la mayoría de las personas combinan estos términos.

gusano
fuente
merci! Pero según tu "más o menos lo mismo", ¿en serio? ¿Puedes pensar en algo que ilustra los matices?
Pierre.Vriens
He actualizado mi publicación con una nota sobre las diferencias, sin embargo, creo que en una conversación normal la mayoría de la gente usará estos términos indistintamente.
tayworm
2

Una determinada versión de un producto de software primero debe completar su etapa de integración antes de que pueda entregarse o implementarse.

Para continua entrega / despliegue continua integración es una necesidad. De lo contrario, si los eventos de integración completados están demasiado separados para calificar para el atributo "continuo", entonces también lo están las posibles entregas / implementaciones (solo un subconjunto de las versiones integradas generalmente califican para entregas / implementación).

Actualización: Mi respuesta solo subraya la dependencia (relación) entre CI y (ambos) CD, la terminología está bastante bien cubierta por la respuesta de THelper.

El único comentario que tendría sobre eso es sobre el uso (sobrecargado) de deployment. Las implementaciones en entornos que no son de producción son reales. Incluso pueden ocurrir con la frecuencia suficiente, por ejemplo, como parte de varias etapas de prueba durante la entrega continua. Pero eso no hace tales despliegues continuous deployments. Las implementaciones continuas se refieren específicamente a las implementaciones en el entorno de producción.

Dan Cornilescu
fuente
ok, todo eso ayuda, pero ¿tal vez puedas expandir tu respuesta con cómo describirías la entrega y la implementación?
Pierre.Vriens
1

Básicamente, la integración continua es parte de la entrega continua y la implementación continua, excepto que las versiones se realizan automáticamente. También puede pensar en la entrega continua como un próximo paso lógico de integración continua y funciona en todos los entornos. La integración continua también ayuda con la verificación de artefactos para que pueda implementarse más rápido. Aunque no es posible tener una implementación continua sin una integración continua y es mucho más fácil detectar errores con la integración continua. Todas estas "cosas continuas" se tratan en última instancia de eliminar acciones innecesarias en el flujo de trabajo de desarrollo. Lo más importante, CI / CD son importantes tanto desde la perspectiva técnica como comercial. Las empresas que no adoptan estos principios DevOps corren el riesgo de seguir el camino de los dinosaurios. En el entorno de TI de ritmo rápido de hoy esDevOps o morir.

DevOps Jedi
fuente