Automatización Continua

34
Automatización Contínua ¿Una historia que vale la pena contar?

description

Como muchas películas de terror, tenemos un final feliz. Historias de Zombies y Gremlins, y la lucha por controlar la Matriz. Un camino de experiencias pasando por las cumbres del desafío de SCM, a implementar Integración Continua (CI) y por último lograr llegar a tener control de todo el proceso mediante ALM. http://en.wikipedia.org/wiki/Software_configuration_management) http://es.wikipedia.org/wiki/Trazabilidad http://en.wikipedia.org/wiki/Continuous_integration http://www.martinfowler.com/articles/continuousIntegration.html http://www.jug.ch/events/slides/110922_Continuous_Inspection.pdf http://www.codinghorror.com/blog/2006/10/the-build-server-your-projects-heart-monitor.html http://i.bnet.com/logos/whitepapers/Serena_Life_Cycle_Management.pdf

Transcript of Automatización Continua

Page 1: Automatización Continua

Automatización Contínua¿Una historia que vale la pena contar?

Page 2: Automatización Continua

Terror en la softscuridadHistorias que te dejarán pensando

“Basada en hechos reales”

Page 3: Automatización Continua

El despertar de los muertos vivientesEl fin del mundo: Año 2000

Page 4: Automatización Continua

El fin del mundo se aproxima (1999)

▪ Bug del Año 2000! También conocido como “el error del milenio”

▪ OK! Con GeneXus es trabajo fácil ;)a) Instalo update de GXb) Abro todas las KB’sc) Build Alld) Compiloe) Testeof) Distribuyo “pa todo el mundo”g) Yupi! Contentos con la llegada del año 2000!

▪ OK! Manos a la obra! …. Mientras tanto…

El despertar de los muertos vivientes

Page 5: Automatización Continua

Niiaaammmm! KBrebros!

Page 6: Automatización Continua

Los muertos se levantan de la tumba!

▪ +50 KB’s Zombies!! (No se tocan hace mucho)

▪ Yupi! Disquetes de 5,25” y 3,5” (hermosos 90’s)

▪ +5 versiones diferentes de KB’s, desde GX 3.0 a 6.1

▪ Muchas versiones! ¿Cuál es “la posta”?

▪ Yes! mucha cosa programada a mano!!

▪ Un mix de gustos! Cobol, FoxPro, VFP, VB…

▪ OMG! Cuantas instalaciones? Uuu… nice!

▪ A Correr!! Digo.. A Migrar!!

El despertar de los muertos vivientes

Page 7: Automatización Continua

El despertar de los muertos vivientes

Page 8: Automatización Continua

El despertar de los muertos vivientes

Page 9: Automatización Continua

¿Cómo matar un Zombie?

▪ Mantener vivo lo que vale la pena, el resto matarlo cuanto antes.

▪ Migrar siempre a última versión de GX (Si es automatizado mejor!)

▪ Refactoring! Refactoring! (en cuanto se descubra algo zombie, matarlo)

▪ Unificar! Una KB! Un Lenguaje! Un solo proceso! órganos internos apoyan a varios sistemas.

▪ Documentar! Documentar! (Principalmente proceso para no convertirse nuevamente en zombie)

▪ No permitir “chanchujo a mano” por fuera (si no queda otra, documentar y automatizar)

▪ Tracking! (saber qué cosas están mal y marcarlas para darle seguimiento)

▪ Build y Deploy, asegurarse que la nueva versión suplante a la zombie cuanto antes!

El despertar de los muertos vivientes

Page 10: Automatización Continua

Lecciones aprendidas

▪ Gestión de Configuración de Software (SCM) es “La Ley”

▪ 90’s pocas herramientas de automatización, Build, Deploy y jugar con XPW era lo que se podía hacer.

▪ Gurda tus productos de trabajo y los backup en un medio que no falle, tener replicación en caso que falle.

▪ No puedes migrarte de una última versión de GX, pasa por intermedias

▪ Migrar de GX cuanto antes! Probar cuanto antes! Corregir cuanto antes!

▪ ¿Si funciona no lo toques? Mantenlo actualizado, si se deja de usar, backup y borrado (kill the zombies!).

▪ Testing? Solo manual, documentar las pruebas y versionarla igual que versionas el sistema.

▪ Distribución e instalación (algo que no se tiene en cuenta siempre).

▪ Versionar todo! Hacer backups periódicos! (y periódicamente probar que los backups funcionan!)

▪ Un ciclo completo de build, test y deploy cada tanto viene bien (puedes aprovechar al migrarte de ver de GX)

El despertar de los muertos vivientes

Page 11: Automatización Continua

Gizmo y el efecto “Gremlins”Mogwai “Espíritu maligno”

Page 12: Automatización Continua

2001 la odisea

▪ Producto Grande! KB’s Grandes!

▪ Muchas solicitudes de cambio!

▪ Muchos módulos nuevos!

▪ Muchas mejoras para hacer!

▪ Muchos programando todo el tiempo!

▪ Muchos haciendo macanas todo el tiempo!

▪ ¿En donde estoy?

En el sector encargado de arreglar “macanas”.

Gizmo y el efecto “Gremlins”

Page 13: Automatización Continua

¿Quiéres un “Gizmo”?

Respeta las siguientes reglas:

▪ No lo expongas a la luz! Lo mataría!

▪ Nunca le des de beber agua!

▪ Nunca lo mojes!

▪ Nunca darle de comer luego de la media noche!

Gizmo y el efecto “Gremlins”

OK! Ahora estoy tranquilo, conozco las reglas!!

¿Pero todos los que juegan con “Gizmo”? ¿las conocen y las respetan?

Page 14: Automatización Continua

Gizmo y el efecto “Gremlins”

Page 15: Automatización Continua

Gremlins! Corran!

▪ Se portan mal!

▪ Son impredecibles!

▪ Se reproducen rápidamente!

▪ No siguen las reglas!

▪ Son producto de “descuidados” o “mal informados”

▪ Y lo peór de todo! Quieren maltratar a “Gizmo”

Gizmo y el efecto “Gremlins”

Page 16: Automatización Continua

Algunos tipos de Gremlins

▪ No encontramos el fuente del programa

▪ ¿Quién hizo el cambio y cuando?

▪ Grrr! Código repetido por todos lados!

▪ La documentación no corresponde!

▪ ¿Realmente lo testearon?

▪ OMG! Está en producción?

▪ ¿Quién te pidió que hicieras ese cambio?

▪ Ups, me equivoqué y envié un programa incorrecto

Gizmo y el efecto “Gremlins”

Page 17: Automatización Continua

Gremlins vs Zombies

▪ A diferencia de los Zombies, los Gremlins son producto de mucha actividad, a medida que hay más trabajo, más puntos de fallo en el proceso pueden existir.

▪ Los Gremlins tienden a proliferen, se necesita de “Policías” encargados de que se cumpla “la ley” (procesos) para mantenerlos en contról.

▪ Es casi imposible no tener Gremlins, si haces mucho, y muchos participan, es natural que aparezcan, hay que trabajar de forma continua en intentar mitigarlos.

▪ Los “Policías” pueden ser personas u herramientas, o las dos trabajando juntas son lo ideal.

Gizmo y el efecto “Gremlins”

Page 18: Automatización Continua

Caso Ejemplo:El Gremling de “datos truncados”

▪ 5 Bases de conocimiento con cientos de programas en cada una de ellas

▪ Cambio de un “dominio” de atributo de 14,5 a 18,5, todos los basados en se actualizaron correctamente. Se regeneró y recompiló y se distribuyó a los clientes.

▪ Los test no lograron el cubrimiento correcto, muchos de los programas fallaron en el cliente.

▪ No todos los programadores basaron en atributos sus variables

▪ Existía problemas además entre “cross KB’s” con llamadas a procesos externos

Gizmo y el efecto “Gremlins”

Page 19: Automatización Continua

El Gremling de “datos truncados”Solución:

▪ 1 – Notificar a todos los programadores de los errores cometidos

▪ 2 – Crear una herramienta que intente detectar y corrija el problema automáticamente.Año 2001, se utilizaba GX 6.1, se analizaron las Spec y los XPW para detectar los programas con variables que podrían estar mal creadas (se parcheaba el xpw ya con el arreglo para luego ser integrado)

▪ 3 – Corregir todos los programas, y enviarlos a probar para luego enviarlo a los clientes.Se detectaron y corrigieron cientos de programas, antes de eso ya estaba cansado de tantas “idas y venidas”, se tomó el toro por las guampas y se solucionó el problema de raíz.

▪ 4 – Fue el inicio de primeras herramientas de inspección y corrección de programas, arreglaba “problemas” en lo programado en la KB local o se podía usar para procesar lo integrado en la KB en el servidor central.

Gizmo y el efecto “Gremlins”

Page 20: Automatización Continua

Caso Ejemplo:El Gremling de “no se de donde viene”Solución:

▪ Se crearon herramientas para gestión de requerimientos

▪ Se crearon estándares de documentación para cada tipo de requerimiento.

▪ Se reservan los programas para su modificación asociados a un requerimiento (tipo lock, nadie puede trabajar en ellos hasta que sean liberados)

▪ Se documentan las modificaciones en los fuentes, asociando el bloque modificado a los requerimientos (se dejó de hacer cuando se implementó el diff entre versiones)

▪ Se “marca” los compilados con la firma del requerimiento (puedo saber desde un class o dll de qué versión del fuente fue compilado)

▪ Se realiza un empaquetado y build asociado a un requerimiento (esto puede varias según el tipo de desarrollo)

▪ Se creó una herramienta que permite ver la trazabilidad de todo el ciclo, desde un requerimiento puede verse toda la documentación, así como los fuentes involucrados y los paquetes de distribución e inclusive el código fuente (similar a GXServer)

Gizmo y el efecto “Gremlins”

Page 21: Automatización Continua

Caso Ejemplo:El Gremling de “en .net me compila…”Solución:

▪ Se detectaron algunas limitaciones, que si los programadores programan y compilan en solo un lenguaje no saltan y no son evidentes en otros.El día que lo necesitan ver funcionando en ese otro lenguaje se enteran que tienen que cambiar la forma de programarlo.

▪ Se implementó en la KB de integración que siempre se compile en todos los lenguajes para asegurarse que en el proceso de integración lo integrado compila para todas las plataformas soportadas.

▪ Para algunos bugs de generación, se parchea el código generado.

Gizmo y el efecto “Gremlins”

Page 22: Automatización Continua

Caso Ejemplo:El Gremling “el octavo pasajero”Solución:

▪ Existe metadata que viaja en los exports que afectan la definición de datos de la KB destino. El programador muchas veces tiene en su KB local una KB vieja o pruebas y cambios de otras cosas que no serían deseables que sean integradas en la KB central (sin embargo desapercibidamente viajan).

▪ Se implementó en la KB de integración un sistema de “filtro” que impide que se “rompa” o “cambie” algunas cosas en la KB central (dominios y subtipos era lo más común, si quieres hacer eso, tienes que seguir otro procedimiento formal).

Gizmo y el efecto “Gremlins”

Page 23: Automatización Continua

Lecciones aprendidas

▪ Gestión de Configuración de Software (SCM) sigue siendo “La Ley”

▪ Inspeccionar el código y filtrar las cosas indeseadas permiten protegerte

▪ Gestionar requerimientos (tanto desarrollo como mantenimiento) y permitir una trazabilidad ayudan.

▪ Crear herramientas para de forma automática arreglar “macanas”.

▪ Versionado de código fuentes (e includido comparación entre las mismas) ayuda mucho.

▪ Testing? Sigue siendo manual, pero se crearon estándares y documentación formal, tanto para la documentación técnica, cambios, manuales y evidencias de pruebas funcionales.

▪ Un ciclo completo de build, test y deploy ayuda a detectar problemas (ahora se puede automatizar con GXPublic!)

Gizmo y el efecto “Gremlins”

Page 24: Automatización Continua

Entrando a la MatrizAño 2008

Page 25: Automatización Continua

Todo es parte de la matriz

▪ Producto Monstruoso! KB’s Monstruosas!

▪ Nuevos mercados, nuevos clientes, nuevos desafíos.

▪ Muchos más programando!

▪ Muchos haciendo “macanas” todo el tiempo!

▪ ¿En donde estoy?

Estoy como “keymaker”.

Abro puertas para llegar más rápido y mejor al destinoConstruyendo herramientas relacionadas con Build & Deploy

Entrando a “La Matriz”

Page 26: Automatización Continua

¿Todo es parte de la matriz?

▪ Definiciones

▪ Diseño

▪ Requerimientos

▪ Pruebas

▪ Integración

▪ Configuración

▪ Programación

▪ Build

▪ Release

Entrando a “La Matriz”

Page 27: Automatización Continua

Foco2001 a 2008

▪ Definiciones

▪ Diseño

▪ Requerimientos

Entrando a “La Matriz”

▪ Pruebas

▪ Integración

▪ Configuración

▪ Programación

▪ Build

▪ Release

Foco>2008

Page 28: Automatización Continua

Interrogantes

▪ Acelerar el proceso y minimizar errores

▪ Mejorar la comunicación

▪ Mejorar calidad del software

▪ Estado actual y calidad de desarrollo

▪ Herramientas adaptdas a la necesidad

▪ Bloques de construcción e interacción

▪ Infraestructura flexible

▪ Trazabilidad de origen a resultado

Entrando a “La Matriz”

Page 29: Automatización Continua

Acelerar el proceso y minimizar errores

▪ Automatizando los siguientes procesoses posible acelerar y minimizar los errores

▪ Verificación

▪ Compilación

▪ Empaquetado

▪ Pruebas

▪ Inspección

▪ Distribución

Entrando a “La Matriz”

Page 30: Automatización Continua

CI – Integración contínua

▪ Integrar, generar y distribuir lo antes posible para mitigar y reducir riesgos.

▪ Eliminar procesos manuales (errores humanos)

▪ Ejecutar de forma inmediata las pruebas

▪ Disponibilidad de builds actualizados

▪ Monitorización de las métricas de calidad del proyecto

Entrando a “La Matriz”

Page 31: Automatización Continua

Automatizar tareas de poco valor

▪ Análisis de impacto antes de integrar (y filtrado)

▪ Consolidar programas

▪ Comparar programas

▪ Reorganización

▪ Generación y compilación

▪ Operaciones varias con XPZ

▪ Distribución y empaquetado de programas

▪ Comparador de esquemas de base de datos y GX

Entrando a “La Matriz”

Page 32: Automatización Continua

Lecciones aprendidas

▪ Gestión de Configuración de Software (SCM) sigue siendo “La Ley”

▪ 7x24 ayuda más de lo que te imaginas

▪ Permite trabajo entre personas geográficamente distribuidas

▪ Una única forma de hacer las cosas (una única Ley)

▪ Reducir los tiempos de desarrollo y reléase ayuda a concentrarse en arreglar

▪ Escalable, puede crecer con el crecimiento del producto y la empresa

▪ Con cada corrida se aprende y mejora el proceso (mejora contínua)

Entrando a “La Matriz”

Page 33: Automatización Continua

¿[email protected] Twitter: @3dgiordano

Page 34: Automatización Continua

Recursos: Buscar y “estudiar”

▪ Gestión de Configuración de Software (SCM)

▪ Integración contínua (CI)

▪ Deploy contínuo

▪ ALM

▪ Ispección contínua