La respuesta aceptada a mi pregunta sobre " ¿Cómo se relaciona la integración continua con la entrega / implementación continua? " También explica la pequeña diferencia entre la entrega continua y la implementación continua . Parece estar relacionado con la respuesta a una pregunta como "¿Cómo desea implementar en la producción, mientras que estas son las opciones (exclusivas) para elegir:
- Automático).
- Manual.
No puedo imaginar que habrá un pobre "operador" al otro lado del muro de DevOps, que tendrá que hacer algo que corresponda a lo que sea que ese "manual" signifique ... Mis preguntas:
- ¿Mi referencia (en mi pregunta) a "distribuir" versus "instalar" está cerca de una posible implementación de tal "manual"? Aquí hay una cita relevante de mi pregunta relacionada:
- 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?
- ¿Cuáles son otras posibles implementaciones de la misma?
continuous-delivery
continuous-deployment
Pierre.Vriens
fuente
fuente
Respuestas:
Personalmente, considero que el
distribution
software para un objetivo es solo un paso intermedio de una implementación: la instalación / activación de ese software es necesaria para completar esa implementación.Para mí,
delivery
(como encontinuos delivery
) se detiene cuando se crea el software que se va a implementar y está disponible para su implementación (es decir, para distribución, instalación y activación)Entonces, para responder a su primera pregunta, no, no consideraría la distribución e instalación como un reflejo del paso manual que diferencia la entrega continua de la implementación continua.
Sí, en algunos casos (con suerte raros) ese paso manual es solo la decisión humana final para desplegarse en la producción, lo que refleja la desconfianza cultural en la automatización de procesos y la comodidad mental de tener una doble verificación humana y cerrar la decisión de implementación (asumiendo así responsabilidad por ello) incluso si esa decisión se toma únicamente en base a un algoritmo que puede automatizarse (como contar los resultados de las pruebas de aprobación / reprobación).
Pero, en general, simplemente refleja el hecho de que la decisión de realizar el despliegue en producción no es simplemente el resultado de un algoritmo automatizado. Aquí sería un ejemplo de tales casos:
Por lo tanto, no consideraría el paso manual simplemente como un problema de implementación.
fuente
Una consideración adicional si está publicando algo que espera que otros proyectos consuman, la implementación también adquiere el significado de "publicar para que otros lo usen"
Considere un flujo de trabajo donde implemente una biblioteca en un repositorio de artefactos común. Esta parte del proceso podría ser parte de la implementación de otro componente que requiere ese artefacto en el momento de la compilación o podría ser simplemente una actualización de una biblioteca común. Pero independientemente, para ese artefacto, su ciclo de vida no necesariamente termina al estar disponible para el consumo de otros, pero el despliegue de ese artefacto en el repositorio de artefactos puede ser la etapa final en el trabajo de los desarrolladores después de que hayan decidido cortar un nueva versión de lanzamiento y antes de que otros puedan consumir con seguridad la nueva versión.
fuente