entrega contínua en la práctica

56
Entrega Continua en la práctica Geykel Moreno @geykel [email protected] Carlos Fuentes @educharlief [email protected] Capacitación

Upload: carlos-fuentes

Post on 20-Jan-2017

123 views

Category:

Software


2 download

TRANSCRIPT

Page 1: Entrega contínua en la práctica

Entrega Continua en la prácticaGeykel Moreno @geykel

[email protected]

Carlos Fuentes @educharlief

[email protected]

Capacitación

Page 2: Entrega contínua en la práctica

El proyectoy sus desafíos...

Page 3: Entrega contínua en la práctica

El cliente

● Empresa de servicios financieros○ Banca de inversión○ Broker-dealer○ Investigación○ Operaciones (Contabilidad, finanzas,

etc.)● Sucursales en varios países● Giro de negocios complejo

Page 4: Entrega contínua en la práctica

La calidad es importante

Nuestras aplicaciones se utilizan para:

● Cumplimientos legales○ En varias jurisprudencias

● Verificación de clientes● Cálculos de pagos financieros● Detección y aviso de discrepancias

Page 5: Entrega contínua en la práctica

Nuestro requerimiento

● Construir nuevos requerimientos RÁPIDAMENTE

● Respuesta a prioridades CAMBIANTES● Mantener ALTA la calidad

¡y hacerlo con un equipo de tamaño limitado!

Page 6: Entrega contínua en la práctica

Escenario inicialel antes...

Page 7: Entrega contínua en la práctica

Arquitectura monolíticaInicialmente:

● Fácil de desarrollar● Fácil de desplegar● Fácil de escalar

A medida que va creciendo la aplicación y el equipo:

● Difícil de entender● Modularidad se rompe con el tiempo● IDE sobrecargado, baja productividad● Obstaculiza el escalado del desarrollo● Difícil de escalar

Page 8: Entrega contínua en la práctica

Con el paso del tiempo (~5 años)

Aplicaciones a mantener:

● Hemos ido desde 5 aplicaciones a más de 40 aplicaciones, servicios y componentes

Tamaño del equipo:

● Bastante estable entre 12 y 16 desarrolladores, QA’s y BA’s

Page 9: Entrega contínua en la práctica

Entrega Continua

“es una disciplina de desarrollo de software donde construyes software de tal manera que puede ser entregado/desplegado a producción en cualquier momento” - Martin Fowler

Page 10: Entrega contínua en la práctica

¿Por qué adoptar?

● Reduce el riesgo del despliegue: pequeños cambios

● Progreso creíble: trabajo terminado medido por (el desarrollador dice que está terminado) es menos creíble que desplegado en producción

● Retroalimentación del usuario final

Page 11: Entrega contínua en la práctica

Reduce el tamaño de la entrega

Page 12: Entrega contínua en la práctica

Estás haciendo entrega continua cuando:

● El software es desplegable durante todo su ciclo de vida

● El equipo prioriza mantener el software desplegable sobre trabajar en nuevas funcionalidades

● Retroalimentación rápida y automatizada sobre la disponibilidad de los sistemas para producción en cualquier momento que alguien realice un cambio en ellos

● Realizar despliegues “push-button” de cualquier versión del software en cualquier momento hacia cualquier entorno bajo demanda

Page 13: Entrega contínua en la práctica

“Una prueba clave es que un ejecutivo del negocio solicite un despliegue de una

versión del software y no cunda el pánico”- Martin Fowler

Page 14: Entrega contínua en la práctica

Principios

● Crear proceso repetitivo y confiable para la entrega de software

● Automatizar todo lo posible● Mantener todo almacenado en un sistema

de control de versiones● Listo significa entregado● Todos son responsable de la entrega

Page 15: Entrega contínua en la práctica

Prácticas

● Compila tus artefactos sólo una vez● Pruebas automatizadas a todos los niveles● Realiza los despliegues de la misma manera

en todos los entornos● ‘Smoke test’ todos los despliegues● Mantener ambientes similares● Si algo falla, para todo

Page 16: Entrega contínua en la práctica

¡Automatiza casi todo!

Page 17: Entrega contínua en la práctica

Deployment pipeline

Page 18: Entrega contínua en la práctica

Entrega continua != Despliegue continuo

Despliegue continuo significa que cada cambio va a través del pipeline y es automáticamente puesto en producción (resultando en varios despliegues en el día)

Entrega continua significa que estás en la capacidad de realizar despliegues frecuentes pero puedes optar por no hacerlo (los negocios usualmente prefieren una frecuencia de despliegue más lenta)

Page 19: Entrega contínua en la práctica

Confianza en el código

Page 20: Entrega contínua en la práctica

Programación en parejas

Page 21: Entrega contínua en la práctica

Pruebas

Page 22: Entrega contínua en la práctica

BDD y TDD

Page 23: Entrega contínua en la práctica

Integración continua

● Usualmente se refiere a integrar, construir y probar el código dentro de un ambiente de desarrollo.

● Entrega continua se construye sobre este concepto manejando además las etapas requeridas para el despliegue a producción

Page 24: Entrega contínua en la práctica

Features toggles

Esconder funcionalidades

● Trabajo en progreso● Funcionalidades inestables● Estrategia de negocio

¿Cómo?

● Archivos de configuración● Variables de ambiente● Servicios externos

Page 25: Entrega contínua en la práctica

Escenario actual...el después

Page 26: Entrega contínua en la práctica

Automatización de las pruebas

Page 27: Entrega contínua en la práctica

Automatización de las pruebas

Page 28: Entrega contínua en la práctica

Automatización de builds

● Compilar el código fuente en código binario● Empacar el código binario● Correr las pruebas automatizadas● Desplegar en los diferentes ambientes● Crear documentación y release notes

● Rake○ Rake build○ Rake build deploy○ Rake test:unit, rake test:acceptance○ Rake pc

Page 29: Entrega contínua en la práctica

Automatización de builds

Page 30: Entrega contínua en la práctica

Automatización de builds

Page 31: Entrega contínua en la práctica

Automatizar los ambientes

Page 32: Entrega contínua en la práctica

Mejora Continua

Page 33: Entrega contínua en la práctica

Integración Continua

Page 34: Entrega contínua en la práctica

Radiador

Page 35: Entrega contínua en la práctica

KanbanHaz una sola cosa y hazlo bien

Page 36: Entrega contínua en la práctica

Kanban● kan, 看 カン, significa "visual," y ban, 板 バン,

significa "tarjeta" o "tablero"● Desarrollado por Taiichi Ohno, en Toyota● Kanban da a los equipos más opciones

flexibles de planificación, la producción más rápido, claro enfoque y la transparencia en todo el ciclo de desarrollo.

Page 37: Entrega contínua en la práctica

Kanban

Page 38: Entrega contínua en la práctica

Kanban - principios● Flexibilidad en la planificación

○ El equipo solo está enfocado en el trabajo en progreso

● Minimizar el ciclo de vida○ Tiempo medio para completar una

tarjeta● Eficiencia a través del enfoque

○ Multitarea mata la eficiencia● Tener métricas visuales

○ Mejora contínua

Page 39: Entrega contínua en la práctica

Kanban

Page 40: Entrega contínua en la práctica

Scrum vs Kanban

Page 41: Entrega contínua en la práctica

Kanban en el proyecto

Page 42: Entrega contínua en la práctica

Tarjetas

Page 43: Entrega contínua en la práctica

Automatizar la burocracia

Page 44: Entrega contínua en la práctica

Estructura del proyectoSer autónomo pero no sub optimizar

Page 45: Entrega contínua en la práctica

Squads

● “Se siente como una mini-startup”

● Auto organizada● Cross-functional● De 5 a 7 ingenieros,

menos de 10

Page 46: Entrega contínua en la práctica

¿Por qué elegir Squads?● > 40 proyectos● No está dividido geograficamente

Mejora contínua…

● Feedback ( Standups diarios)● Desplegar pequeña entregas desacopladas.● Personas T - shaped

Page 47: Entrega contínua en la práctica

SquadsPrácticas: ambiente amigable

al fallo

Page 48: Entrega contínua en la práctica

Alineamiento vs Autonomía

Page 49: Entrega contínua en la práctica

Alineamiento vs Autonomía

Page 50: Entrega contínua en la práctica

Squads

Page 51: Entrega contínua en la práctica

MétricasResultados...

Page 52: Entrega contínua en la práctica

Trabajo realizado por períodos

(períodos de 4 semanas)

Page 53: Entrega contínua en la práctica

Porcentaje de defectos

Page 54: Entrega contínua en la práctica

¿Preguntas?

Page 55: Entrega contínua en la práctica

La Biblia

Page 56: Entrega contínua en la práctica

Entrega Continua en la prácticaGeykel Moreno @geykel

[email protected]

Carlos Fuentes @educharlief

[email protected]

Gracias