SlideShare una empresa de Scribd logo
1 de 45
Descargar para leer sin conexión
Metodologías Ágiles de Desarrollo de Software

Domingo Gallardo, DCCIA, Univ. Alicante
Continuous Delivery
Sesión 9
Metodologías Ágiles de Desarrollo de Software

Domingo Gallardo, DCCIA, Univ. Alicante
Valores del desarrollo ágil
• Valor del manifiesto ágil: “Working 

software”

• El proyecto crece incrementalmente,

con un flujo continuo de cambios

• Entregas rápidas para obtener feedback 

lo antes posible

• Optimizar el flujo desde que se empieza 

una historia hasta que se entrega 

(Kanban)
2
Metodologías Ágiles de Desarrollo de Software

Domingo Gallardo, DCCIA, Univ. Alicante
La “última milla”
3
Metodologías Ágiles de Desarrollo de Software

Domingo Gallardo, DCCIA, Univ. Alicante
No es ágil
• Tardar 6 semanas en integrar un macro-proyecto formado por 5 proyectos
independientes porque no se habían probado las conexiones entre los módulos

• Tardar 3 semanas en lanzar una nueva versión de un proyecto porque se han detectado
fallos al instalarlo en el entorno de producción

• Tener que esperar 1 semana a que se realicen todas las pruebas de aceptación al
nuevo release antes de seguir desarrollando nuevas funcionalidades en el proyecto
4
JAR
JAR
JAR Base de datos

de integración
Entorno

de integración
Deploy
Build
Base de datos

de producción
Entorno

de producción
Tests

OK
6 semanas
JAR
JAR
JAR
Build
Deploy
Metodologías Ágiles de Desarrollo de Software

Domingo Gallardo, DCCIA, Univ. Alicante
Netflix como ejemplo ágil
5
Deploying the Netflix API
Metodologías Ágiles de Desarrollo de Software

Domingo Gallardo, DCCIA, Univ. Alicante
Etsy como ejemplo ágil
6
Etsy’s Product Development with Continuous Experimentation
Metodologías Ágiles de Desarrollo de Software

Domingo Gallardo, DCCIA, Univ. Alicante
Etsy como ejemplo ágil
7
Etsy’s Product Development with Continuous Experimentation
Metodologías Ágiles de Desarrollo de Software

Domingo Gallardo, DCCIA, Univ. Alicante
¿Qué es continuous delivery?
• Conseguir una puesta en producción (release) del software:

• Poco arriesgada

• Frecuente

• Barata

• Rápida

• Predecible

• Reproducible

• “Reduce the cost, time, and risk of delivering incremental changes to users”

!
• “How long would it take your organization to deploy a change that involved just
one single line of code? Do you do this on a repeatable, reliable basis?”
8
Mary and Tom Poppendieck - Implementing Lean Software Development, p59.
Jez Humble - Adopting Continuous Delivery
Metodologías Ágiles de Desarrollo de Software

Domingo Gallardo, DCCIA, Univ. Alicante
DevOps
• Developers
• Su trabajo es añadir nuevas características

• Trabajan en entornos locales (“en mi máquina funciona”)

• Utilizan herramientas y lenguajes que permiten abstraer y automatizar

• Operations: 

• Su trabajo es mantener el sitio web seguro, estable y rápido

• Detectar problemas, apagar fuegos

• DevOps: nueva filosofía de trabajo, donde los desarrolladores y operadores
trabajan en conjunción

• Automatización

• Infrastructure-as-code

• Herramientas: Chef, Vagrant, …
9
Metodologías Ágiles de Desarrollo de Software

Domingo Gallardo, DCCIA, Univ. Alicante
Ventajas del continuous delivery
• Estabilidad y confiabilidad en el proceso de despliegue y lanzamiento

• Feedback continuo

• Cuanto antes se detecta un error es más fácil encontrar el fallo (Time
to Resolve)

• Mejora la calidad del producto
10
Metodologías Ágiles de Desarrollo de Software

Domingo Gallardo, DCCIA, Univ. Alicante
Algunas técnicas
• Pequeños cambios que se despliegan continuamente

• Todos los builds son candidatos al release 

• Todo en el control de versiones (se debe poder probar cualquier
release)

• Tuberías de despliegue (deployment pipelines) 

• Integración continua: automatización de builds, tests, despliegues,
entornos
11
Metodologías Ágiles de Desarrollo de Software

Domingo Gallardo, DCCIA, Univ. Alicante
Pequeños cambios que se despliegan
continuamente
12
John Allspaw - http://www.slideshare.net/jallspaw/ops-metametrics-the-currency-you-pay-for-change
Metodologías Ágiles de Desarrollo de Software

Domingo Gallardo, DCCIA, Univ. Alicante
Metodologías Ágiles de Desarrollo de Software

Domingo Gallardo, DCCIA, Univ. Alicante
Metodologías Ágiles de Desarrollo de Software

Domingo Gallardo, DCCIA, Univ. Alicante
Metodologías Ágiles de Desarrollo de Software

Domingo Gallardo, DCCIA, Univ. Alicante
Metodologías Ágiles de Desarrollo de Software

Domingo Gallardo, DCCIA, Univ. Alicante
Metodologías Ágiles de Desarrollo de Software

Domingo Gallardo, DCCIA, Univ. Alicante
Time To Resolve
18
Metodologías Ágiles de Desarrollo de Software

Domingo Gallardo, DCCIA, Univ. Alicante
¿Y los grandes cambios?
• Los incrementos pequeños no significan dejar de trabajar en
características que necesiten muchas modificaciones

• Es posible ir desarrollando, probando y colocando las piezas para que el
sistema evolucione hacia un momento futuro en sea fácil introducir una
característica totalmente nueva

• Buen diseño de código, por ejemplo seleccionar una implementación
concreta utilizando interfaces y factorías

• Pequeños cambios en las APIs compatibles con los tests de regresión

• Interruptores de características
19
Metodologías Ágiles de Desarrollo de Software

Domingo Gallardo, DCCIA, Univ. Alicante
Ejemplo con interfaces y factorías
20
Core J2EE Patterns - Data Access Object
Metodologías Ágiles de Desarrollo de Software

Domingo Gallardo, DCCIA, Univ. Alicante
Implementación concreta
21
Metodologías Ágiles de Desarrollo de Software

Domingo Gallardo, DCCIA, Univ. Alicante
Selección de la factoría concreta
22
Metodologías Ágiles de Desarrollo de Software

Domingo Gallardo, DCCIA, Univ. Alicante
Interruptores de características

Feature toggles
23
Etsy’s Product Development with Continuous Experimentation
Metodologías Ágiles de Desarrollo de Software

Domingo Gallardo, DCCIA, Univ. Alicante
Interruptores de características
24
Metodologías Ágiles de Desarrollo de Software

Domingo Gallardo, DCCIA, Univ. Alicante
Botón de release
• El sistema de continuous delivery debería permitir que en cualquier momento
negocio pulsara el “botón de release” y pudiera poner en producción el build
seleccionado

• El sistema de entregas continuas nos asegura de que todos los builds
disponibles ya han pasado con éxito todos los tests de la tubería de despliegue
(deployment pipeline)
25
Metodologías Ágiles de Desarrollo de Software

Domingo Gallardo, DCCIA, Univ. Alicante
Puesta en producción
26
Amazon Web Services - Elastic Load Balancing
Metodologías Ágiles de Desarrollo de Software

Domingo Gallardo, DCCIA, Univ. Alicante
Sistema de canary releases
27
Metodologías Ágiles de Desarrollo de Software

Domingo Gallardo, DCCIA, Univ. Alicante
Deployment pipeline
• Una implementación automatizada del proceso de:

• construir

• desplegar

• probar

• lanzar

• Una tubería de despliegue garantiza:

• Visibilidad

• Feedback

• Control
28
nuestro sistema
Metodologías Ágiles de Desarrollo de Software

Domingo Gallardo, DCCIA, Univ. Alicante
Cambios moviéndose a través de la
tubería de despliegue
29
Jez Humble - Continuous Delivery
Metodologías Ágiles de Desarrollo de Software

Domingo Gallardo, DCCIA, Univ. Alicante
Trade-offs en la tubería de despliegue
30
Jez Humble - Continuous Delivery
Metodologías Ágiles de Desarrollo de Software

Domingo Gallardo, DCCIA, Univ. Alicante
Tubería de despliegue básica
31
Jez Humble - Continuous Delivery
Metodologías Ágiles de Desarrollo de Software

Domingo Gallardo, DCCIA, Univ. Alicante
Herramientas visuales
32
Go - ThoughtWorks
Jenkins / Hudson
Metodologías Ágiles de Desarrollo de Software

Domingo Gallardo, DCCIA, Univ. Alicante
Prácticas de la tubería de despliegue
• Solo construir los binarios una vez

• Desplegar de la misma forma en todos los entornos

• Smoke-Test Your Deployments

• Desplegar en una copia de producción

• Cada cambio debería propagarse instantánemente por la tubería

• Si falla cualquier parte de la tubería, parar la cadena
33
Metodologías Ágiles de Desarrollo de Software

Domingo Gallardo, DCCIA, Univ. Alicante
Sistema de Control de Versiones - Git
• El primer elemento de un sistema de continuous

delivery es un sistema de control de versiones

• Git es un Sistema de Control de Versiones 

Distribuido (DVCS en inglés)

• Permite clonar repositorios, hacer commits en 

la versión clonada y publicar los cambios, 

sincronizando los commits

• Una de las características principales 

de Git es la facilidad de gestión de 

ramas y de forks

• Gran variedad de posibles 

flujos de trabajo
34
Metodologías Ágiles de Desarrollo de Software

Domingo Gallardo, DCCIA, Univ. Alicante
Ramas en git (1)
35
Git Documentation - Basic Branching and Merging
1
2
3
4
Metodologías Ágiles de Desarrollo de Software

Domingo Gallardo, DCCIA, Univ. Alicante
Ramas en git (2)
36
5 6
Metodologías Ágiles de Desarrollo de Software

Domingo Gallardo, DCCIA, Univ. Alicante
Merge
37
76
Metodologías Ágiles de Desarrollo de Software

Domingo Gallardo, DCCIA, Univ. Alicante
Flujos de trabajo
• Distintas opciones posibles

• Recomendación de Fowler y Humbler: “Everyone Commits To the
Mainline Every Day”

• Una única rama de desarrollo principal, en la que todos los
desarrolladores hacen commit a diario

• La rama de desarrollo se despliega diariamente en el servidor de
integración continua 

• Ventaja: los errores se encuentran rápidamente y hay una sensación
de progreso compartido

• Es posible definir short-lived branches, ramas locales en las que se
trabaja durante unos pocos días y que después se integran en la
rama principal
38
Metodologías Ágiles de Desarrollo de Software

Domingo Gallardo, DCCIA, Univ. Alicante
Línea principal con short-lived
branches
39
1 2 3
Atlassian Git Tutorials - Feature Branch Workflow
Metodologías Ágiles de Desarrollo de Software

Domingo Gallardo, DCCIA, Univ. Alicante
Modelo avanzado de ramas (1)
• Git es descentralizado
40
Vincent Driessen - A successful Git branching model
Metodologías Ágiles de Desarrollo de Software

Domingo Gallardo, DCCIA, Univ. Alicante
Modelo avanzado de ramas (2)
• Dos ramas long-lived: 

master (donde van los releases) y 

develop (donde está el último
build)

!
!
!
!
!
• Ramas con 

características en develop
41
Vincent Driessen - A successful Git branching model
Metodologías Ágiles de Desarrollo de Software

Domingo Gallardo, DCCIA, Univ. Alicante
Modelo avanzado de ramas (3)
• Ramas de release
42
Vincent Driessen - A successful Git branching model
Metodologías Ágiles de Desarrollo de Software

Domingo Gallardo, DCCIA, Univ. Alicante
Modelo avanzado de ramas (4)
• Ramas con Fixes
43
Vincent Driessen - A successful Git branching model
Atlassian Git Tutorials - Gitflow Workflow
Metodologías Ágiles de Desarrollo de Software

Domingo Gallardo, DCCIA, Univ. Alicante
Posibilidad de recuperar cualquier
release
• El sistema de control de versiones permite poder recuperar cualquier
release previa, probarla y reparar bugs que pueda contener

• Las versiones tienen nombres únicos (números correlativos) en un
sistema de control de versiones

• En el SCV se guarda toda la información adicional: ficheros de
configuración de la aplicación, configuración de los distintos entornos
en los que se va a desplegar la aplicación

• Necesaria la automatización de la construcción de entornos de
despliegue a partir de la información en el SCV
44
Metodologías Ágiles de Desarrollo de Software

Domingo Gallardo, DCCIA, Univ. Alicante
Lecturas
• Jez Humble - Continuous Delivery, cap. 5 (pp. 105-120)

• Vincent Driessen - A successful Git branching model
45

Más contenido relacionado

La actualidad más candente

Introducción Ágil a eXtreme Programming
Introducción Ágil a eXtreme ProgrammingIntroducción Ágil a eXtreme Programming
Introducción Ágil a eXtreme ProgrammingChileAgil
 
La programación extrema o e xtreme programming
La programación extrema o e xtreme programmingLa programación extrema o e xtreme programming
La programación extrema o e xtreme programmingJoseMariaAndujar
 
7 Db2 Backup Y Sistemas
7 Db2 Backup Y Sistemas7 Db2 Backup Y Sistemas
7 Db2 Backup Y SistemasMarco Calle
 
Metodologias ágiles
Metodologias ágilesMetodologias ágiles
Metodologias ágilesAngel Rochy
 
Programación extrema [XP]
Programación extrema [XP]Programación extrema [XP]
Programación extrema [XP]Agustín
 
Pmi tour santa cruz tradicional vs agiles cb
Pmi tour santa cruz   tradicional vs agiles cbPmi tour santa cruz   tradicional vs agiles cb
Pmi tour santa cruz tradicional vs agiles cbCeciliaboggi
 
Evidencia 1 software
Evidencia 1 softwareEvidencia 1 software
Evidencia 1 softwareVanesa Campos
 
METODOLOGIAS AGILES
METODOLOGIAS AGILESMETODOLOGIAS AGILES
METODOLOGIAS AGILESmikyWatt
 
Seminario de Investigación -Ppresentación metodologías ágiles
Seminario de Investigación -Ppresentación metodologías ágilesSeminario de Investigación -Ppresentación metodologías ágiles
Seminario de Investigación -Ppresentación metodologías ágilesJosé Antonio Sandoval Acosta
 
Presentacion de xp scrum grupo 1 AYDSI I-2014
Presentacion de xp scrum grupo 1 AYDSI I-2014 Presentacion de xp scrum grupo 1 AYDSI I-2014
Presentacion de xp scrum grupo 1 AYDSI I-2014 marihencely
 
Presentacion de xp scrum UDO MONAGAS AYDSI- I- 2014
Presentacion de xp scrum UDO MONAGAS AYDSI- I- 2014Presentacion de xp scrum UDO MONAGAS AYDSI- I- 2014
Presentacion de xp scrum UDO MONAGAS AYDSI- I- 2014marihencely
 
Mele Scrum
Mele ScrumMele Scrum
Mele Scrumfcmart
 
Agilidad y madurez del proceso
Agilidad y madurez del procesoAgilidad y madurez del proceso
Agilidad y madurez del procesoSoftware Guru
 
Programación Extrema (Extream Programming XP)
Programación Extrema (Extream Programming XP)Programación Extrema (Extream Programming XP)
Programación Extrema (Extream Programming XP)Cesar Acosta
 

La actualidad más candente (20)

Introducción Ágil a eXtreme Programming
Introducción Ágil a eXtreme ProgrammingIntroducción Ágil a eXtreme Programming
Introducción Ágil a eXtreme Programming
 
introducción a uml
introducción a umlintroducción a uml
introducción a uml
 
La programación extrema o e xtreme programming
La programación extrema o e xtreme programmingLa programación extrema o e xtreme programming
La programación extrema o e xtreme programming
 
7 Db2 Backup Y Sistemas
7 Db2 Backup Y Sistemas7 Db2 Backup Y Sistemas
7 Db2 Backup Y Sistemas
 
Metodologias ágiles
Metodologias ágilesMetodologias ágiles
Metodologias ágiles
 
Programación extrema [XP]
Programación extrema [XP]Programación extrema [XP]
Programación extrema [XP]
 
Tw ¿Por qué elegir ágil?
Tw   ¿Por qué elegir ágil? Tw   ¿Por qué elegir ágil?
Tw ¿Por qué elegir ágil?
 
Pmi tour santa cruz tradicional vs agiles cb
Pmi tour santa cruz   tradicional vs agiles cbPmi tour santa cruz   tradicional vs agiles cb
Pmi tour santa cruz tradicional vs agiles cb
 
Evidencia 1 software
Evidencia 1 softwareEvidencia 1 software
Evidencia 1 software
 
METODOLOGIAS AGILES
METODOLOGIAS AGILESMETODOLOGIAS AGILES
METODOLOGIAS AGILES
 
Programacion extrema_WR
Programacion extrema_WRProgramacion extrema_WR
Programacion extrema_WR
 
Manual01
Manual01Manual01
Manual01
 
Seminario de Investigación -Ppresentación metodologías ágiles
Seminario de Investigación -Ppresentación metodologías ágilesSeminario de Investigación -Ppresentación metodologías ágiles
Seminario de Investigación -Ppresentación metodologías ágiles
 
Presentacion de xp scrum grupo 1 AYDSI I-2014
Presentacion de xp scrum grupo 1 AYDSI I-2014 Presentacion de xp scrum grupo 1 AYDSI I-2014
Presentacion de xp scrum grupo 1 AYDSI I-2014
 
Metodologías ágiles
Metodologías ágilesMetodologías ágiles
Metodologías ágiles
 
Proceso desarrollo software
Proceso desarrollo softwareProceso desarrollo software
Proceso desarrollo software
 
Presentacion de xp scrum UDO MONAGAS AYDSI- I- 2014
Presentacion de xp scrum UDO MONAGAS AYDSI- I- 2014Presentacion de xp scrum UDO MONAGAS AYDSI- I- 2014
Presentacion de xp scrum UDO MONAGAS AYDSI- I- 2014
 
Mele Scrum
Mele ScrumMele Scrum
Mele Scrum
 
Agilidad y madurez del proceso
Agilidad y madurez del procesoAgilidad y madurez del proceso
Agilidad y madurez del proceso
 
Programación Extrema (Extream Programming XP)
Programación Extrema (Extream Programming XP)Programación Extrema (Extream Programming XP)
Programación Extrema (Extream Programming XP)
 

Destacado

Modern Agile - Porque Agile necesitaba un refresh!
Modern Agile - Porque Agile necesitaba un refresh!Modern Agile - Porque Agile necesitaba un refresh!
Modern Agile - Porque Agile necesitaba un refresh!Johnny Ordóñez
 
Git Branching for Agile Teams
Git Branching for Agile Teams Git Branching for Agile Teams
Git Branching for Agile Teams Atlassian
 
DevOps - Continuous Integration & Continuous Deployment - with Microsoft & Op...
DevOps - Continuous Integration & Continuous Deployment - with Microsoft & Op...DevOps - Continuous Integration & Continuous Deployment - with Microsoft & Op...
DevOps - Continuous Integration & Continuous Deployment - with Microsoft & Op...Shravan Kumar Kasagoni
 
Continuous integration with business intelligence and analytics
Continuous integration with business intelligence and analyticsContinuous integration with business intelligence and analytics
Continuous integration with business intelligence and analyticsAlex Meadows
 
Certificaciones Tecnológicas: La acreditación del experto
Certificaciones Tecnológicas: La acreditación del expertoCertificaciones Tecnológicas: La acreditación del experto
Certificaciones Tecnológicas: La acreditación del expertoJose Manuel Ortega Candel
 
Groovy&Grails: desarrollo rápido de aplicaciones
Groovy&Grails: desarrollo rápido de aplicacionesGroovy&Grails: desarrollo rápido de aplicaciones
Groovy&Grails: desarrollo rápido de aplicacionesFran García
 
Groovy&Grails: desarrollo rápido de aplicaciones
Groovy&Grails: desarrollo rápido de aplicacionesGroovy&Grails: desarrollo rápido de aplicaciones
Groovy&Grails: desarrollo rápido de aplicacionesFran García
 
Manual de uso de la web 2.0
Manual de uso de la web 2.0Manual de uso de la web 2.0
Manual de uso de la web 2.0Domingo Gallardo
 
Working with the AOSP - Linaro Connect Asia 2013
Working with the AOSP - Linaro Connect Asia 2013Working with the AOSP - Linaro Connect Asia 2013
Working with the AOSP - Linaro Connect Asia 2013Opersys inc.
 
DevOps hacia donde va el camino de baldosas amarillas
DevOps hacia donde va el camino de baldosas amarillasDevOps hacia donde va el camino de baldosas amarillas
DevOps hacia donde va el camino de baldosas amarillasJorge Moratilla Porras
 
Presentacion devops factory 2016_v1.0
Presentacion devops factory 2016_v1.0Presentacion devops factory 2016_v1.0
Presentacion devops factory 2016_v1.0DevopsFactory
 
Framework de test spock
Framework de test spock Framework de test spock
Framework de test spock Fran García
 

Destacado (20)

Modern Agile - Porque Agile necesitaba un refresh!
Modern Agile - Porque Agile necesitaba un refresh!Modern Agile - Porque Agile necesitaba un refresh!
Modern Agile - Porque Agile necesitaba un refresh!
 
Comenzando a usar el Continuous Delivery
 Comenzando a usar el Continuous Delivery Comenzando a usar el Continuous Delivery
Comenzando a usar el Continuous Delivery
 
Git Branching for Agile Teams
Git Branching for Agile Teams Git Branching for Agile Teams
Git Branching for Agile Teams
 
DevOps - Continuous Integration & Continuous Deployment - with Microsoft & Op...
DevOps - Continuous Integration & Continuous Deployment - with Microsoft & Op...DevOps - Continuous Integration & Continuous Deployment - with Microsoft & Op...
DevOps - Continuous Integration & Continuous Deployment - with Microsoft & Op...
 
Continuous integration with business intelligence and analytics
Continuous integration with business intelligence and analyticsContinuous integration with business intelligence and analytics
Continuous integration with business intelligence and analytics
 
Por su seguridad
Por su seguridadPor su seguridad
Por su seguridad
 
Seguridad en dispositivos móviles
Seguridad en dispositivos móvilesSeguridad en dispositivos móviles
Seguridad en dispositivos móviles
 
Certificaciones tecnológicas
Certificaciones tecnológicasCertificaciones tecnológicas
Certificaciones tecnológicas
 
Certificaciones Tecnológicas: La acreditación del experto
Certificaciones Tecnológicas: La acreditación del expertoCertificaciones Tecnológicas: La acreditación del experto
Certificaciones Tecnológicas: La acreditación del experto
 
Privacidad internet
Privacidad internetPrivacidad internet
Privacidad internet
 
Groovy&Grails: desarrollo rápido de aplicaciones
Groovy&Grails: desarrollo rápido de aplicacionesGroovy&Grails: desarrollo rápido de aplicaciones
Groovy&Grails: desarrollo rápido de aplicaciones
 
Herramientas gestion proyectos
Herramientas gestion proyectosHerramientas gestion proyectos
Herramientas gestion proyectos
 
Inteligencia Colectiva
Inteligencia ColectivaInteligencia Colectiva
Inteligencia Colectiva
 
Groovy&Grails: desarrollo rápido de aplicaciones
Groovy&Grails: desarrollo rápido de aplicacionesGroovy&Grails: desarrollo rápido de aplicaciones
Groovy&Grails: desarrollo rápido de aplicaciones
 
Git and git flow
Git and git flowGit and git flow
Git and git flow
 
Manual de uso de la web 2.0
Manual de uso de la web 2.0Manual de uso de la web 2.0
Manual de uso de la web 2.0
 
Working with the AOSP - Linaro Connect Asia 2013
Working with the AOSP - Linaro Connect Asia 2013Working with the AOSP - Linaro Connect Asia 2013
Working with the AOSP - Linaro Connect Asia 2013
 
DevOps hacia donde va el camino de baldosas amarillas
DevOps hacia donde va el camino de baldosas amarillasDevOps hacia donde va el camino de baldosas amarillas
DevOps hacia donde va el camino de baldosas amarillas
 
Presentacion devops factory 2016_v1.0
Presentacion devops factory 2016_v1.0Presentacion devops factory 2016_v1.0
Presentacion devops factory 2016_v1.0
 
Framework de test spock
Framework de test spock Framework de test spock
Framework de test spock
 

Similar a Continuous Delivery

Metodos agiles de software
Metodos agiles de softwareMetodos agiles de software
Metodos agiles de softwareGeovani AG
 
Azure Functions Spanish
Azure Functions SpanishAzure Functions Spanish
Azure Functions SpanishCDS
 
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
 
Práctica SRUM - (Introducción) v1.pptx
Práctica SRUM - (Introducción) v1.pptxPráctica SRUM - (Introducción) v1.pptx
Práctica SRUM - (Introducción) v1.pptxEverCGonzalesRodrigo1
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de softwaremat3matik
 
Ingeniería%20de%20 software[1], maryy
Ingeniería%20de%20 software[1], maryyIngeniería%20de%20 software[1], maryy
Ingeniería%20de%20 software[1], maryynelly
 
Ingeniería de software16
Ingeniería de software16Ingeniería de software16
Ingeniería de software16Ramon
 
Ingenier%c3%ada de software
Ingenier%c3%ada de softwareIngenier%c3%ada de software
Ingenier%c3%ada de softwareMarilupe
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software142918
 
Ingen de software
Ingen de softwareIngen de software
Ingen de softwareerikapoh
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de softwaresamantha
 
Desarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por PruebasDesarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por Pruebas.. ..
 

Similar a Continuous Delivery (20)

DevOps on AZURE
DevOps on AZUREDevOps on AZURE
DevOps on AZURE
 
Metodos agiles de software
Metodos agiles de softwareMetodos agiles de software
Metodos agiles de software
 
Azure Functions Spanish
Azure Functions SpanishAzure Functions Spanish
Azure Functions Spanish
 
Azure Functions
Azure FunctionsAzure Functions
Azure Functions
 
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
 
Sesión 03-métodos-ágiles-del-desarrollo-de-software
Sesión 03-métodos-ágiles-del-desarrollo-de-softwareSesión 03-métodos-ágiles-del-desarrollo-de-software
Sesión 03-métodos-ágiles-del-desarrollo-de-software
 
ASPgems 2018
ASPgems 2018 ASPgems 2018
ASPgems 2018
 
Clase1
Clase1Clase1
Clase1
 
Desarrollo y diseño de software
Desarrollo y diseño de softwareDesarrollo y diseño de software
Desarrollo y diseño de software
 
Práctica SRUM - (Introducción) v1.pptx
Práctica SRUM - (Introducción) v1.pptxPráctica SRUM - (Introducción) v1.pptx
Práctica SRUM - (Introducción) v1.pptx
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software
 
Ingeniería%20de%20 software[1], maryy
Ingeniería%20de%20 software[1], maryyIngeniería%20de%20 software[1], maryy
Ingeniería%20de%20 software[1], maryy
 
Ingeniería de software16
Ingeniería de software16Ingeniería de software16
Ingeniería de software16
 
Ingenier%c3%ada de software
Ingenier%c3%ada de softwareIngenier%c3%ada de software
Ingenier%c3%ada de software
 
Clase 11
Clase 11Clase 11
Clase 11
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software
 
Ingen de software
Ingen de softwareIngen de software
Ingen de software
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software
 
Desarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por PruebasDesarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por Pruebas
 
Meetup Oracle Technology MAD_BCN: 6.2 DevOps y DataOps
Meetup Oracle Technology MAD_BCN: 6.2 DevOps y DataOpsMeetup Oracle Technology MAD_BCN: 6.2 DevOps y DataOps
Meetup Oracle Technology MAD_BCN: 6.2 DevOps y DataOps
 

Último

Evaluación del riesgo tecnologías informáticas.pdf
Evaluación del riesgo tecnologías informáticas.pdfEvaluación del riesgo tecnologías informáticas.pdf
Evaluación del riesgo tecnologías informáticas.pdfGuillermoBarquero7
 
2da. Clase Mecanografía e introducción a Excel (2).pptx
2da. Clase Mecanografía e introducción a Excel (2).pptx2da. Clase Mecanografía e introducción a Excel (2).pptx
2da. Clase Mecanografía e introducción a Excel (2).pptxEncomiendasElSherpa
 
Trabajo de Powerpoint - Unsaac - Ofimática
Trabajo de Powerpoint - Unsaac - OfimáticaTrabajo de Powerpoint - Unsaac - Ofimática
Trabajo de Powerpoint - Unsaac - OfimáticaKANTUPAULAPORCELYUCR
 
Caso de Exito LPL Projects Logistics Spain y Business Central
Caso de Exito LPL Projects Logistics Spain y Business CentralCaso de Exito LPL Projects Logistics Spain y Business Central
Caso de Exito LPL Projects Logistics Spain y Business CentralAitana
 
Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Opentix
 
ESCRITORIO DE WINDOWS 11 Y SUS ELEMENTOS
ESCRITORIO DE WINDOWS 11 Y SUS ELEMENTOSESCRITORIO DE WINDOWS 11 Y SUS ELEMENTOS
ESCRITORIO DE WINDOWS 11 Y SUS ELEMENTOSBeatrizGonzales19
 

Último (6)

Evaluación del riesgo tecnologías informáticas.pdf
Evaluación del riesgo tecnologías informáticas.pdfEvaluación del riesgo tecnologías informáticas.pdf
Evaluación del riesgo tecnologías informáticas.pdf
 
2da. Clase Mecanografía e introducción a Excel (2).pptx
2da. Clase Mecanografía e introducción a Excel (2).pptx2da. Clase Mecanografía e introducción a Excel (2).pptx
2da. Clase Mecanografía e introducción a Excel (2).pptx
 
Trabajo de Powerpoint - Unsaac - Ofimática
Trabajo de Powerpoint - Unsaac - OfimáticaTrabajo de Powerpoint - Unsaac - Ofimática
Trabajo de Powerpoint - Unsaac - Ofimática
 
Caso de Exito LPL Projects Logistics Spain y Business Central
Caso de Exito LPL Projects Logistics Spain y Business CentralCaso de Exito LPL Projects Logistics Spain y Business Central
Caso de Exito LPL Projects Logistics Spain y Business Central
 
Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200
 
ESCRITORIO DE WINDOWS 11 Y SUS ELEMENTOS
ESCRITORIO DE WINDOWS 11 Y SUS ELEMENTOSESCRITORIO DE WINDOWS 11 Y SUS ELEMENTOS
ESCRITORIO DE WINDOWS 11 Y SUS ELEMENTOS
 

Continuous Delivery

  • 1. Metodologías Ágiles de Desarrollo de Software
 Domingo Gallardo, DCCIA, Univ. Alicante Continuous Delivery Sesión 9
  • 2. Metodologías Ágiles de Desarrollo de Software
 Domingo Gallardo, DCCIA, Univ. Alicante Valores del desarrollo ágil • Valor del manifiesto ágil: “Working 
 software” • El proyecto crece incrementalmente,
 con un flujo continuo de cambios • Entregas rápidas para obtener feedback 
 lo antes posible • Optimizar el flujo desde que se empieza 
 una historia hasta que se entrega 
 (Kanban) 2
  • 3. Metodologías Ágiles de Desarrollo de Software
 Domingo Gallardo, DCCIA, Univ. Alicante La “última milla” 3
  • 4. Metodologías Ágiles de Desarrollo de Software
 Domingo Gallardo, DCCIA, Univ. Alicante No es ágil • Tardar 6 semanas en integrar un macro-proyecto formado por 5 proyectos independientes porque no se habían probado las conexiones entre los módulos • Tardar 3 semanas en lanzar una nueva versión de un proyecto porque se han detectado fallos al instalarlo en el entorno de producción • Tener que esperar 1 semana a que se realicen todas las pruebas de aceptación al nuevo release antes de seguir desarrollando nuevas funcionalidades en el proyecto 4 JAR JAR JAR Base de datos
 de integración Entorno
 de integración Deploy Build Base de datos
 de producción Entorno
 de producción Tests
 OK 6 semanas JAR JAR JAR Build Deploy
  • 5. Metodologías Ágiles de Desarrollo de Software
 Domingo Gallardo, DCCIA, Univ. Alicante Netflix como ejemplo ágil 5 Deploying the Netflix API
  • 6. Metodologías Ágiles de Desarrollo de Software
 Domingo Gallardo, DCCIA, Univ. Alicante Etsy como ejemplo ágil 6 Etsy’s Product Development with Continuous Experimentation
  • 7. Metodologías Ágiles de Desarrollo de Software
 Domingo Gallardo, DCCIA, Univ. Alicante Etsy como ejemplo ágil 7 Etsy’s Product Development with Continuous Experimentation
  • 8. Metodologías Ágiles de Desarrollo de Software
 Domingo Gallardo, DCCIA, Univ. Alicante ¿Qué es continuous delivery? • Conseguir una puesta en producción (release) del software: • Poco arriesgada • Frecuente • Barata • Rápida • Predecible • Reproducible • “Reduce the cost, time, and risk of delivering incremental changes to users” ! • “How long would it take your organization to deploy a change that involved just one single line of code? Do you do this on a repeatable, reliable basis?” 8 Mary and Tom Poppendieck - Implementing Lean Software Development, p59. Jez Humble - Adopting Continuous Delivery
  • 9. Metodologías Ágiles de Desarrollo de Software
 Domingo Gallardo, DCCIA, Univ. Alicante DevOps • Developers • Su trabajo es añadir nuevas características • Trabajan en entornos locales (“en mi máquina funciona”) • Utilizan herramientas y lenguajes que permiten abstraer y automatizar • Operations: • Su trabajo es mantener el sitio web seguro, estable y rápido • Detectar problemas, apagar fuegos • DevOps: nueva filosofía de trabajo, donde los desarrolladores y operadores trabajan en conjunción • Automatización • Infrastructure-as-code • Herramientas: Chef, Vagrant, … 9
  • 10. Metodologías Ágiles de Desarrollo de Software
 Domingo Gallardo, DCCIA, Univ. Alicante Ventajas del continuous delivery • Estabilidad y confiabilidad en el proceso de despliegue y lanzamiento • Feedback continuo • Cuanto antes se detecta un error es más fácil encontrar el fallo (Time to Resolve) • Mejora la calidad del producto 10
  • 11. Metodologías Ágiles de Desarrollo de Software
 Domingo Gallardo, DCCIA, Univ. Alicante Algunas técnicas • Pequeños cambios que se despliegan continuamente • Todos los builds son candidatos al release • Todo en el control de versiones (se debe poder probar cualquier release) • Tuberías de despliegue (deployment pipelines) • Integración continua: automatización de builds, tests, despliegues, entornos 11
  • 12. Metodologías Ágiles de Desarrollo de Software
 Domingo Gallardo, DCCIA, Univ. Alicante Pequeños cambios que se despliegan continuamente 12 John Allspaw - http://www.slideshare.net/jallspaw/ops-metametrics-the-currency-you-pay-for-change
  • 13. Metodologías Ágiles de Desarrollo de Software
 Domingo Gallardo, DCCIA, Univ. Alicante
  • 14. Metodologías Ágiles de Desarrollo de Software
 Domingo Gallardo, DCCIA, Univ. Alicante
  • 15. Metodologías Ágiles de Desarrollo de Software
 Domingo Gallardo, DCCIA, Univ. Alicante
  • 16. Metodologías Ágiles de Desarrollo de Software
 Domingo Gallardo, DCCIA, Univ. Alicante
  • 17. Metodologías Ágiles de Desarrollo de Software
 Domingo Gallardo, DCCIA, Univ. Alicante
  • 18. Metodologías Ágiles de Desarrollo de Software
 Domingo Gallardo, DCCIA, Univ. Alicante Time To Resolve 18
  • 19. Metodologías Ágiles de Desarrollo de Software
 Domingo Gallardo, DCCIA, Univ. Alicante ¿Y los grandes cambios? • Los incrementos pequeños no significan dejar de trabajar en características que necesiten muchas modificaciones • Es posible ir desarrollando, probando y colocando las piezas para que el sistema evolucione hacia un momento futuro en sea fácil introducir una característica totalmente nueva • Buen diseño de código, por ejemplo seleccionar una implementación concreta utilizando interfaces y factorías • Pequeños cambios en las APIs compatibles con los tests de regresión • Interruptores de características 19
  • 20. Metodologías Ágiles de Desarrollo de Software
 Domingo Gallardo, DCCIA, Univ. Alicante Ejemplo con interfaces y factorías 20 Core J2EE Patterns - Data Access Object
  • 21. Metodologías Ágiles de Desarrollo de Software
 Domingo Gallardo, DCCIA, Univ. Alicante Implementación concreta 21
  • 22. Metodologías Ágiles de Desarrollo de Software
 Domingo Gallardo, DCCIA, Univ. Alicante Selección de la factoría concreta 22
  • 23. Metodologías Ágiles de Desarrollo de Software
 Domingo Gallardo, DCCIA, Univ. Alicante Interruptores de características
 Feature toggles 23 Etsy’s Product Development with Continuous Experimentation
  • 24. Metodologías Ágiles de Desarrollo de Software
 Domingo Gallardo, DCCIA, Univ. Alicante Interruptores de características 24
  • 25. Metodologías Ágiles de Desarrollo de Software
 Domingo Gallardo, DCCIA, Univ. Alicante Botón de release • El sistema de continuous delivery debería permitir que en cualquier momento negocio pulsara el “botón de release” y pudiera poner en producción el build seleccionado • El sistema de entregas continuas nos asegura de que todos los builds disponibles ya han pasado con éxito todos los tests de la tubería de despliegue (deployment pipeline) 25
  • 26. Metodologías Ágiles de Desarrollo de Software
 Domingo Gallardo, DCCIA, Univ. Alicante Puesta en producción 26 Amazon Web Services - Elastic Load Balancing
  • 27. Metodologías Ágiles de Desarrollo de Software
 Domingo Gallardo, DCCIA, Univ. Alicante Sistema de canary releases 27
  • 28. Metodologías Ágiles de Desarrollo de Software
 Domingo Gallardo, DCCIA, Univ. Alicante Deployment pipeline • Una implementación automatizada del proceso de: • construir • desplegar • probar • lanzar
 • Una tubería de despliegue garantiza: • Visibilidad • Feedback • Control 28 nuestro sistema
  • 29. Metodologías Ágiles de Desarrollo de Software
 Domingo Gallardo, DCCIA, Univ. Alicante Cambios moviéndose a través de la tubería de despliegue 29 Jez Humble - Continuous Delivery
  • 30. Metodologías Ágiles de Desarrollo de Software
 Domingo Gallardo, DCCIA, Univ. Alicante Trade-offs en la tubería de despliegue 30 Jez Humble - Continuous Delivery
  • 31. Metodologías Ágiles de Desarrollo de Software
 Domingo Gallardo, DCCIA, Univ. Alicante Tubería de despliegue básica 31 Jez Humble - Continuous Delivery
  • 32. Metodologías Ágiles de Desarrollo de Software
 Domingo Gallardo, DCCIA, Univ. Alicante Herramientas visuales 32 Go - ThoughtWorks Jenkins / Hudson
  • 33. Metodologías Ágiles de Desarrollo de Software
 Domingo Gallardo, DCCIA, Univ. Alicante Prácticas de la tubería de despliegue • Solo construir los binarios una vez • Desplegar de la misma forma en todos los entornos • Smoke-Test Your Deployments • Desplegar en una copia de producción • Cada cambio debería propagarse instantánemente por la tubería • Si falla cualquier parte de la tubería, parar la cadena 33
  • 34. Metodologías Ágiles de Desarrollo de Software
 Domingo Gallardo, DCCIA, Univ. Alicante Sistema de Control de Versiones - Git • El primer elemento de un sistema de continuous
 delivery es un sistema de control de versiones • Git es un Sistema de Control de Versiones 
 Distribuido (DVCS en inglés) • Permite clonar repositorios, hacer commits en 
 la versión clonada y publicar los cambios, 
 sincronizando los commits • Una de las características principales 
 de Git es la facilidad de gestión de 
 ramas y de forks • Gran variedad de posibles 
 flujos de trabajo 34
  • 35. Metodologías Ágiles de Desarrollo de Software
 Domingo Gallardo, DCCIA, Univ. Alicante Ramas en git (1) 35 Git Documentation - Basic Branching and Merging 1 2 3 4
  • 36. Metodologías Ágiles de Desarrollo de Software
 Domingo Gallardo, DCCIA, Univ. Alicante Ramas en git (2) 36 5 6
  • 37. Metodologías Ágiles de Desarrollo de Software
 Domingo Gallardo, DCCIA, Univ. Alicante Merge 37 76
  • 38. Metodologías Ágiles de Desarrollo de Software
 Domingo Gallardo, DCCIA, Univ. Alicante Flujos de trabajo • Distintas opciones posibles • Recomendación de Fowler y Humbler: “Everyone Commits To the Mainline Every Day” • Una única rama de desarrollo principal, en la que todos los desarrolladores hacen commit a diario • La rama de desarrollo se despliega diariamente en el servidor de integración continua • Ventaja: los errores se encuentran rápidamente y hay una sensación de progreso compartido • Es posible definir short-lived branches, ramas locales en las que se trabaja durante unos pocos días y que después se integran en la rama principal 38
  • 39. Metodologías Ágiles de Desarrollo de Software
 Domingo Gallardo, DCCIA, Univ. Alicante Línea principal con short-lived branches 39 1 2 3 Atlassian Git Tutorials - Feature Branch Workflow
  • 40. Metodologías Ágiles de Desarrollo de Software
 Domingo Gallardo, DCCIA, Univ. Alicante Modelo avanzado de ramas (1) • Git es descentralizado 40 Vincent Driessen - A successful Git branching model
  • 41. Metodologías Ágiles de Desarrollo de Software
 Domingo Gallardo, DCCIA, Univ. Alicante Modelo avanzado de ramas (2) • Dos ramas long-lived: 
 master (donde van los releases) y 
 develop (donde está el último build) ! ! ! ! ! • Ramas con 
 características en develop 41 Vincent Driessen - A successful Git branching model
  • 42. Metodologías Ágiles de Desarrollo de Software
 Domingo Gallardo, DCCIA, Univ. Alicante Modelo avanzado de ramas (3) • Ramas de release 42 Vincent Driessen - A successful Git branching model
  • 43. Metodologías Ágiles de Desarrollo de Software
 Domingo Gallardo, DCCIA, Univ. Alicante Modelo avanzado de ramas (4) • Ramas con Fixes 43 Vincent Driessen - A successful Git branching model Atlassian Git Tutorials - Gitflow Workflow
  • 44. Metodologías Ágiles de Desarrollo de Software
 Domingo Gallardo, DCCIA, Univ. Alicante Posibilidad de recuperar cualquier release • El sistema de control de versiones permite poder recuperar cualquier release previa, probarla y reparar bugs que pueda contener • Las versiones tienen nombres únicos (números correlativos) en un sistema de control de versiones • En el SCV se guarda toda la información adicional: ficheros de configuración de la aplicación, configuración de los distintos entornos en los que se va a desplegar la aplicación • Necesaria la automatización de la construcción de entornos de despliegue a partir de la información en el SCV 44
  • 45. Metodologías Ágiles de Desarrollo de Software
 Domingo Gallardo, DCCIA, Univ. Alicante Lecturas • Jez Humble - Continuous Delivery, cap. 5 (pp. 105-120) • Vincent Driessen - A successful Git branching model 45