De la máquina del developer directo a Producción, sin escalas

Ayer estuve participando de un meetup donde Marcos Nils estuvo contando sobre su implementación de GitOps. Su presentación me pareció muy interesante pero lo que más me llamó la atención fue cuando comentó que en su organización no tienen ambiente de testing, ni staging, ni nada parecido, o sea: cada developer trabaja en su máquina, sube su código a Git y eso dispara una serie de pasos que terminan instalando una nueva versión en el ambiente productivo. No todos los pasos  son necesariamente automáticos, puede que haya algún trigger manual, pero el punto central es que la aplicación no es instalada en ningún otro ambiente más que el productivo.

Apenas escuché esto me resultó muy disruptivo, luego, en el intervalo hablé personalmente con Marcos y me siguió pareciendo disruptivo, ¡ja! Una estrategia de GitOps implica una alto de grado de automatización y el manejo de infraestructura como código, lo cual facilitaría mucho el armado de nuevos ambientes. Sin embargo, lo que me comentaba Marcos es que ellos hicieron un análisis y no encontraron la necesidad de un ambiente de prueba: tienen tests automatizados y algunas cosas las prueban directamente en producción utilizando usuarios particulares de forma de no interferir con los usuarios reales. La respuesta de Marcos me pareció razonable, pues tomaron las decisión con cierto fundamento y contando con toda una serie de medidas (automatización, monitoreo, alertas, etc) que les ayudan a mitigar algunos de los riesgos de no tener un ambiente de prueba.

Personalmente las veces en que me encontré con equipos/organizaciones sin ambiente de prueba, ha sido por la imposibilidad de armar dicho ambiente en lugar de ser consecuencia de una decisión analizada. Al mismo tiempo, en varios de los proyectos que he participado había un contexto de regulaciones que obligaban a contar con un ambiente de prueba/homologación, previo al ambiente productivo.

Pero quien sabe, tal vez algún día tenga la oportunidad de experimentar con una estrategia de este tipo.

Primeras Jornadas de Ingeniería de Software del Uruguay

Los días 16 y 17 de Octubre se realizarán en Uruguay las Primeras Jornadas de Ingeniería de Software y tengo el honor de haber sido invitado como orador.

En ese contexto estaré hablando sobre unos de los temas “calientes” de la actualidad: DevOps. Concretamente el título de mi disertación será “DevOps, myths and facts of a new paradigm“. También estaré dando un taller enfocado en Test-Driven Development, Continuous Integration y Pair-Programming.

Las jornadas son de entrada libre y gratuita pero es necesario registrarse. Pueden encontrar más información en la página del evento y siguiendo la cuenta oficial de twitter.

De visita por España y Portugal

Del 21 al 25 de Mayo voy a estar participando de la conferencia XP 2018 que tendrá lugar en Porto, Portugal. En ese contexto, el lunes 21 por la mañana voy a estar dando mi Taller sobre Prácticas DevOps. Por otro lado, el martes 22 por la tarde voy a estar presentando junto a Diego Fontdevila el resultado de nuestro trabajo de investigación Technical and Organizational Agile Practices: A Latin American Survey.

Pero antes de todo esto, pasaré un par de días en Madrid y aprovecharé para participar de un Meetup de la comunidad Madriagil.  Estaré presentando una versión actualizada de la charla Patrones de Infraestructura para Continuous Delivery que presenté en año pasado en Agile 2017. Agradezco a Israel Alcázar por la organización del Meetup.

Más allá de estas actividades, si algún informático tiene ganas compartir unos tragos en algún punto de mi travesía, me escribe y coordinamos.

Agiles 2017, día 2

El día comenzó con una dinámica para “despertarnos” y algunos anuncios parroquiales. A continuación: marketplace. Si bien ya del día anterior habían quedado agendadas algunas sesiones, las mismas no eran suficientes para completar la agenda. Un detalle a destacar es que para evitar que el marketplace se estirara tanto como el día anterior, se decidió reducir el tiempo de presentación de cada sesión a 30 segundos, lo cual funcionó muy bien (#lessonLearned).

Una de las sesiones que había quedado agendada del día anterior, fue la de “Introducción a Extreme Programming” que hice a primera hora de la jornada. Al igual que en mi otra sesión, hubo mucha más gente al final que al inicio, tal vez unas 50 personas. Para la sesión utilicé las diapositivas de mi ya clásica sesión de ModernXP, los cuales están disponibles para descarga aquí.

Inicio de mi sesión de Extreme Programming

A continuación, asistí a la sesión de Lucho Salazar sobre Story Conversation Canvas, una herramienta en papel desarrollada por el propio Lucho para guiar las conversiones sobre User stories. La herramienta me pareció muy útil y como siempre la oratoria de Lucho… impecable.

Ya por la tarde, estuve en el coding dojo “TDD por Zombies” facilitado por Martín Salias y Edson Chavez. Como era de esperar fue excelente. Trabajamos sobre la famosa Mars Rover Kata y aunque no llegamos a completarla, las discusiones que se dieron estuvieron muy buenas.

Continuando con cuestiones técnicas, en el siguiente bloque asistí a la sesión de Diego Fontdevila “TDD al uso nostro” en la cual contó la forma en que están haciendo TDD con una visión de negocio. Me gustó el enfoque y me llevé como tarea revisar la herramienta Serenity BDD.

Sesión TDD al uso nostro

Finalmente, cerré el día con la sesión de Hernán Wilkinson: “OOP programming is not Dead: Objetos vs. Funcional”. El principal punto de la sesión fue que la programación orientada a objetos y las programación funcional no son rivales sino complementarias. Concuerdo. Un detalle menor, el título de la sesión me pareció impreciso porque si bien se abordó lo prometido, la mayor parte de la sesión estuvo centrada en otras cuestiones.

La jornada cerró con una dinámica que no puedo describir porque me colgué en una charla en la zona del jardín.

Por la noche, compartí una muy agradable cena con Loreto, Mario Lucero, Javier Garzas, Monica, Patricio Montecinos y Héctor Mosquera.

Agiles 2017, día 0

Si bien la conferencia comienza el jueves, para los organizadores comenzó el miércoles, el día previo a la conferencia, el día cero, el día del montaje.

Llegué a Chile pasado el mediodía, visité las oficinas de un cliente y hacia el anochecer fui para el lugar de la conferencia a dar una mano. Allí me encontré a los organizadores realizando las tareas típicas de montaje: armado de bolsas, ubicación de carteles, logística de registración, etc, etc. Todo esto entre risas y buena onda.

Este Ágiles, el 2017, es el décimo. Si, ya pasaron casi 10 años desde aquella primera edición en el hotel Bauen de Buenos Aires. Sinceramente no recuerdo, en todos estos años, un Agiles que haya despertado tantas expectativas. Creo que estas expectativas se deben a un par de cuestiones:

  • Por primera vez el evento será completamente en formato Open Space
  • La cantidad estimada de asistentes ronda los 800, un nuevo record para la conferencia
  • El evento sea realizó sin sponsors comerciales (al menos hasta el momento, no ha habido en la página ninguna mención a sponsors)

Bueno, ya es hora de dormir, porque mañana la jornada inicia temprano.

Continuará…

Notas del Taller de CD + DevOps @Uruguay

La semana pasada estuve facilitando mi taller de Continuous Delivery y Prácticas DevOps en Uruguay.

El taller salió muy bien, hice algunas pequeñas modificaciones respecto de las ediciones anteriores: agregué un bolilla sobre herramientas de infraestructura inmutable y algunos patrones de zero-down-time release. El taller tuvo una asistencia record de 15 participantes y una evaluación final de 4,6/5.

Quiero felicitar y agradecer a mis colegas Pablo y Ely por la organización logística que fue impecable.

La próxima edición del taller será en Buenos Aires el día 2 de Octubre, más información aquí.

 

Un equipo con 5 Pinos

Hacía bastante tiempo que tenía ganas de trabajar con la gente de 10 Pines. Finalmente luego varios desencuentros de coordinación, hace un par de semanas @egutter me llamo y me dijo: “Tengo un proyecto para que trabajemos juntos”. Y así fue.

Hace un par de semanas comencé a trabajar con un equipo de 10 Pines. En realidad es un equipo mixto en el que hay gente de 10 Pines y también de otras empresas.

El proyecto en cuestión se trata de hacer mantenimiento evolutivo de una aplicación de gestión de contratos, facturación, etc, etc. La aplicación está construida con C#, ASP.NET MVC y NHibernate, corre sobre SQLServer e interactua con Biztalk. Como herramienta de gestión y repositorio de código se utiliza TFS y como servidor de integración continua, Team City.

Sin embargo, a pesar de estas cuestiones técnicas, yo no estoy ocupando un rol técnico en el proyecto. Me sumé al equipo en el rol de facilitador/gestor/experimentador. La idea es intentar mejorar la dinámica de trabajo del equipo.

Continuará…