Presentación de la sesión sobre Entrega Continua con Visual Studio y TFS en las ALM Sessions 2012
http://bit.ly/xGxqZT (a partir de la mitad del video)
6. ¿Te sientes identificado?
Tengo cambios que funcionan perfectamente en un
sistema pero fallan en otro.
Una vez que se termina de desarrollar una
funcionalidad, se tardan dos semanas en poder tenerla
lista en un entorno de producción o similar.
Los programadores y los testers juegan al ping-pong.
Aunque tengo las herramientas adecuadas, sigue siendo
difícil obtener feedback.
El proceso de desplegar en producción es muy complejo
y nunca se hace de la misma forma.
7. ¿Te suena?
Aunque automatice parte del despliegue, la gente de
operaciones se niega a usar las automatizaciones.
No está claro cómo volver a una versión estable si un
despliegue va mal.
Cuando hay que liberar una versión, me puedo despedir
del fin de semana.
No es posible preparar una demo rápida para un cliente
de algo que tengo en desarrollo.
8. ¿Te ha pasado alguna vez?
Me es imposible entregar un pequeño cambio o una
corrección de un pequeño error, en un corto espacio de
tiempo.
Se ha caído todo el sistema y sólo había tocado una
tontería.
Se ha caído todo el sistema y no tengo ni idea de qué se
había tocado.
Se ha caído todo el sistema, ¡y no habíamos tocado
nada!
9.
10.
11.
12.
13. tiempo.
(Del lat. tempus).
1. m. Duración de las cosas
sujetas a mudanza.
2. m. Magnitud física que
permite ordenar la
secuencia de los
sucesos, estableciendo un
pasado, un presente y un
futuro. Su unidad en el
Sistema Internacional es el
segundo
http://buscon.rae.es/draeI/SrvltConsulta?TI
PO_BUS=3&LEMA=tiempo
14. tiempo.
(Del lat. tempus).
1. m. Magnitud imposible
de predecir, que transcurre
entre que termino de
desarrollar una
funcionalidad y ésta es
liberada en producción.
15.
16. Las entregas van a ir
guiadas por las
necesidades de
negocio, no por las
restricciones
operacionales.
19. Crea un proceso repetible y
confiable para liberar software
Liberar software debería ser fácil, porque todo el proceso
habrá sido verificado cientos de veces.
Pasos de un despliegue:
Preparar entornos
Instalar la versión correspondiente de la aplicación
Configurar el despliegue
¡Todo esto (excepto quizá el hardware) es
automatizable!
20. Automatiza prácticamente todo
Construcción, despliegue, pruebas de
aceptación, actualizaciones de la base de
datos, configuraciones de entornos…
Hay cosas que no se pueden automatizar: testeo
exploratorio, demos al cliente, auditorías…
23. Mantén todo bajo control de
versiones
Documentación de requisitos, scripts de pruebas, casos
de prueba automatizados, scripts de configuración de
red, scripts de despliegue, creación y mantenimiento de
bases de datos, ficheros de configuración de la
aplicación, configuraciones de
herramientas, documentación técnica…
Se debería poder reproducir el entorno de ejecución en
una máquina limpia, pulsando un botón.
Lo mismo para el entorno de desarrollo.
24. Si duele, hazlo más
frecuentemente, y anticípate al
dolor
Encuentra lo que más te cuesta hacer, y hazlo más
frecuentemente: testing, despliegue, documentación… lo
que sea.
25. Construye con calidad
Lean: “build quality in”
Los defectos son más baratos de corregir cuanto antes
se encuentren.
Las pruebas no son una fase, ni van después del
desarrollo.
Todo el equipo es responsable de la calidad.
26. Hecho significa entregado
Done vs. Done Done.
¿Qué significa “hecho” para ti?
No existe “80% hecho”. La condición de hecho es
binaria.
Es un esfuerzo del equipo al completo.
27. Todo el mundo es responsable
del proceso de entrega
No nos pasamos la pelota de unos a otros.
Puede haber barreras organizacionales.
Movimiento DevOps.
28. Mejora continua
La entrega continua no es algo que se implemente y se
deje funcionando.
Requiere atención continuada del equipo completo.
Las retrospectivas ayudan.
29.
30.
31. Gestión de la configuración
¿Qué versión particular del software estoy usando?
Etiquetas, Ramas
¿Quién hizo un determinado cambio?
Histórico
¿Por qué se hizo un cambio?
Comentarios del checkin, asociar a WI
¿Cómo gestiono las dependencias?
Mapeo de workspaces, ramas, servidor de NuGet
¿Cómo gestiono las distintas configuraciones entre
entornos?
Transformaciones de ficheros de
configuración, gestión de cambios desde las
construcciones automatizadas
¿Cómo gestiono los entornos?
Virtualización, Lab Management
32. Integración continua
¿Cómo fomentar que se haga checkin frecuente?
¿Cómo puedo tener una batería de pruebas que se
ejecute rápido?
Pruebas sencillas, que se hagan en un
servidor, entorno dedicado, tareas atómicas, análisis de
impacto
¿Cómo escalar mi servidor de integración continua?
Máquinas de build, TFS Service,
¿Cómo puedo asegurarme de que no se pasen por alto
construcciones automatizadas rotas, o que no pasen
todas las pruebas?
Políticas de checkin
¿Cómo puedo asegurarme un mecanismo de vuelta
atrás?
Lab
Historia de la web 2.0: compañía que introducía cambios muy frecuentemente en producción.Fuecomprada por otra compañía más grande.Los compradores les dejaron seguir con su proceso y midieron. Vieron que tenían mejor uptime que todos los servicios de la compañía grande.94 minutos caído en un año (99,982 %). 6 minutos de media en resolver incidentes.
¿A alguien de la audiencia no le ha pasadonunca nada de esto?Integration hellTesting hellDev complete <> releaseFalta de automatización…
¿A alguien de la audiencia no le ha pasadonunca nada de esto?Integration hellTesting hellDev complete <> releaseFalta de automatización…
Esmuycaroestar un añoconstruyendoalgoquenadiequiere.Mucho másbaratoestarsólotresmeses.Innovación: “If I had asked people what they wanted, they would have said faster horses.” -Henry Ford Lean Startup: mínimoproducto viable.
Si sale mal se suele pensar en retrasar al máximo el despliegue, pero debería ser al revés.Si duele, hazlo más frecuentemente.tiempo de arreglar algo = tiempo de encontrarlo + tiempo de solucionarlo(Flickr eliminó el tiempo de encontrarlo)
http://estimategoat.com/Done (probado en mi máquina) vs Done Done (integrado en main, probado, ejecutado en un entorno tipo al de producción bajo cargas realistas)