Continuous Delivery
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Continuous Delivery

on

  • 301 views

Sesión 6 del curso Metodologías Ágiles de Desarrollo de Software de la Universidad de Alicante (http://www.dccia.ua.es/dccia/inf/asignaturas/MADS/2013-14)

Sesión 6 del curso Metodologías Ágiles de Desarrollo de Software de la Universidad de Alicante (http://www.dccia.ua.es/dccia/inf/asignaturas/MADS/2013-14)

Statistics

Views

Total Views
301
Views on SlideShare
274
Embed Views
27

Actions

Likes
1
Downloads
1
Comments
0

1 Embed 27

http://servidor1.i2e.es 27

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Continuous Delivery Presentation Transcript

  • 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