¿Qué aspectos de Release Management ayudan a explicar la diferencia entre Waterfall y Agile?

12

Al explicar DevOps a alguien, sucede que surge una pregunta como:

¿Cómo difiere la Gestión de versiones que utiliza la metodología Agile de Waterfall?

Entonces, ¿qué tipo de criterios puedes usar para explicar estas diferencias a esa audiencia?

Pierre.Vriens
fuente

Respuestas:

11

IMO DevOps es cultura, al igual que Agile (sin elegir una metodología ágil). Por lo tanto, no "hace" DevOps.

Usted "hace" una metodología de lanzamiento llamada Entrega continua como parte de una Cultura DevOps. (divulgación completa, no creo que me haya referido al CD como una metodología de lanzamiento antes, pero en mi estado de jetlagged creo que funciona)

Si va a comprar eso, esta es la definición de Entrega continua de una de las personas que escribió el libro con el mismo título, Jez Humble .

La entrega continua es la capacidad de obtener cambios de todo tipo, incluidas nuevas características, cambios de configuración, correcciones de errores y experimentos, en producción o en manos de los usuarios, de forma segura y rápida de manera sostenible.

Nuestro objetivo es hacer implementaciones, ya sea de un sistema distribuido a gran escala, un entorno de producción complejo, un sistema integrado o una aplicación, asuntos predecibles y rutinarios que se pueden realizar a pedido.

Logramos todo esto asegurando que nuestro código esté siempre en un estado desplegable, incluso frente a los equipos de miles de desarrolladores que realizan cambios a diario. De este modo, eliminamos por completo las fases de integración, prueba y endurecimiento que tradicionalmente seguían a "dev complete", así como las congelaciones de código.

Entonces, puede trabajar en una metodología ágil, con un software que pueda demostrar al negocio, asegurándose de que esté realizando las pruebas automatizadas adecuadas, reaccionando bien el cambio y todas las cosas que lo hacen mejor que la cascada. Con demasiada frecuencia, eso no significa que realmente pueda implementarlo en producción.

Terminas con algo como esto: ágil sin cd

Entonces, el software (probablemente) será mejor cuando haya terminado, si no tenía algún tipo de enfoque iterativo, pero realmente no lo sabe porque los usuarios reales nunca lo han visto.

Lo que realmente quieres es algo que se parezca más a esto:

ingrese la descripción de la imagen aquí

Cada iteración, algo se implementa en producción. Entonces, el software está implementado . Si decide crear descargas, abrir el servidor web, o como se obtiene de software en manos de usuarios que ha lanzado .

¿¡Que demonios!? ¡Pregunté por DevOps! ¡Nadie preguntó sobre la entrega continua!

Entonces, ¿qué tiene que ver DevOps con esto?

Es muy, muy difícil (casi imposible) tener realmente su software en un estado en el que pueda implementarlo cuando lo desee a menos que ese equipo esté trabajando en una cultura DevOps. Una cultura en la que los administradores del sistema, DBA, SRE, personas de seguridad, desarrolladores, QA, etc., etc., son parte de un solo equipo y no forman parte de una organización con traspasos.

Nota :

Sobre parte de un comentario publicado en esta respuesta, que era así:

Acerca de su "... software en un estado en el que podría implementarlo cuando lo desee ...": eso me recuerda sobre el software "piloto automático" (en un avión) ... Mi pregunta favorita al respecto: " Imagine una actualización se aplica a dicho software ... ¿Cómo te sentirías al hacerlo durante el vuelo ... mientras estás a bordo? ".

¡Me encanta esa pregunta (en negrita, en la cita anterior)! La idea de "¿está realmente lista?" es algo que despotrica todo el tiempo: blog . En mi opinión, es vital que confíes en la seguridad, el rendimiento y otras pruebas "secundarias" con demasiada frecuencia para practicar CD. Las funciones se realizan cuando están listas, pero los hackers siempre están ahí.

Ken Mugrage
fuente
Gracias por sus interesantes puntos de vista / respuestas (e imágenes brillantes ...). Debo admitir que nunca escuché sobre el término Metodología de lanzamiento , aunque Release Management es con lo que estoy bastante familiarizado (durante más de 2 décadas ...). Acerca de su "... software en un estado en el que puede implementarlo cuando lo desee ..." (combinado con el "jetlagged"): eso me recuerda al software "piloto automático" (en un avión) ... Mi favorito pregunta sobre eso: " Imagine que se aplica una actualización a dicho software ... ¿Cómo se sentiría al hacerlo durante el vuelo ... mientras está a bordo? ".
Pierre.Vriens
1
¡Me encanta esa pregunta! La idea de "¿está realmente lista?" es algo que despotrica todo el tiempo: blog . En mi opinión, es vital que confíes en la seguridad, el rendimiento y otras pruebas "secundarias" con demasiada frecuencia para practicar CD. Las funciones se realizan cuando están listas, pero los hackers siempre están ahí.
Ken Mugrage
1
Me refería a: "Imagine que se aplica una actualización a dicho software ... ¿Cómo se sentiría al hacerlo durante el vuelo ... mientras está a bordo?"
Ken Mugrage
Y
edítelo
Revise mi edición sugerida, para integrar su comentario interesante también. Si no le gusta, simplemente realice una reversión a la versión anterior (el enlace está dentro de "revisiones"), y / o mejore / extienda más a su gusto. Adivina qué, parece que "en vuelo" algunos de mis "permisos" cambiaron ... parece que ya tengo demasiada reputación aquí para necesitar "aprobaciones" para tales ediciones sugeridas ... por suerte, esto es solo un poco de SE- software (no es una actualización sugerida para alguna ruta de un vuelo sin la aprobación previa del control de tráfico aéreo ...). Oeps 2 (corrección): se aprobó a la velocidad de la luz ...
Pierre.Vriens
2

No estoy seguro si no hay otros, pero estos son los criterios que uso:

+-------------------+-----------+-----------+
! Criteria          ! Agile     ! Waterfall !
+-------------------+-----------+-----------+
! Release Events    ! Frequent  ! Rare      !
! Risk              ! Less      ! High      !
! Required Effort   ! Smoother  ! Peaks     !
! Volume of changes ! Small     ! Huge      !
+-------------------+-----------+-----------+

Y si realmente desea experimentar la diferencia usted mismo como usuario de algún software, piense en usar algún software (como una distribución de Linux), donde puede elegir entre usar cualquiera de esas versiones:

  • un " Rolling" lanzamiento (==> ágil).

  • un " Long Term Support" lanzamiento (==> Cascada).

Pierre.Vriens
fuente
1
El ejemplo de Linux podría no ser muy inspirador :) Personalmente, no me gustan los lanzamientos continuos debido a: 1. el nivel de calidad y 2. los cambios bastante molestos (prefiero centrarme en mi trabajo, no en el linux que estoy usando para mi trabajo). Por lo tanto, utilizo los de largo plazo (est) (a menudo superando su EOL) y solo me concentro en una actualización importante una vez cada 2-3 años. ¿A menos que esto solo aumente la adversión al cambio debido al envejecimiento? :)
Dan Cornilescu
@DanCornilescu Utilicé este ejemplo de Linux porque creo que es un ejemplo extremo del aspecto "un" lanzamiento de mgnt (es decir, la frecuencia de los lanzamientos) para ambas metodologías. Aunque "personalmente" estoy totalmente de acuerdo con su disgusto por los lanzamientos continuos, por las mismas razones que mencionó.
Pierre.Vriens