SlideShare una empresa de Scribd logo
1 de 19
C R I S T I A N R O M E R O M A T E S A N Z
C O L E G I A D O 1 0 5 C O L E G I O I N G E N I E R O S I N F O R M Á T I C O S
Integración continua: el coste de
oportunidad
Punto de partida
1. Desarrollos de aplicaciones heterogéneos con estructuras
diferentes.
2. Librerías usadas sin soporte actual y con bugs conocidos
en productos subidos a producción.
3. Escasez de pruebas unitarias/ integración en desarrollos
existentes.
4. Trazas de logs y gestión de excepciones poco clara entre
capas.
5. Fases de desarrollo cortas, fases de mantenimiento
grandes (por no decir infinitas).
6. Dificultad a la hora de acometer una refactorización.
7. Desarrollo nuevas funcionalidades generan errores en las
ya existentes.
Problemática
Si has llegado a esta diapositiva, es que te preocupa el
futuro de las aplicaciones dentro de tu entidad.
- La mala noticia son los graves problemas que hemos
detectado.
- La buena noticia es que tenemos solución para los
posibles dolores de cabeza que generaría los problemas
expuestos anteriormente.
Bienvenido a la integración
continua
Que es integración continua?
“The essence of my philosophy to software delivery is to build software so
that it is always in a state where it could be put into production. We call
this Continuous Delivery because we are continuously running a
deployment pipeline that tests if this software is in a state to be delivered.”
Definición para toda la familia: la integración continua
se basa en tener siempre subido código a nuestro repositorio
que pueda ser puesto en producción, el proceso se encarga de
ver si nuestro software cumple una seria de requisitos
(pruebas, calidad etc..).
Caso positivo Despliegue automático en entorno
Caso negativo Correos a los implicados para corregir los errores
Reingeniería de procesos desarrollo del
software
1. En los 90 se desarrollaba software de manera atómica
y desarrollos basados en clientes pesados.
2. En los años 2000 el auge web trae los desarrollos
basados en clientes ligeros con servidores pesados
3. A finales de los años 2000 no solo interesa la web:
Servicios Rest, móviles, web…
 Necesitamos piezas desacopladas y probadas. Ahora tienen
que ser muy reutilizables.
 Necesitamos un punto central donde se prueba y se analice
todo el código de nuestra entidad para garantizar a quien nos
consume las reglas del juego y que todo funciona
correctamente.
 Necesitamos equipos de expertos concienciados en la
necesidad de crear código de calidad.
Símil tecnológico
Madrid Barcelona
A favor En contra
• Yo conozco mi coche.
• Soy el mejor conduciendo con
este vehículo.
• Esto funciona y no lo cambio.
• Sirve para ir de un sitio A a
otro sitio B como otros coches.
• Puedo llegar mas rápido a los
sitios.
• Mas comodidad para
conductor y acompañantes.
• Menor consumo.
• Mayor seguridad en
transporte.
• Menor siniestralidad
Símil real uso integración continua
Programación Sin CI Programación Con CI
• Yo conozco mi código
• Soy el mejor programando con mi
metodología
• Esto funciona y no lo cambio.
• Hago lo mismo que el resto con la
“misma calidad”
• Mi código es mi tesoro (aunque el
90% sea copy paste )
• He probado y funciona
“perfectamente”
• Todos conocen mi código
(maven/gradle, pruebas,
frameworks)
• Somos lo mejores desarrollando con
una metodología real y tangible
• Menor consumo de “recursos”:
equipos pequeños pero con mucha
formación.
• Uso recursos en la nube, me centro
en mi negocio y en lo que soy bueno.
• Todo se prueba para garantizar su
funcionamiento y para facilitar
refactorizaciones futuras
Consecuencias de desarrollos sin integración
continua
1. No existe un sitio común donde se valide la herramienta. En
local cada uno “certifica” que ha terminado y funciona
correctamente
2. La realidad es otra: códigos con muchas líneas, con muchos if y
poco claros debido a que nadie valida su calidad, solo el propio
desarrollador.
3. No se conoce la versiones de las librerías que se usan, ni tan
siquiera si estas funcionan correctamente.
4. En mi máquina esto me “funciona”. Se suba código a
repositorios que no funciona y sin todas las dependencias:
gasto de tiempo y dinero en algo que no aporta valor.
5. Tenemos desarrollos grandes donde cada cambio supone
romper cosas que “funcionaban”. Mantenimiento infinito
con gran coste.
6. Curva de aprendizaje enorme para nuevos desarrolladores: el
conocimiento nunca reside en el código solo en la cabeza de los
equipos
Argumentos en contra de su uso
1. Hacer pruebas y comprobar la integridad de nuestros
proyectos consume tiempo en algo que no aporta
funcionalidad a nuestro proyecto. Resultado: Gran coste
de mantenimiento
2. Yo puedo programarlo todo, no me fio en el rendimiento de
estas nuevas metodologías y herramientas (complejo del
super-programador)  Resultado: Reinventamos ruedas
cada dia que nos ponemos delante de nuestro IDE favorito.
3. Esta metodología en otras entidades se puede usar pero mi
empresa es diferente  Resultado: Tiempos de desarrollo
infinitos y poca calidad en código. Programemos entonces
en ensamblador  !!!!
4. No conozco estas nuevas herramientas y por lo tanto me será
mas complicado avanzar  Resultado: desarrollos
repetitivos con programadores poco motivados.
Soy Jenkins vengo a poner orden
Os presento a nuestro nuevo amigo a partir de ahora:
JENKINS:
Para servirles
Jenkins: y quien es el ???
1. Es la herramienta de integración continua de libre distribución mas usada en
las empresas de todo el mundo. (Dell o Sony, proyectos de código abierto
como GitHub y organizaciones varias como pueden ser Ebay, Facebook etc…)
2. Compila nuestro código y lanza un serie de tareas que nosotros le digamos:
 Lanzamiento de test unitarios y de integración
 Pruebas de carga
 Pruebas de integración con otros artefactos que me usan o uso para
ver que no rompe nada que ya estaba funcionando.
 Comprobación del numero de líneas que prueban nuestros test.
 Comprobaciones de calidad de código
 Envió de los posibles errores a las personas que lo han
realizado/responsables.
 Puesta automática de nuestros desarrollos en servidores/ entornos
de pruebas para tener siempre subido el ultimo código estable.
TOMCAT, WAS, TESTFAIRY, TESTFLIGHT ETC….
3. A partir de ahora es un miembro mas del equipo y como tal debe de ser
mimado por todos 
Jenkins: Interfaz de usuario
Tareas a realizar con el código de la entidad.
Jenkins: Interfaz de usuario
Dependencias entre tareas
Jenkins: Interfaz de usuario
Cobertura de los test
Jenkins: Interfaz de usuario
Resultado de las ejecuciones
Jenkins: Interfaz de usuario
Resultado de las ejecuciones
Jenkins: Interfaz de usuario
Ejemplo subida automática a Testflight
Jenkins: Interfaz de usuario
Subida automática al servidor de desarrollo
Uso local/uso en la nube
Jenkins instalación versus Cloudbeed
Jenkins puede ser usado como instalación local, como servicio o
bien corriendo en cualquier servidor de aplicaciones.
Existe una versión en la nube con todo lo necesario para tener
entornos reales sin necesidad de mucho conocimiento.
Elegir uno u otro dependerá si queremos primar que nuestro
código nunca salga de la entidad o bien queremos minimizar
costes de manera enorme, donde solo tendremos que
preocuparnos de usar, nunca de instalar.

Más contenido relacionado

La actualidad más candente

atSistemas - Presentación Integración Continua AUG Barcelona enero13
atSistemas - Presentación Integración Continua AUG Barcelona enero13atSistemas - Presentación Integración Continua AUG Barcelona enero13
atSistemas - Presentación Integración Continua AUG Barcelona enero13
atSistemas
 
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
Kleer Agile Coaching & Training
 

La actualidad más candente (20)

atSistemas - Presentación Integración Continua AUG Barcelona enero13
atSistemas - Presentación Integración Continua AUG Barcelona enero13atSistemas - Presentación Integración Continua AUG Barcelona enero13
atSistemas - Presentación Integración Continua AUG Barcelona enero13
 
Mejorando la productividad en proyectos java EE con CI y CD - OTN 2015
Mejorando la productividad en proyectos java EE con  CI y CD - OTN 2015 Mejorando la productividad en proyectos java EE con  CI y CD - OTN 2015
Mejorando la productividad en proyectos java EE con CI y CD - OTN 2015
 
Integracion continua
Integracion continuaIntegracion continua
Integracion continua
 
Integracion Continua
Integracion ContinuaIntegracion Continua
Integracion Continua
 
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
 
Introducción a la automatización de pruebas con tecnologías .Net
Introducción a la automatización de pruebas con tecnologías .NetIntroducción a la automatización de pruebas con tecnologías .Net
Introducción a la automatización de pruebas con tecnologías .Net
 
SonarQube: ¿cómo de malo es mi software?
SonarQube: ¿cómo de malo es mi software?SonarQube: ¿cómo de malo es mi software?
SonarQube: ¿cómo de malo es mi software?
 
Prueba De Aplicaciones Web con Selenium 2 y WebDriver
Prueba De Aplicaciones Web con Selenium 2 y WebDriverPrueba De Aplicaciones Web con Selenium 2 y WebDriver
Prueba De Aplicaciones Web con Selenium 2 y WebDriver
 
Integracion Continua
Integracion ContinuaIntegracion Continua
Integracion Continua
 
Testing Ruby on Rails (spanish)
Testing Ruby on Rails (spanish)Testing Ruby on Rails (spanish)
Testing Ruby on Rails (spanish)
 
Integración Continua
Integración ContinuaIntegración Continua
Integración Continua
 
Testing como parte de la cultura DevOps
Testing como parte de la cultura DevOpsTesting como parte de la cultura DevOps
Testing como parte de la cultura DevOps
 
Continuous Delivery Un caso de estudio
Continuous Delivery Un caso de estudioContinuous Delivery Un caso de estudio
Continuous Delivery Un caso de estudio
 
Cómo iniciarme en el mundo de la automatización de pruebas
Cómo iniciarme en el mundo de la automatización de pruebasCómo iniciarme en el mundo de la automatización de pruebas
Cómo iniciarme en el mundo de la automatización de pruebas
 
Selenium
SeleniumSelenium
Selenium
 
E2E testing frameworks:lo bueno, lo malo y lo feo
E2E testing frameworks:lo bueno, lo malo y lo feoE2E testing frameworks:lo bueno, lo malo y lo feo
E2E testing frameworks:lo bueno, lo malo y lo feo
 
Scrum overview
Scrum overview Scrum overview
Scrum overview
 
Ecuador jug 2017 -incrementando la productividad de proyectos java ee con c...
Ecuador jug   2017 -incrementando la productividad de proyectos java ee con c...Ecuador jug   2017 -incrementando la productividad de proyectos java ee con c...
Ecuador jug 2017 -incrementando la productividad de proyectos java ee con c...
 
Continuous Testing en un ambiente DevOps
Continuous Testing en un ambiente DevOpsContinuous Testing en un ambiente DevOps
Continuous Testing en un ambiente DevOps
 
¡Introducción a Cypress! - Globant Tech Insiders: Automatización de Pruebas
¡Introducción a Cypress! - Globant Tech Insiders: Automatización de Pruebas¡Introducción a Cypress! - Globant Tech Insiders: Automatización de Pruebas
¡Introducción a Cypress! - Globant Tech Insiders: Automatización de Pruebas
 

Destacado

Destacado (6)

Chuleta Github: La potencia con control !!!!
Chuleta Github: La potencia con control !!!!Chuleta Github: La potencia con control !!!!
Chuleta Github: La potencia con control !!!!
 
Java 1.8:Road to Functional Language
Java 1.8:Road to Functional LanguageJava 1.8:Road to Functional Language
Java 1.8:Road to Functional Language
 
Curso Spring Roo Spring Data Jpa Maven
Curso Spring Roo Spring Data Jpa MavenCurso Spring Roo Spring Data Jpa Maven
Curso Spring Roo Spring Data Jpa Maven
 
Git: guia fácil para uso con Github
Git: guia fácil para uso con GithubGit: guia fácil para uso con Github
Git: guia fácil para uso con Github
 
Maven Divide tu código, pruébalo y vencerás
Maven Divide tu código, pruébalo y vencerásMaven Divide tu código, pruébalo y vencerás
Maven Divide tu código, pruébalo y vencerás
 
Integración Continua con Apps Xamarin
Integración Continua con Apps XamarinIntegración Continua con Apps Xamarin
Integración Continua con Apps Xamarin
 

Similar a El coste de no usar integración continua

Programacion Modular
Programacion ModularProgramacion Modular
Programacion Modular
guestb97266b9
 
Tecnicas de ingenieria de software
Tecnicas de ingenieria de softwareTecnicas de ingenieria de software
Tecnicas de ingenieria de software
'Jorge Martinez
 
Resolucion de guia
Resolucion de guiaResolucion de guia
Resolucion de guia
reina vigil
 
Resolucion de guia
Resolucion de guiaResolucion de guia
Resolucion de guia
reina vigil
 
pruebasunitarias-110921232512-phpapp02.pptx
pruebasunitarias-110921232512-phpapp02.pptxpruebasunitarias-110921232512-phpapp02.pptx
pruebasunitarias-110921232512-phpapp02.pptx
CompusoftnetCiaLtda
 

Similar a El coste de no usar integración continua (20)

Software Quality Assurance
Software Quality AssuranceSoftware Quality Assurance
Software Quality Assurance
 
METODOLOGIA XP
METODOLOGIA XPMETODOLOGIA XP
METODOLOGIA XP
 
Ra.1..
Ra.1..Ra.1..
Ra.1..
 
¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?
 
Devops meetup 10 diciembre 2014
Devops meetup 10 diciembre 2014 Devops meetup 10 diciembre 2014
Devops meetup 10 diciembre 2014
 
GENEX
GENEXGENEX
GENEX
 
PROCESO DE DESARROLLO DE SOFTWARE.pptx
PROCESO DE DESARROLLO DE SOFTWARE.pptxPROCESO DE DESARROLLO DE SOFTWARE.pptx
PROCESO DE DESARROLLO DE SOFTWARE.pptx
 
Herramientas de integración continua en proyectos software
Herramientas de integración continua en proyectos softwareHerramientas de integración continua en proyectos software
Herramientas de integración continua en proyectos software
 
Cypress en un mundo lleno de Selenium
Cypress en un mundo lleno de SeleniumCypress en un mundo lleno de Selenium
Cypress en un mundo lleno de Selenium
 
Programacion Modular
Programacion ModularProgramacion Modular
Programacion Modular
 
Programacion Modular
Programacion ModularProgramacion Modular
Programacion Modular
 
Comenzando a usar el Continuous Delivery
 Comenzando a usar el Continuous Delivery Comenzando a usar el Continuous Delivery
Comenzando a usar el Continuous Delivery
 
Desarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por PruebasDesarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por Pruebas
 
DevOps on AZURE
DevOps on AZUREDevOps on AZURE
DevOps on AZURE
 
Que demonios es eso de Devops (y porquedebería interesarme)
Que demonios es eso de Devops (y porquedebería interesarme)Que demonios es eso de Devops (y porquedebería interesarme)
Que demonios es eso de Devops (y porquedebería interesarme)
 
Tecnicas de ingenieria de software
Tecnicas de ingenieria de softwareTecnicas de ingenieria de software
Tecnicas de ingenieria de software
 
#HablemosDeTestingDay - José Castillo: Estrategia de QA en un contexto de DevOps
#HablemosDeTestingDay - José Castillo: Estrategia de QA en un contexto de DevOps#HablemosDeTestingDay - José Castillo: Estrategia de QA en un contexto de DevOps
#HablemosDeTestingDay - José Castillo: Estrategia de QA en un contexto de DevOps
 
Resolucion de guia
Resolucion de guiaResolucion de guia
Resolucion de guia
 
Resolucion de guia
Resolucion de guiaResolucion de guia
Resolucion de guia
 
pruebasunitarias-110921232512-phpapp02.pptx
pruebasunitarias-110921232512-phpapp02.pptxpruebasunitarias-110921232512-phpapp02.pptx
pruebasunitarias-110921232512-phpapp02.pptx
 

Último

🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
EliaHernndez7
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdf
patriciaines1993
 
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACIONRESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
amelia poma
 

Último (20)

Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024
 
Los dos testigos. Testifican de la Verdad
Los dos testigos. Testifican de la VerdadLos dos testigos. Testifican de la Verdad
Los dos testigos. Testifican de la Verdad
 
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docxPLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
 
Louis Jean François Lagrenée. Erotismo y sensualidad. El erotismo en la Hist...
Louis Jean François Lagrenée.  Erotismo y sensualidad. El erotismo en la Hist...Louis Jean François Lagrenée.  Erotismo y sensualidad. El erotismo en la Hist...
Louis Jean François Lagrenée. Erotismo y sensualidad. El erotismo en la Hist...
 
Revista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdfRevista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdf
 
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPCTRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
 
Tema 19. Inmunología y el sistema inmunitario 2024
Tema 19. Inmunología y el sistema inmunitario 2024Tema 19. Inmunología y el sistema inmunitario 2024
Tema 19. Inmunología y el sistema inmunitario 2024
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
 
Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024
 
TIENDAS MASS MINIMARKET ESTUDIO DE MERCADO
TIENDAS MASS MINIMARKET ESTUDIO DE MERCADOTIENDAS MASS MINIMARKET ESTUDIO DE MERCADO
TIENDAS MASS MINIMARKET ESTUDIO DE MERCADO
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
 
PP_Comunicacion en Salud: Objetivación de signos y síntomas
PP_Comunicacion en Salud: Objetivación de signos y síntomasPP_Comunicacion en Salud: Objetivación de signos y síntomas
PP_Comunicacion en Salud: Objetivación de signos y síntomas
 
Desarrollo y Aplicación de la Administración por Valores
Desarrollo y Aplicación de la Administración por ValoresDesarrollo y Aplicación de la Administración por Valores
Desarrollo y Aplicación de la Administración por Valores
 
Tema 11. Dinámica de la hidrosfera 2024
Tema 11.  Dinámica de la hidrosfera 2024Tema 11.  Dinámica de la hidrosfera 2024
Tema 11. Dinámica de la hidrosfera 2024
 
Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdf
 
Linea del tiempo - Filosofos Cristianos.docx
Linea del tiempo - Filosofos Cristianos.docxLinea del tiempo - Filosofos Cristianos.docx
Linea del tiempo - Filosofos Cristianos.docx
 
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACIONRESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
 
AEC 2. Aventura en el Antiguo Egipto.pptx
AEC 2. Aventura en el Antiguo Egipto.pptxAEC 2. Aventura en el Antiguo Egipto.pptx
AEC 2. Aventura en el Antiguo Egipto.pptx
 
La Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración AmbientalLa Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración Ambiental
 

El coste de no usar integración continua

  • 1. C R I S T I A N R O M E R O M A T E S A N Z C O L E G I A D O 1 0 5 C O L E G I O I N G E N I E R O S I N F O R M Á T I C O S Integración continua: el coste de oportunidad
  • 2. Punto de partida 1. Desarrollos de aplicaciones heterogéneos con estructuras diferentes. 2. Librerías usadas sin soporte actual y con bugs conocidos en productos subidos a producción. 3. Escasez de pruebas unitarias/ integración en desarrollos existentes. 4. Trazas de logs y gestión de excepciones poco clara entre capas. 5. Fases de desarrollo cortas, fases de mantenimiento grandes (por no decir infinitas). 6. Dificultad a la hora de acometer una refactorización. 7. Desarrollo nuevas funcionalidades generan errores en las ya existentes.
  • 3. Problemática Si has llegado a esta diapositiva, es que te preocupa el futuro de las aplicaciones dentro de tu entidad. - La mala noticia son los graves problemas que hemos detectado. - La buena noticia es que tenemos solución para los posibles dolores de cabeza que generaría los problemas expuestos anteriormente. Bienvenido a la integración continua
  • 4. Que es integración continua? “The essence of my philosophy to software delivery is to build software so that it is always in a state where it could be put into production. We call this Continuous Delivery because we are continuously running a deployment pipeline that tests if this software is in a state to be delivered.” Definición para toda la familia: la integración continua se basa en tener siempre subido código a nuestro repositorio que pueda ser puesto en producción, el proceso se encarga de ver si nuestro software cumple una seria de requisitos (pruebas, calidad etc..). Caso positivo Despliegue automático en entorno Caso negativo Correos a los implicados para corregir los errores
  • 5. Reingeniería de procesos desarrollo del software 1. En los 90 se desarrollaba software de manera atómica y desarrollos basados en clientes pesados. 2. En los años 2000 el auge web trae los desarrollos basados en clientes ligeros con servidores pesados 3. A finales de los años 2000 no solo interesa la web: Servicios Rest, móviles, web…  Necesitamos piezas desacopladas y probadas. Ahora tienen que ser muy reutilizables.  Necesitamos un punto central donde se prueba y se analice todo el código de nuestra entidad para garantizar a quien nos consume las reglas del juego y que todo funciona correctamente.  Necesitamos equipos de expertos concienciados en la necesidad de crear código de calidad.
  • 6. Símil tecnológico Madrid Barcelona A favor En contra • Yo conozco mi coche. • Soy el mejor conduciendo con este vehículo. • Esto funciona y no lo cambio. • Sirve para ir de un sitio A a otro sitio B como otros coches. • Puedo llegar mas rápido a los sitios. • Mas comodidad para conductor y acompañantes. • Menor consumo. • Mayor seguridad en transporte. • Menor siniestralidad
  • 7. Símil real uso integración continua Programación Sin CI Programación Con CI • Yo conozco mi código • Soy el mejor programando con mi metodología • Esto funciona y no lo cambio. • Hago lo mismo que el resto con la “misma calidad” • Mi código es mi tesoro (aunque el 90% sea copy paste ) • He probado y funciona “perfectamente” • Todos conocen mi código (maven/gradle, pruebas, frameworks) • Somos lo mejores desarrollando con una metodología real y tangible • Menor consumo de “recursos”: equipos pequeños pero con mucha formación. • Uso recursos en la nube, me centro en mi negocio y en lo que soy bueno. • Todo se prueba para garantizar su funcionamiento y para facilitar refactorizaciones futuras
  • 8. Consecuencias de desarrollos sin integración continua 1. No existe un sitio común donde se valide la herramienta. En local cada uno “certifica” que ha terminado y funciona correctamente 2. La realidad es otra: códigos con muchas líneas, con muchos if y poco claros debido a que nadie valida su calidad, solo el propio desarrollador. 3. No se conoce la versiones de las librerías que se usan, ni tan siquiera si estas funcionan correctamente. 4. En mi máquina esto me “funciona”. Se suba código a repositorios que no funciona y sin todas las dependencias: gasto de tiempo y dinero en algo que no aporta valor. 5. Tenemos desarrollos grandes donde cada cambio supone romper cosas que “funcionaban”. Mantenimiento infinito con gran coste. 6. Curva de aprendizaje enorme para nuevos desarrolladores: el conocimiento nunca reside en el código solo en la cabeza de los equipos
  • 9. Argumentos en contra de su uso 1. Hacer pruebas y comprobar la integridad de nuestros proyectos consume tiempo en algo que no aporta funcionalidad a nuestro proyecto. Resultado: Gran coste de mantenimiento 2. Yo puedo programarlo todo, no me fio en el rendimiento de estas nuevas metodologías y herramientas (complejo del super-programador)  Resultado: Reinventamos ruedas cada dia que nos ponemos delante de nuestro IDE favorito. 3. Esta metodología en otras entidades se puede usar pero mi empresa es diferente  Resultado: Tiempos de desarrollo infinitos y poca calidad en código. Programemos entonces en ensamblador  !!!! 4. No conozco estas nuevas herramientas y por lo tanto me será mas complicado avanzar  Resultado: desarrollos repetitivos con programadores poco motivados.
  • 10. Soy Jenkins vengo a poner orden Os presento a nuestro nuevo amigo a partir de ahora: JENKINS: Para servirles
  • 11. Jenkins: y quien es el ??? 1. Es la herramienta de integración continua de libre distribución mas usada en las empresas de todo el mundo. (Dell o Sony, proyectos de código abierto como GitHub y organizaciones varias como pueden ser Ebay, Facebook etc…) 2. Compila nuestro código y lanza un serie de tareas que nosotros le digamos:  Lanzamiento de test unitarios y de integración  Pruebas de carga  Pruebas de integración con otros artefactos que me usan o uso para ver que no rompe nada que ya estaba funcionando.  Comprobación del numero de líneas que prueban nuestros test.  Comprobaciones de calidad de código  Envió de los posibles errores a las personas que lo han realizado/responsables.  Puesta automática de nuestros desarrollos en servidores/ entornos de pruebas para tener siempre subido el ultimo código estable. TOMCAT, WAS, TESTFAIRY, TESTFLIGHT ETC…. 3. A partir de ahora es un miembro mas del equipo y como tal debe de ser mimado por todos 
  • 12. Jenkins: Interfaz de usuario Tareas a realizar con el código de la entidad.
  • 13. Jenkins: Interfaz de usuario Dependencias entre tareas
  • 14. Jenkins: Interfaz de usuario Cobertura de los test
  • 15. Jenkins: Interfaz de usuario Resultado de las ejecuciones
  • 16. Jenkins: Interfaz de usuario Resultado de las ejecuciones
  • 17. Jenkins: Interfaz de usuario Ejemplo subida automática a Testflight
  • 18. Jenkins: Interfaz de usuario Subida automática al servidor de desarrollo
  • 19. Uso local/uso en la nube Jenkins instalación versus Cloudbeed Jenkins puede ser usado como instalación local, como servicio o bien corriendo en cualquier servidor de aplicaciones. Existe una versión en la nube con todo lo necesario para tener entornos reales sin necesidad de mucho conocimiento. Elegir uno u otro dependerá si queremos primar que nuestro código nunca salga de la entidad o bien queremos minimizar costes de manera enorme, donde solo tendremos que preocuparnos de usar, nunca de instalar.