SlideShare a Scribd company logo
1 of 63
Integración continua vs controlada

                         pablo santos luaces

                                   @psluaces

                                 @plasticscm
Sobre mi
• Plastic SCM - founder
• Coder
• Blog writer… (a ratos) ;)
                              @psluaces
En el show de hoy…
• La guerra de la
  integración

• Qué método es más «agile»?
Hay una guerra ahí fuera
Y hay que elegir un bando
Una guerra ahí fuera
Una guerra … de bandos… ;)
De opciones
Las opciones son
• Integración continua

• Integración controlada
Las opciones son
• Integración continua   (piedra angular
 de agile)


• Integración controlada
Las opciones son
• Integración continua   != integración
 constante (!)


• Integración controlada
Pero antes un paso atrás…
SCM es importante en «agile»
porque:
• Collective code ownership
• Continuous Integration
• Mapeo entre tareas y código
• Coordinación del equipo
Qué es «mainline» development?
• Trabajar en una única rama…
Qué es «mainline» development?
• Trabajar en una única rama…

• ¿Es bueno?
Qué es «mainline» development?
• Trabajar en una única rama…

• ¿Es bueno?

• Sí, si no hay otra opción … :P
¿Cómo reconocer «mainline»?
• Fácil… sólo hay una rama…

 0
¿Cómo reconocer «mainline»?
• Fácil… sólo hay una rama…
¿Cómo reconocer «mainline»?
• Fácil… sólo hay una rama…
¿Cómo reconocer «mainline»?
• Fácil… sólo hay una rama…
¿Cómo reconocer «mainline»?
• Fácil… sólo hay una rama…
¿Cómo reconocer «mainline»?
• Si tu desarrollo tiene esta pinta… es lineal, mainline,
  no paralelo!
Esto es desarrollo lineal
Y esto es desarrollo paralelo
Si no hay ramas… no es paralelo
Refuerzo positivo…
La batalla entre diferentes visiones
De dónde viene todo esto?
Ventajas del desarrollo paralelo
• Romper la dependencia de tareas
Ventajas del desarrollo paralelo
• Romper la dependencia de tareas
Ventajas del desarrollo paralelo
• Puntos de partida conocidos – do not
  shoot a moving target!!!
Ventajas del desarrollo paralelo
• Puntos de partida conocidos
Ventajas del desarrollo paralelo
• Reforzar la creación de baselines
  estables
Ventajas del desarrollo paralelo
• Código siempre bajo control
Ventajas del desarrollo paralelo
• Detener la «bug spreading»
Ventajas del desarrollo paralelo
• Detener la «bug spreading»
Ventajas del desarrollo paralelo
• Trazabilidad mejorada
Ventajas del desarrollo paralelo
• Keep the mainline … pristine
Integración continua – mainline
             glorificado
• The «poorman’s approach»
Refuerzo positivo…
Lo opuesto solía ser «big bang»
Lo opuesto solía ser «big bang»
Y para arreglarlo, integración
          frecuente
El futuro de CI
                      • How can builds get
                        faster?
                      • How can broken builds
                        be prevented?


http://codicesoftware.blogspot.com/2008/03/continuous-integration-future.html
El futuro de CI
El futuro de CI
Feature branches
¿Qué es una tarea?
  • ¿Usáis un issue tracker?
  • Cada entrada en el issue tracker

  Nota: las tareas son cortas…

http://www.plasticscm.com/infocenter/quick-start/intro-task-driven-development.aspx
Integración controlada




http://drdobbs.com/architecture-and-design/205917960
Alternativas de integración

•   El integrador hace merge
•   El integrador ejecuta tests
•   El integrador empaqueta y etiqueta
                                                          Integration Server     For each task
                                                                                 to check whether it is
                                                                                 valid or not



                 baseline   main line                        baseline


                             task 1120



                                              task 1140
                                                                      Release
                                                                      Engineer
                                                                 rebased
                                                                                                          Release
             Developer                                                                                    Engineer



                                  task 1121




                                              task 1129



             Developer
Alternativas
•   Los desarrolladores hacen merge y ejecutan tests
•   El integrador empaqueta y etiqueta…
•   Evita mini-big-bangs
•   Recorta tiempos de compilación

                                                          Integration Server




                baseline   main line                     baseline


                            task 1120


                                                                                 Integration is just
                                             task 1140                           labelling and packing
                                                                      Release    and running specific
                                                                      Engineer   integration tests
                                                            rebased
            Developer




                                 task 1121




                                             task 1129



            Developer
Alternativas de integración
•   Desarrolladores hacen merge y ejecutan tests
•   La línea principal se mantiene limpia


                 baseline   main line                                                        baseline


                             task 1120

                                                                                                                       Integration is just
                                                  task 1140
                                                                                                                       promoting, labelling
                                                                                                                       and packing and
                                                                                                            Release    running specific
                                                                                                            Engineer




                                                                                      line
                                                                                                  rebased              integration tests
             Developer




                                                                                e main
                                                                        te to th
                                                                   Promo
                                  task 1121




                                                       task 1129



             Developer


                               integration line




                                                                    Integration Server
En el mundo distribuido – integration
        manager workflow
                     1. The project maintainer pushes to
                        their public repository.
                     2. A contributor clones that
                        repository and makes changes.
                     3. The contributor pushes to their
                        own public copy.
                     4. The contributor sends the
                        maintainer an e-mail asking them
                        to pull changes.
                     5. The maintainer adds the
                        contributor’s repo as a remote and
                        merges locally.
                     6. The maintainer pushes merged
                        changes to the main repository.
Dictator…
    1. Regular developers work on their topic
       branch and rebase their work on top of
       master. The master branch is that of the
       dictator.
    2. Lieutenants merge the developers’ topic
       branches into their master branch.
    3. The dictator merges the lieutenants’
       master branches into the dictator’s master
       branch.
    4. The dictator pushes their master to the
       reference repository so the other
       developers can rebase on it.
Distributed branch per task
Conclusión - Alternativas
Conclusión –
Que no te limite
    tu SCM
pablo santos luaces
          @psluaces
        @plasticscm

More Related Content

More from Agile Spain

Lessons learned from contrasting Design Thinking and Agile Project Management...
Lessons learned from contrasting Design Thinking and Agile Project Management...Lessons learned from contrasting Design Thinking and Agile Project Management...
Lessons learned from contrasting Design Thinking and Agile Project Management...Agile Spain
 
Visual Scrum - What you see is What you get
Visual Scrum - What you see is What you getVisual Scrum - What you see is What you get
Visual Scrum - What you see is What you getAgile Spain
 
Un Primer Paso a la Agilidad: Retrospectivas para el Aprendizaje de la Ingeni...
Un Primer Paso a la Agilidad: Retrospectivas para el Aprendizaje de la Ingeni...Un Primer Paso a la Agilidad: Retrospectivas para el Aprendizaje de la Ingeni...
Un Primer Paso a la Agilidad: Retrospectivas para el Aprendizaje de la Ingeni...Agile Spain
 
Análisis de la implementación de prácticas ágiles en Argentina
Análisis de la implementación de prácticas ágiles en ArgentinaAnálisis de la implementación de prácticas ágiles en Argentina
Análisis de la implementación de prácticas ágiles en ArgentinaAgile Spain
 
Como cocinar tu contrato ágil
Como cocinar tu contrato ágilComo cocinar tu contrato ágil
Como cocinar tu contrato ágilAgile Spain
 
Cas2010 gestion-agil-de-la-configuracion
Cas2010 gestion-agil-de-la-configuracionCas2010 gestion-agil-de-la-configuracion
Cas2010 gestion-agil-de-la-configuracionAgile Spain
 
Cas2010 itinerario-implementacion-agil
Cas2010 itinerario-implementacion-agilCas2010 itinerario-implementacion-agil
Cas2010 itinerario-implementacion-agilAgile Spain
 
Cas2010 gestion-agil-de-equipos
Cas2010 gestion-agil-de-equiposCas2010 gestion-agil-de-equipos
Cas2010 gestion-agil-de-equiposAgile Spain
 
Cas2010 integrando-practicas-agiles-y-de-experiencia-de-usuario
Cas2010 integrando-practicas-agiles-y-de-experiencia-de-usuarioCas2010 integrando-practicas-agiles-y-de-experiencia-de-usuario
Cas2010 integrando-practicas-agiles-y-de-experiencia-de-usuarioAgile Spain
 
Cas2010 toolchain-for-agile-teams-traceability-from-product-vision-to-working...
Cas2010 toolchain-for-agile-teams-traceability-from-product-vision-to-working...Cas2010 toolchain-for-agile-teams-traceability-from-product-vision-to-working...
Cas2010 toolchain-for-agile-teams-traceability-from-product-vision-to-working...Agile Spain
 
Cas2010 los-principios-agiles-como-guia-o-por-que-querras-volver-a-modelos-tr...
Cas2010 los-principios-agiles-como-guia-o-por-que-querras-volver-a-modelos-tr...Cas2010 los-principios-agiles-como-guia-o-por-que-querras-volver-a-modelos-tr...
Cas2010 los-principios-agiles-como-guia-o-por-que-querras-volver-a-modelos-tr...Agile Spain
 
Cas2010 to-track-defects-or-not-to-track-defects-that-is-the-question
Cas2010 to-track-defects-or-not-to-track-defects-that-is-the-questionCas2010 to-track-defects-or-not-to-track-defects-that-is-the-question
Cas2010 to-track-defects-or-not-to-track-defects-that-is-the-questionAgile Spain
 
Cas2010 is-there-space-for-testers-in-agile-projects
Cas2010 is-there-space-for-testers-in-agile-projectsCas2010 is-there-space-for-testers-in-agile-projects
Cas2010 is-there-space-for-testers-in-agile-projectsAgile Spain
 
Cas2010 one-year-of-software-developments-to-win-a-world-racing-championship
Cas2010 one-year-of-software-developments-to-win-a-world-racing-championshipCas2010 one-year-of-software-developments-to-win-a-world-racing-championship
Cas2010 one-year-of-software-developments-to-win-a-world-racing-championshipAgile Spain
 
Cas2010 pair-programming-strategies
Cas2010 pair-programming-strategiesCas2010 pair-programming-strategies
Cas2010 pair-programming-strategiesAgile Spain
 
Cas2010 behavior-driven-development-aplicado-en-acceptance-test-automation
Cas2010 behavior-driven-development-aplicado-en-acceptance-test-automationCas2010 behavior-driven-development-aplicado-en-acceptance-test-automation
Cas2010 behavior-driven-development-aplicado-en-acceptance-test-automationAgile Spain
 
Cas2010 herramientas-de-pruebas-unitarias-pex-y-moles
Cas2010 herramientas-de-pruebas-unitarias-pex-y-molesCas2010 herramientas-de-pruebas-unitarias-pex-y-moles
Cas2010 herramientas-de-pruebas-unitarias-pex-y-molesAgile Spain
 
Ser ágil en España, un caso real con equipos de trabajo en remoto
Ser ágil en España, un caso real con equipos de trabajo en remotoSer ágil en España, un caso real con equipos de trabajo en remoto
Ser ágil en España, un caso real con equipos de trabajo en remotoAgile Spain
 
Cuore.js: Una historia de amor
Cuore.js: Una historia de amorCuore.js: Una historia de amor
Cuore.js: Una historia de amorAgile Spain
 
Stop the line & Stop Feature Development practices
Stop the line & Stop Feature Development practicesStop the line & Stop Feature Development practices
Stop the line & Stop Feature Development practicesAgile Spain
 

More from Agile Spain (20)

Lessons learned from contrasting Design Thinking and Agile Project Management...
Lessons learned from contrasting Design Thinking and Agile Project Management...Lessons learned from contrasting Design Thinking and Agile Project Management...
Lessons learned from contrasting Design Thinking and Agile Project Management...
 
Visual Scrum - What you see is What you get
Visual Scrum - What you see is What you getVisual Scrum - What you see is What you get
Visual Scrum - What you see is What you get
 
Un Primer Paso a la Agilidad: Retrospectivas para el Aprendizaje de la Ingeni...
Un Primer Paso a la Agilidad: Retrospectivas para el Aprendizaje de la Ingeni...Un Primer Paso a la Agilidad: Retrospectivas para el Aprendizaje de la Ingeni...
Un Primer Paso a la Agilidad: Retrospectivas para el Aprendizaje de la Ingeni...
 
Análisis de la implementación de prácticas ágiles en Argentina
Análisis de la implementación de prácticas ágiles en ArgentinaAnálisis de la implementación de prácticas ágiles en Argentina
Análisis de la implementación de prácticas ágiles en Argentina
 
Como cocinar tu contrato ágil
Como cocinar tu contrato ágilComo cocinar tu contrato ágil
Como cocinar tu contrato ágil
 
Cas2010 gestion-agil-de-la-configuracion
Cas2010 gestion-agil-de-la-configuracionCas2010 gestion-agil-de-la-configuracion
Cas2010 gestion-agil-de-la-configuracion
 
Cas2010 itinerario-implementacion-agil
Cas2010 itinerario-implementacion-agilCas2010 itinerario-implementacion-agil
Cas2010 itinerario-implementacion-agil
 
Cas2010 gestion-agil-de-equipos
Cas2010 gestion-agil-de-equiposCas2010 gestion-agil-de-equipos
Cas2010 gestion-agil-de-equipos
 
Cas2010 integrando-practicas-agiles-y-de-experiencia-de-usuario
Cas2010 integrando-practicas-agiles-y-de-experiencia-de-usuarioCas2010 integrando-practicas-agiles-y-de-experiencia-de-usuario
Cas2010 integrando-practicas-agiles-y-de-experiencia-de-usuario
 
Cas2010 toolchain-for-agile-teams-traceability-from-product-vision-to-working...
Cas2010 toolchain-for-agile-teams-traceability-from-product-vision-to-working...Cas2010 toolchain-for-agile-teams-traceability-from-product-vision-to-working...
Cas2010 toolchain-for-agile-teams-traceability-from-product-vision-to-working...
 
Cas2010 los-principios-agiles-como-guia-o-por-que-querras-volver-a-modelos-tr...
Cas2010 los-principios-agiles-como-guia-o-por-que-querras-volver-a-modelos-tr...Cas2010 los-principios-agiles-como-guia-o-por-que-querras-volver-a-modelos-tr...
Cas2010 los-principios-agiles-como-guia-o-por-que-querras-volver-a-modelos-tr...
 
Cas2010 to-track-defects-or-not-to-track-defects-that-is-the-question
Cas2010 to-track-defects-or-not-to-track-defects-that-is-the-questionCas2010 to-track-defects-or-not-to-track-defects-that-is-the-question
Cas2010 to-track-defects-or-not-to-track-defects-that-is-the-question
 
Cas2010 is-there-space-for-testers-in-agile-projects
Cas2010 is-there-space-for-testers-in-agile-projectsCas2010 is-there-space-for-testers-in-agile-projects
Cas2010 is-there-space-for-testers-in-agile-projects
 
Cas2010 one-year-of-software-developments-to-win-a-world-racing-championship
Cas2010 one-year-of-software-developments-to-win-a-world-racing-championshipCas2010 one-year-of-software-developments-to-win-a-world-racing-championship
Cas2010 one-year-of-software-developments-to-win-a-world-racing-championship
 
Cas2010 pair-programming-strategies
Cas2010 pair-programming-strategiesCas2010 pair-programming-strategies
Cas2010 pair-programming-strategies
 
Cas2010 behavior-driven-development-aplicado-en-acceptance-test-automation
Cas2010 behavior-driven-development-aplicado-en-acceptance-test-automationCas2010 behavior-driven-development-aplicado-en-acceptance-test-automation
Cas2010 behavior-driven-development-aplicado-en-acceptance-test-automation
 
Cas2010 herramientas-de-pruebas-unitarias-pex-y-moles
Cas2010 herramientas-de-pruebas-unitarias-pex-y-molesCas2010 herramientas-de-pruebas-unitarias-pex-y-moles
Cas2010 herramientas-de-pruebas-unitarias-pex-y-moles
 
Ser ágil en España, un caso real con equipos de trabajo en remoto
Ser ágil en España, un caso real con equipos de trabajo en remotoSer ágil en España, un caso real con equipos de trabajo en remoto
Ser ágil en España, un caso real con equipos de trabajo en remoto
 
Cuore.js: Una historia de amor
Cuore.js: Una historia de amorCuore.js: Una historia de amor
Cuore.js: Una historia de amor
 
Stop the line & Stop Feature Development practices
Stop the line & Stop Feature Development practicesStop the line & Stop Feature Development practices
Stop the line & Stop Feature Development practices
 

SCM ágil – integración continua vs controlada – the raise of DVCS