Te va a interesar!

6/recent/ticker-posts

Deploy vs Release: Cuál es la diferencia?



Me ha pasado, ni bien arranqué en este hermoso camino de testing, que se tiraban muchos nombres de procesos y cosas que yo no tenía idea. Peor aún, se tiraban con tal ligereza como si fuese obvio lo que cada uno era.

Que Staging, que Prod, que el Hot Fix, que la Release, que el Deploy... Recuerden, yo venía de otro ámbito completamente diferente, el de las ciencias naturales. Laboratorios, cuevas, campamentos en lugares inhóspitos, trabajar en el museo de La Plata. Lo más técnico que tocaba en mis estudios era un software salido de los 90s para analizar muestras de polen de hace millones de años! Ah…la paleopalinología es una ciencia increíble…

Cuando se empieza en Testing, es fácil no tener en claro estos términos y, muchas veces, hay un miedo a preguntar qué son porque sentimos que van a pensar que no sabemos qué hacemos ahí.

Pero bueno, basta de cháchara! Hoy les voy a hablar de Deploy y Release! Qué son, sus diferencias y por qué es importante saber de qué van. 

Deploy


El deploy se refiere, básicamente, a hacerles llegar el código en un estado presentable desde las mágicas y proclives al error manos del dev a los usuarios de cada ambiente, de testers a usuarios finales.
Si vamos a las definiciones oficiales, nos van a decir que el deploy es mover software de un ambiente controlado a otro. Ambientes…les suena?

Development, Integration, Test, Staging y Production son de los más comunes que seguramente conozcan en sus trabajos. Los hay con otros nombres, variantes con otros propósitos como la performance.
Desde la primera versión que cae en Production, es decir, en el plano de los usuarios, a las compus, celulares y consolas del público… a los parches, updates y demás que ya todos conocemos.
El deploy hoy en día es una mezcolanza de procesos manuales y automatizados.
Por ejemplo, herramientas como Control-M muchas veces tienen un equipo que espera evidencia de los artefactos que se están entregando para validar y dar luz verde manualmente para que los pipelines sigan.
Por otro lado también encontramos mucha automatización en forma de orquestación de Jenkins, tests automatizados y otras yerbas.

Siempre las organizaciones apuntan a tener lo más que puedan automatizado en estos procesos.
Por qué? Fácil, porque eso significa que de las manos mágicas y proclives de los dev a los usuarios el tiempo va a ser menor! Usuarios que reciben los features que pidieron o los parches que hagan que estos dejen de mandar mails amenazando al perro del CEO, siempre son bienvenidos.
El deploy, generalmente, es la última etapa del SDLC (Software Development Life Cycle).
Testing generalmente acompaña todo el proceso: Desde el unit e integration testing a retesteo de errores. También va a confirmar con Acceptance Testing que el deploy cumple con los criterios de aceptación definidos.

Release


Y qué queda para la Release? Con todo lo que se llevó el Deploy la veo complicada… pero esperen, que hay cosas importantes que hace la Release!
La Release es una colección de uno o varios servicios cambiados o también de nuevos componentes que se DEPLOYEAN en Producción como resultado de estos cambios.
En mi opinión la release pasa más por un lado de “negocio” más que una cosa técnica. Es cuando se anuncia que va a salir esa funcionalidad nueva que todos esperan, o ese conjunto de fixes que van a mejorar la experiencia de usuario.

Y justo que menciono esto, déjenme decirles que las releases se clasifican en Mayores o Menores. También puede que hayan Releases de Emergencia o de mantenimiento, pero la clasificación de menor o mayor es la que más se usa (y la que más sentido tiene quizás para mi).
Una release menor va a introducir cambios menores, mejoras que no introducen nuevos componentes ni cambian sustancialmente a los existentes.

Una release mayor, en cambio, va a traer cosas nuevas con bombos y platillos o bien se van a actualizar tanto los componentes existentes que casi se podrían considerar hechos a nuevo!

Y la diferencia?


Bueno, la diferencia la veo yo más por el lado de qué comunica cada una. El deploy apunta a comunicar que una versión del software fue “instalada” en un ambiente.
“Hicimos el deploy en Staging”
“El deploy en UAT salió mal”.  
Esas cosas que escuchamos se refieren a esta acción. La release en cambio, apunta a contar qué tan grande o pequeño es el deploy y qué cosas cambia o trae nuevas.

Conclusión


Espero les haya resultado útil leer este artículo! A mi al principio me costó ponerme a entender de qué iban estos conceptos y me parecen super importantes que nosotros, como testers, los tengamos en claro para saber qué técnicas o cosas podemos aportar desde nuestra especialidad para hacer que el SDLC vaya de la mejor manera posible!

Nunca dejen de aprender.


Publicar un comentario

0 Comentarios