SlideShare una empresa de Scribd logo
1 de 56
Descargar para leer sin conexión
Entrega Continua en la
práctica
Geykel Moreno @geykel
gmoreno@thoughtworks.com
Carlos Fuentes @educharlief
cfuentes@thoughtworks.com
Capacitación
El proyecto
y sus desafíos...
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
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
Nuestro requerimiento
● Construir nuevos requerimientos
RÁPIDAMENTE
● Respuesta a prioridades CAMBIANTES
● Mantener ALTA la calidad
¡y hacerlo con un equipo de tamaño limitado!
Escenario inicial
el antes...
Arquitectura monolítica
Inicialmente:
● 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
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
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
¿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
Reduce el tamaño de la
entrega
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
“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
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
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
¡Automatiza casi todo!
Deployment pipeline
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)
Confianza en el código
Programación en
parejas
Pruebas
BDD y TDD
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
Features toggles
Esconder funcionalidades
● Trabajo en progreso
● Funcionalidades inestables
● Estrategia de negocio
¿Cómo?
● Archivos de configuración
● Variables de ambiente
● Servicios externos
Escenario actual
...el después
Automatización de las pruebas
Automatización de las
pruebas
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
Automatización de
builds
Automatización de
builds
Automatizar los
ambientes
Mejora Continua
Integración Continua
Radiador
Kanban
Haz una sola cosa y hazlo bien
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.
Kanban
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
Kanban
Scrum vs Kanban
Kanban en el proyecto
Tarjetas
Automatizar la
burocracia
Estructura del
proyecto
Ser autónomo pero no sub optimizar
Squads
● “Se siente como una mini-
startup”
● Auto organizada
● Cross-functional
● De 5 a 7 ingenieros,
menos de 10
¿Por qué elegir Squads?
● > 40 proyectos
● No está dividido geograficamente
Mejora contínua…
● Feedback ( Standups diarios)
● Desplegar pequeña entregas desacopladas.
● Personas T - shaped
Squads
Prácticas: ambiente amigable
al fallo
Alineamiento vs
Autonomía
Alineamiento vs
Autonomía
Squads
Métricas
Resultados...
Trabajo realizado por
períodos
(períodos de 4 semanas)
Porcentaje de defectos
¿Preguntas?
La Biblia
Entrega Continua en la
práctica
Geykel Moreno @geykel
gmoreno@thoughtworks.com
Carlos Fuentes @educharlief
cfuentes@thoughtworks.com
Gracias

Más contenido relacionado

La actualidad más candente

Psp (personal software process) guia 0 introducción
Psp (personal software process) guia 0 introducciónPsp (personal software process) guia 0 introducción
Psp (personal software process) guia 0 introducciónAlejandra Ceballos
 
Casopracticosemana24
Casopracticosemana24Casopracticosemana24
Casopracticosemana24Agueda Vega
 
Modelos de procesos de software
Modelos de procesos de softwareModelos de procesos de software
Modelos de procesos de softwareSonia Sosa
 
Dev ops e infraestructura – acompañando nuestro software a producción
Dev ops e infraestructura – acompañando nuestro software a producciónDev ops e infraestructura – acompañando nuestro software a producción
Dev ops e infraestructura – acompañando nuestro software a producciónKleer Agile Coaching & Training
 
Victor sanchez saturdaymadrid2020
Victor sanchez saturdaymadrid2020Victor sanchez saturdaymadrid2020
Victor sanchez saturdaymadrid2020Demian Raschkovan
 
Modelos de desarrollo de software
Modelos de desarrollo de softwareModelos de desarrollo de software
Modelos de desarrollo de softwaredavidguayta
 
Aplicación Kanban en ioPlanto II
Aplicación Kanban en ioPlanto IIAplicación Kanban en ioPlanto II
Aplicación Kanban en ioPlanto IIJavier Boó Gustems
 
Modelos de desarrollo del software
Modelos de desarrollo del softwareModelos de desarrollo del software
Modelos de desarrollo del softwareGrmandma
 
Integración y Entrega Continua con Visual Studio Online
Integración y Entrega Continua con Visual Studio OnlineIntegración y Entrega Continua con Visual Studio Online
Integración y Entrega Continua con Visual Studio OnlineErnesto Cardenas Cangahuala
 
¿Te Sientes Orgulloso Del CóDigo Que Escribes?
¿Te Sientes Orgulloso Del CóDigo Que Escribes?¿Te Sientes Orgulloso Del CóDigo Que Escribes?
¿Te Sientes Orgulloso Del CóDigo Que Escribes?Israel Antezana Rojas
 
Software Development Life Cycle
Software Development Life CycleSoftware Development Life Cycle
Software Development Life CycleRoxanaSantander4
 
Continuous Delivery Un caso de estudio
Continuous Delivery Un caso de estudioContinuous Delivery Un caso de estudio
Continuous Delivery Un caso de estudioOsvaldo
 

La actualidad más candente (20)

Script psp
Script pspScript psp
Script psp
 
Psp (personal software process) guia 0 introducción
Psp (personal software process) guia 0 introducciónPsp (personal software process) guia 0 introducción
Psp (personal software process) guia 0 introducción
 
Casopracticosemana24
Casopracticosemana24Casopracticosemana24
Casopracticosemana24
 
Modelos de procesos de software
Modelos de procesos de softwareModelos de procesos de software
Modelos de procesos de software
 
Dev ops e infraestructura – acompañando nuestro software a producción
Dev ops e infraestructura – acompañando nuestro software a producciónDev ops e infraestructura – acompañando nuestro software a producción
Dev ops e infraestructura – acompañando nuestro software a producción
 
Victor sanchez saturdaymadrid2020
Victor sanchez saturdaymadrid2020Victor sanchez saturdaymadrid2020
Victor sanchez saturdaymadrid2020
 
Modelos de desarrollo de software
Modelos de desarrollo de softwareModelos de desarrollo de software
Modelos de desarrollo de software
 
Aplicación Kanban en ioPlanto II
Aplicación Kanban en ioPlanto IIAplicación Kanban en ioPlanto II
Aplicación Kanban en ioPlanto II
 
Modelos de desarrollo del software
Modelos de desarrollo del softwareModelos de desarrollo del software
Modelos de desarrollo del software
 
Capitulo 2
Capitulo 2Capitulo 2
Capitulo 2
 
Practicas técnicas
Practicas técnicasPracticas técnicas
Practicas técnicas
 
Integración y Entrega Continua con Visual Studio Online
Integración y Entrega Continua con Visual Studio OnlineIntegración y Entrega Continua con Visual Studio Online
Integración y Entrega Continua con Visual Studio Online
 
Extreme programing
Extreme programingExtreme programing
Extreme programing
 
Psp (personal software process)
Psp (personal software process)Psp (personal software process)
Psp (personal software process)
 
¿Te Sientes Orgulloso Del CóDigo Que Escribes?
¿Te Sientes Orgulloso Del CóDigo Que Escribes?¿Te Sientes Orgulloso Del CóDigo Que Escribes?
¿Te Sientes Orgulloso Del CóDigo Que Escribes?
 
Aplicación Kanban en ioPlanto
Aplicación Kanban en ioPlantoAplicación Kanban en ioPlanto
Aplicación Kanban en ioPlanto
 
Xtreme programing
Xtreme programingXtreme programing
Xtreme programing
 
Rup[1]
Rup[1]Rup[1]
Rup[1]
 
Software Development Life Cycle
Software Development Life CycleSoftware Development Life Cycle
Software Development Life Cycle
 
Continuous Delivery Un caso de estudio
Continuous Delivery Un caso de estudioContinuous Delivery Un caso de estudio
Continuous Delivery Un caso de estudio
 

Similar a Entrega contínua en la práctica

Real World Agile Roadshow 2013 - Planificación y Arquitectura Ágil
Real World Agile Roadshow 2013 - Planificación y Arquitectura ÁgilReal World Agile Roadshow 2013 - Planificación y Arquitectura Ágil
Real World Agile Roadshow 2013 - Planificación y Arquitectura ÁgilJose Luis Soria
 
Metodologias ágiles
Metodologias ágilesMetodologias ágiles
Metodologias ágilesAngel Rochy
 
Desarrollo ágil de aplicaciones
Desarrollo ágil de aplicacionesDesarrollo ágil de aplicaciones
Desarrollo ágil de aplicacionesMario Solarte
 
Scrum Xp Agile Tour Peru2008
Scrum Xp Agile Tour Peru2008Scrum Xp Agile Tour Peru2008
Scrum Xp Agile Tour Peru2008jose diaz
 
HA2NM50-EQ#6-PRESENTACIÓN SCRUM
HA2NM50-EQ#6-PRESENTACIÓN SCRUMHA2NM50-EQ#6-PRESENTACIÓN SCRUM
HA2NM50-EQ#6-PRESENTACIÓN SCRUMANA CANSECO
 
Un poco más de Agile y Scrum à la Pablo
Un poco más de Agile y Scrum à la PabloUn poco más de Agile y Scrum à la Pablo
Un poco más de Agile y Scrum à la PabloPablo García Montes
 
16416960 modelo-cascada-espiralincremental
16416960 modelo-cascada-espiralincremental16416960 modelo-cascada-espiralincremental
16416960 modelo-cascada-espiralincrementalzaggy88
 
Arquitectura de un sistema financiero complejo
Arquitectura de un sistema financiero complejoArquitectura de un sistema financiero complejo
Arquitectura de un sistema financiero complejoGabriel Omar Cotelli
 
Los reinos de finizens - Nuestro stark tecnológico
Los reinos de finizens - Nuestro stark tecnológicoLos reinos de finizens - Nuestro stark tecnológico
Los reinos de finizens - Nuestro stark tecnológicoFinizens
 
Desarrollo de Software por www.jasoftsolutions.com
Desarrollo de Software por www.jasoftsolutions.comDesarrollo de Software por www.jasoftsolutions.com
Desarrollo de Software por www.jasoftsolutions.comJosé Luis Lee Rázuri
 
Performance Tourism-Anticipación y prevención
Performance Tourism-Anticipación y prevenciónPerformance Tourism-Anticipación y prevención
Performance Tourism-Anticipación y prevenciónGlobe Testing
 
Gestion proyectos, metodología ágiles y SCRUM
Gestion proyectos, metodología ágiles y SCRUMGestion proyectos, metodología ágiles y SCRUM
Gestion proyectos, metodología ágiles y SCRUMAlejandro Marin
 

Similar a Entrega contínua en la práctica (20)

Real World Agile Roadshow 2013 - Planificación y Arquitectura Ágil
Real World Agile Roadshow 2013 - Planificación y Arquitectura ÁgilReal World Agile Roadshow 2013 - Planificación y Arquitectura Ágil
Real World Agile Roadshow 2013 - Planificación y Arquitectura Ágil
 
Scrum
ScrumScrum
Scrum
 
ASPgems 2018
ASPgems 2018 ASPgems 2018
ASPgems 2018
 
Working with a design system
Working with a design systemWorking with a design system
Working with a design system
 
ALM y Office 365
ALM y Office 365 ALM y Office 365
ALM y Office 365
 
Metodologias ágiles
Metodologias ágilesMetodologias ágiles
Metodologias ágiles
 
Scrum edison
Scrum edisonScrum edison
Scrum edison
 
Desarrollo ágil de aplicaciones
Desarrollo ágil de aplicacionesDesarrollo ágil de aplicaciones
Desarrollo ágil de aplicaciones
 
Scrum Xp Agile Tour Peru2008
Scrum Xp Agile Tour Peru2008Scrum Xp Agile Tour Peru2008
Scrum Xp Agile Tour Peru2008
 
HA2NM50-EQ#6-PRESENTACIÓN SCRUM
HA2NM50-EQ#6-PRESENTACIÓN SCRUMHA2NM50-EQ#6-PRESENTACIÓN SCRUM
HA2NM50-EQ#6-PRESENTACIÓN SCRUM
 
Un poco más de Agile y Scrum à la Pablo
Un poco más de Agile y Scrum à la PabloUn poco más de Agile y Scrum à la Pablo
Un poco más de Agile y Scrum à la Pablo
 
16416960 modelo-cascada-espiralincremental
16416960 modelo-cascada-espiralincremental16416960 modelo-cascada-espiralincremental
16416960 modelo-cascada-espiralincremental
 
Metodología scrum
Metodología scrumMetodología scrum
Metodología scrum
 
Arquitectura de un sistema financiero complejo
Arquitectura de un sistema financiero complejoArquitectura de un sistema financiero complejo
Arquitectura de un sistema financiero complejo
 
Los reinos de finizens - Nuestro stark tecnológico
Los reinos de finizens - Nuestro stark tecnológicoLos reinos de finizens - Nuestro stark tecnológico
Los reinos de finizens - Nuestro stark tecnológico
 
SCRUM
SCRUMSCRUM
SCRUM
 
Desarrollo de Software por www.jasoftsolutions.com
Desarrollo de Software por www.jasoftsolutions.comDesarrollo de Software por www.jasoftsolutions.com
Desarrollo de Software por www.jasoftsolutions.com
 
Performance Tourism-Anticipación y prevención
Performance Tourism-Anticipación y prevenciónPerformance Tourism-Anticipación y prevención
Performance Tourism-Anticipación y prevención
 
Principios de cloud native
Principios de cloud nativePrincipios de cloud native
Principios de cloud native
 
Gestion proyectos, metodología ágiles y SCRUM
Gestion proyectos, metodología ágiles y SCRUMGestion proyectos, metodología ágiles y SCRUM
Gestion proyectos, metodología ágiles y SCRUM
 

Más de Carlos Fuentes

Descubriendo el poder de la Ciencia de Datos.pdf
Descubriendo el poder de la Ciencia de Datos.pdfDescubriendo el poder de la Ciencia de Datos.pdf
Descubriendo el poder de la Ciencia de Datos.pdfCarlos Fuentes
 
Adaptive Big Data Pipelines
Adaptive Big Data PipelinesAdaptive Big Data Pipelines
Adaptive Big Data PipelinesCarlos Fuentes
 
Deep learning algo mas que una moda
Deep learning algo mas que una modaDeep learning algo mas que una moda
Deep learning algo mas que una modaCarlos Fuentes
 
Análisis, preparación y visualización de datos usando herramientas Open Source
Análisis, preparación y visualización de datos usando herramientas Open SourceAnálisis, preparación y visualización de datos usando herramientas Open Source
Análisis, preparación y visualización de datos usando herramientas Open SourceCarlos Fuentes
 
Introducción a Data Science
Introducción a Data ScienceIntroducción a Data Science
Introducción a Data ScienceCarlos Fuentes
 

Más de Carlos Fuentes (12)

Descubriendo el poder de la Ciencia de Datos.pdf
Descubriendo el poder de la Ciencia de Datos.pdfDescubriendo el poder de la Ciencia de Datos.pdf
Descubriendo el poder de la Ciencia de Datos.pdf
 
soda-sql
soda-sqlsoda-sql
soda-sql
 
Firebolt vs Snowflake
Firebolt vs SnowflakeFirebolt vs Snowflake
Firebolt vs Snowflake
 
Data Ingestion in AWS
Data Ingestion in AWSData Ingestion in AWS
Data Ingestion in AWS
 
Data Mesh
Data MeshData Mesh
Data Mesh
 
CD4ML
CD4MLCD4ML
CD4ML
 
Adaptive Big Data Pipelines
Adaptive Big Data PipelinesAdaptive Big Data Pipelines
Adaptive Big Data Pipelines
 
Deep learning algo mas que una moda
Deep learning algo mas que una modaDeep learning algo mas que una moda
Deep learning algo mas que una moda
 
HPA*
HPA*HPA*
HPA*
 
Realidad virtual
Realidad virtualRealidad virtual
Realidad virtual
 
Análisis, preparación y visualización de datos usando herramientas Open Source
Análisis, preparación y visualización de datos usando herramientas Open SourceAnálisis, preparación y visualización de datos usando herramientas Open Source
Análisis, preparación y visualización de datos usando herramientas Open Source
 
Introducción a Data Science
Introducción a Data ScienceIntroducción a Data Science
Introducción a Data Science
 

Entrega contínua en la práctica