Deployment continuo

Hace algún tiempo leí en el blog de Eric Ries acereca de como su empresa hace deployment continuos.

Deployment es una palabra que no me atrevo a traducir, porque la he usado tanto en inglés, que ninguna de las traducciones que se me ocurren me suena bien (acepto sugerencias).

Deployment es el proceso por el cual se saca el nuevo producto. Por ejemplo, si tu tienes subida una web al servidor y actualizas a la última versión, esa actualización sería el deployment.

Digamos que el deployment continuo, es el siguiente paso lógico tras implantar un sistema de builds continuos. Es decir, partiendo de un build válido (que ha sido generado correctamente y ha pasado todos los tests), el siguiente paso asumiendo que todo ha funcionado bien, sería subir los cambios al servidor para que todo el mundo pueda disfrutar de los cambios que hemos realizado.

Por supuesto, antes de actualizar el servidor, tenemos que estar seguros de que todo va a funcionar bien, no queremos subir algo que cause o pueda causar molestias a los usuarios, por eso va a ser importante disponer de todo tipo de tests que validen lo que hemos hecho.

Las ventajas de subir los cambios continuamente son varias, pero yo destaco estas tres:

  • los usuarios de tu sitio web van a disfrutar antes de las últimas mejoras y nuevas funcionalidades
  • vas a tener feedback de tus usuarios al poco de haber implementado las cosas, y no 3 meses más tarde, con lo que podrás seguir mejorando o corrigiendo las cosas
  • tendrás un proceso automatizado de actualizar el servidor, con lo que ahorrarás tiempo a largo plazo

Entre las desventajas más importantes, yo destacaría que hacer todo esto tiene un coste y un tiempo asociados, aunque lo he estado pensando y no es tan elevado como uno pueda imaginar, si se están haciendo las cosas bien.

Seguramente me dejo cosas en el tintero, tanto en ventajas como en desventajas, pero el concepto me parece excelente, y creo que hoy día puede marcar la diferencia entre unas webs y otras.

Finalmente me gustaría comentar que este post ha surgido porque he estado pensando en como implementar esto para el curso de mecanografía y automatizar así los deployments. De momento aún no lo tengo, pero ya he pensado como podría hacerlo, y seguramente en el siguiente post comparta mis ideas sobre el caso práctico, a ver que os parece.

Enlaces muy recomendables:

Otros enlaces:

Trackback URL

, , ,

24 Comments on "Deployment continuo"

  1. Ivan
    02/05/2009 at 12:22 pm Permalink

    Es un tema interesante. Algo así quiero implementar usando scripts y Git (ya sabes mi amor por este SCM).. cuando tenga tiempo y ganas :P

    Como planeas hacerlo tu?
    Por cierto, deployment yo siempre lo he traducido por “despliegue”, pero se que no es una palabra demasiado acertada pq se suele usar sólo en entornos militares y ya sabes lo que suelen decir luego los talibanes lingüisticos cuando no usas exactamente como se debe una palabra.

  2. Pau Sanchez
    03/05/2009 at 12:51 am Permalink

    En el siguiente post contaré mas o menos lo que tengo pensado sobre esto, y así cada uno que aporte su visión ;)

    El problema de la gente “purista” (con cariño a todos vosotros), es que te critican y luego dicen cosas como “CD” cuando deberían decir DC (disco compacto) ;p

    De todos modos, yo me siento más cómodo llamando a las cosas por el nombre en el que las he aprendido: sistema de build, deployment, vcs (o scv), etc…

    Las fronteras del mundo cada vez son menores, es normal que las lenguas se mezclen, y al que no le guste, que estudie historia y verá como no es un tema nuevo ;)

  3. Ivan
    04/05/2009 at 2:30 pm Permalink

    Sinceramente, yo tambien prefiero el neologismo.. sin llegar al extremo de vacunar la carpeta ;)

  4. ray_iceman
    04/05/2009 at 3:26 pm Permalink

    Creo que la traducción más adecuada definitivamente es desplegar (desplegar la aplicación o desplegamiento de la aplicación). Al menos es la que yo ocupo cuando la traducción estrictamente lo amerita. Pero como dices, en el 99% de los casos estamos más que acostumbrados a la palabra en inglés y además casi siempre la utilizamos en un contexto donde hay gente que habla de lo mismo y sabe a que nos referimos.
    Respecto a las herramientas, al menos en mi caso que trabajo con Java, el caso mas simple es usando scripts con Ant, Maven y shell scripts (tambien uso otra herramienta llamada WLST que me permite hacer el deployment a servidores de weblogic). En la empresa donde trabajo contamos con otras herramientas mas complejas (en realidad en su interior tambien se basan en scripts simples). Una de ellas es Anthill Pro que está muy completa y te permite hacer pruebas (por ejemplo con JUnit), pero desafortunadamente tiene un costo. La otra es Hudson que es bastante similar y es open source. Como mencionas existen multiples ventajas. En nuestro caso el beneficio ha se traduce en un enorme ahorro de tiempo e incremento de la calidad pues los errores también salen a la luz rápidamente.

  5. Pau Sanchez
    05/05/2009 at 9:32 am Permalink

    Hola @ray_iceman, totalmente de acuerdo, desplegar probablemente sea la mejor traducción. Aunque al final, todos nos entendemos bien con el inglés.

    Sobre las herramientas que uso, dada mi situación actual de escasos recursos, y quitando Perforce, trato de usar herramientas gratuitas y/o opensource.

    Para el sistema de build, estoy usando Hudson junto con ant y phpunit para los tests. A parte, también tengo varias máquinas virtuales (con vmware) que corren selenium-rc/selenium-grid sobre windows/linux para pasar algunos tests.

    La verdad es que estoy bastante contento con Hudson, aunque si tubiera algo más de tiempo seguramente trataría de personalizar algunas cosas y de crearme algún plugin.

    Un saludo!

Trackbacks

  1. [...] en el artículo anterior hacía una introducción más detallada al tema de deployment/despliegue continuo, vuelvo a repetir el [...]

Hi Stranger, leave a comment:

ALLOWED XHTML TAGS:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Subscribe to Comments