Implementando Continuous Delivery: Visión y primeros pasos

Como comenté el lunes, estoy comenzando a trabajar con una organización en la implementación de la práctica de Continuous Delivery. La situación actual resulta por demás desafiante:

  • Varios equipos cada uno con distintos nivel de adopción de prácticas de ingeniería
  • Pasaje entre ambientes realizado prácticamente en su totalidad en forma manual
  • Necesidad concreta del negocio de poder implementar cambios en la aplicaciones de forma «inmediata»

Ufff, ¡cuantas cosas! ¿por donde empezar? Personalmente me gusta empezar explicitando la visión del proyecto para asegurar que todo el mundo esté alineado y que todo esfuerzo esté en sintonia con las necesidades. En este caso, el sponsor del proyecto fue muy explícito:

«El pasaje desde el ambiente de desarrollo hasta el ambiente de pre-producción debe ser automático«

Este es un interesante punto de partida, ya que la visión habla de ambientes, comencemos hablando de ellos. Mi propuesta default suele comenzar con 3 ambientes: desarrollo, staging y producción. Y luego ajustar en caso que el contexto requiera de algo distinto.

Otros de los puntos a trabajar es la definición de la estrategia de manejo de código, lo cual incluye no solo definir una herramienta (en este caso en particular será Git) sino también la forma en que se administrará el código (en esta caso vamos a evaluar el esquema conocido como Git Flow).

El siguiente punto que me parece muy importante definir son las condiciones que debe cumplir todo incremento entregado por los equipos de desarrollo para poder entrar al ambiente de staging: porcentaje de cobertura, cumpliendo te estándares de codificación, revisión por pares, etc, etc.

Continuará…

Continuous Delivery en ascenso

En los últimos 2 meses me he visto involucrado en 3 iniciativas de Continuous Delivery y hoy comienzo un nuevo proyecto para ayudar a una empresa a implementar esta práctica.

En la mayoría de estos últimos casos en los que he participado, partimos de un contexto donde ya estaba implementada la práctica de integración contínua, lo cual facilita en gran parte las cuestiones técnicas. Al mismo tiempo me he encontrado que uno de los principales desafios al intentar implementar la práctica de Continuous Delivery se encuentra a nivel organizacional, ya que require de la participación de otros sectores más allá de equipo de desarrollo.

La herramienta que suelo recomendar es Jenkins con el agregado del plugin Build Pipeline, aunque tengo en mi backlog de experimentos hace un spike usando Travis para aplicaciones hosteados en Heroku.

Proyecto CMS, Go Live and Next Steps

Hace unas dos semanas, salimos en producción. La parte pública de la aplicación está accesible aqui.

Por estos dias estamos comenzado a trabajar en el siguiente hito: liberar como open source toda la plataforma. Esto me resulta especialmente interesante, pues si bien yo ya he publicado algunos proyectos open source, en general han sido cosas pequeñas. En este caso se trata de un producto de dimensiones interesantes y el cual se espera que tenga aportes de la comunidad. En cuanto tengamos algo publicado, les contaré.

Chau 2012, hola 2013

Para mi el día termina cuando me acuesto a dormir. Suele pasarme que me encuentro despierto un domingo a las 3 de la madrugada pero para mi sigue siendo sábado ya que el cambio de fecha lo hago luego de dormir.

Algo similar me ocurre con el cambio de año, para mi el nuevo año no comienza hasta que regreso de las vacaciones. Por ello, para mi el 2013 comenzó el lunes pasado que fue cuando regresé de las vacaciones.

El 2012 fue un año muy interesante para mi ya que dí el gran paso de salir del trabajo en relación de dependencia. También destaco mi participación en el Agile Tour en Venezuela y mi zambullida en el mundo Ruby.

Para el 2013 tengo un par de objetivos interesantes:

  • Terminar las materias de la maestria y empezar a escribir la tesis
  • Terminar de escribir un libro que comencé el año pasado
  • Ayudar a mis alumnos de Fiuba, Martin y Aníbal, a terminar su trabajo final de carrera
  • Visitar Machu Pichu
  • Dictar un curso online sobre ingenieria de software
  • Volver a hacer radio

Bueno, es hora de poner manos a la obra.