Más contenido relacionado Más de Jorge Hidalgo (20) Hackers Week 3.0 - DevOps Práctico Java-Web 2016-03-162. Jorge Hidalgo
@_deors
Sobre nosotros
Copyright © 2016 Accenture All rights reserved. 2
Vicente González
@viarellano
Julio Palma
@restalion
Trabajamos en Coritel, empresa del grupo Accenture
oficina de Málaga – Accenture Delivery Center in Spain
formamos parte de los grupos global y local de Java y DevOps en Accenture
4. 4
Guía para el taller – Descarga desde GitHub
• Buscar en Google GitHub Accenture o entrar directamente a https://github.com/Accenture.
• En la página de GitHub buscar el proyecto adop-docker-compose
• Copiar la URL del clonado desde la página de GitHub.
Copyright © 2016 Accenture All rights reserved.
5. 5
Guía para el taller – Descarga desde GitHub
• Buscar en Google GitHub Accenture o entrar directamente a https://github.com/Accenture.
• En la página de GitHub buscar el proyecto adop-docker-compose
• Copiar la URL del clonado desde la página de GitHub.
• Desde un interfaz de comandos ejecutar la instrucción git-bash
Copyright © 2016 Accenture All rights reserved.
6. 6
Guía para el taller – Descarga desde GitHub
• Buscar en Google GitHub Accenture o entrar directamente a https://github.com/Accenture.
• En la página de GitHub buscar el proyecto adop-docker-compose
• Copiar la URL del clonado desde la página de GitHub.
• Desde un interfaz de comandos ejecutar la instrucción git-bash
• En el bash clonar el proyecto:
– Ir a la ruta C:HackersWeekdevops
– Teclear git clone <URL>
Copyright © 2016 Accenture All rights reserved.
7. 7
Guía para el taller – Descarga desde GitHub
• Buscar en Google GitHub Accenture o entrar directamente a https://github.com/Accenture.
• En la página de GitHub buscar el proyecto adop-docker-compose
• Copiar la URL del clonado desde la página de GitHub.
• Desde un interfaz de comandos ejecutar la instrucción git-bash
• En el bash clonar el proyecto:
– Ir a la ruta C:HackersWeekdevops
– Teclear git clone <URL>
• Si todo ha ido bien en el directorio existe un subdirectorio llamado adop-docker-compose.
• Dentro de ese directorio copiamos el script que está en la ruta C:HackersWeekdevops:
– La mitad de las máquinas: hw3-setup-zona1.sh
– La otra mitad: hw3-setup-zona2.sh
• Ejecutamos el script, pasándole como parámetro el número del PC (mirad la etiqueta sobre la torre), el script creará
una VM en Amazon Web Services para cada uno, y empezará a descargarse todo el contenido de ADOP.
Copyright © 2016 Accenture All rights reserved.
9. 9
¿Qué es DevOps?
DevOps es una estrategia dedicada a promover la colaboración,
eliminando las fricciones entre los equipos de Desarrollo y Operaciones
Copyright © 2016 Accenture All rights reserved.
Desarrollo Operaciones
DevOps
Dev quiere cambios Ops quiere estabilidad
Todos quieren...
Software estable y operable
Procesos de entregas optimizados y consistentes
Cumplimiento de estándares (infraestructura, plataforma)
Bajo riesgo y gran cantidad de cambios
Código confiable e integridad del software
Alta disponibilidad y entornos predecibles
10. 10
Principios de DevOps
Copyright © 2016 Accenture All rights reserved.
Prácticas de gestión de
la configuración sólidas
Despliegue continuo de
valor de negocio (Lean IT)
Automatización de pruebas
Prueba continua
Flujos de trabajo
Entrega continua
Arquitectura de grano fino
Micro-servicios
Colaboración y empatía
Sin silos o juegos de la culpa
Construcción y
despliegue automático
Recursos elásticos
Cloud
Diseño robusto y resiliencia
Degradación gradual
Experimentación oportunista
Mejora continua
12. 12
Accenture DevOps Platform
Copyright © 2016 Accenture All rights reserved.
Hosting en cloud y accesso a los servicios de aplicación usando una plataforma cloud aprobada por Accenture
Release
Dev.
Source
Control
Code
Review
Build
Code
Quality
Deploy Testing
A-B
Test
ADOP es una plataforma de desarrollo basado en la nube, une una colección integrada de herramientas Open
Source para el desarrollo, despliegue y control de aplicaciones usando las mejores prácticas de DevOps. ADOP
puede provisionarse en menos de 10 minutos, permite a los proyectos una configuración rápida de pipelines y
entornos, reduciendo el coste de desarrollo, prueba y entrega de código.
Los recursos y herramientas soportan el proceso y las entregas de calidad
Beneficios
Entrega con ConfianzaTiempo a mercado Riesgo de los Cambios
• Nuevas características
entregadas en días o semanas
no meses
• La experimentación continua
permite que los servicios se
mejoren continuamente
• Las métricas permiten mejorar
la productividad
• Los cambios se introducen en
tiempo real y son fáciles de
revertir
• Las pruebas se ejecutan en
entornos representativos
configurados automáticamente
• Eliminación de los fallos de
regresión
• Gestión de la liberación de
nuevas características
• Métricas centradas en el negocio
que permiten un control en
tiempo real del servicio
• Vulnerabilidades de seguridad
identificadas en tiempo de
construcción
13. 13
Accenture DevOps Platform es un Proyecto OpenSource
Copyright © 2016 Accenture All rights reserved.
Se trata de un proyecto Open Source, contribuido por Accenture, bajo licencia de Apache.
Disponible en GitHub se puede descargar, modificar, contribuir… Pull Requests are welcomed!!
15. 15
Gerrit
• Gerrit proporciona una herramienta web de revisión de código y gestión del repositorio para el sistema de control de
versiones Git.
Copyright © 2016 Accenture All rights reserved.
16. 16
Gerrit
• Gerrit proporciona una herramienta web de revisión de código y gestión del repositorio para el sistema de control de
versiones Git.
• Permite discutir las modificaciones en el código.
– Revisa las versiones antiguas y nuevas del código con marcas de colores. Permite discutir secciones específicas
con otros desarrolladores para hacer los cambios correctos.
Copyright © 2016 Accenture All rights reserved.
17. 17
Gerrit
• Gerrit proporciona una herramienta web de revisión de código y gestión del repositorio para el sistema de control de
versiones Git.
• Permite discutir las modificaciones en el código.
– Revisa las versiones antiguas y nuevas del código con marcas de colores. Permite discutir secciones específicas
con otros desarrolladores para hacer los cambios correctos.
• Gestionar y servir repositorios Git
– Gerrit incluye servidores Git compatibles con todos los clientes Git accesibles vía SSH o HTTPS.
– Simplifica la gestión alojando varios repositorios Git juntos.
Copyright © 2016 Accenture All rights reserved.
18. 18
Jenkins
• La integración continua consiste en tener todo el trabajo de desarrollo integrado de forma que en base a una
planificación o evento el trabajo se construye y prueba automáticamente. La idea es que los errores de desarrollo se
detecten lo antes posible en el proceso.
• Los siguientes pasos explican a alto nivel cómo es el ciclo de vida del desarrollo con integración continua:
Copyright © 2016 Accenture All rights reserved.
19. 19
Selenium Grid
• Selenium automatiza los navegadores. Principalmente se utiliza para automatizar
aplicaciones web para realizar pruebas, pero no está limitado a eso. Tareas de
administración repetitivas basadas en herramientas web pueden (y deben)
automatizarse.
• El principal cambio reciente en Selenium ha sido la inclusión del API Web Driver.
Esto nos permite manejar nativamente el navegador de forma local o remota usando
Selenium Server, es un gran paso adelante en términos de automatización.
• WebDriver se diseñó como un interfaz de programación más simple y concisa que
permite evitar algunas limitaciones del API Selenium-RC.
• Se trata de una API Orientada a Objetos.
• Maneja el navegador de forma mucho más efectiva y supera las limitaciones de
Selenium 1.x que afectan a al cobertura de nuestros test funcionales, como por
ejemplo la descarga o subida de ficheros, pop-ups y diálogos.
Copyright © 2016 Accenture All rights reserved.
20. 20
SonarQube
• SonarQube nos permite realizar un control continuo de la
calidad técnica del código fuente y ejecutar pruebas unitarias
automáticas.
• Soporta más de 20 lenguajes de programación diferentes,
incluyendo Java, C#, C/C++, Objective-C, PL/SQL…
Copyright © 2016 Accenture All rights reserved.
21. 21
Docker
• Docker nos permite empaquetar nuestra aplicación con todas sus dependencias en
unidades estandarizadas.
– Los contenedores Docker “envuelven” un trozo de software dentro de un sistema de
ficheros completo que contiene todo lo necesario para su ejecución: código, runtime,
herramientas y librerías de sistema (cualquier cosa que puedas instalar en un servidor)
– Esto garantiza que siempre ejecutas lo mismo, sin importar el entorno en el que lo
ejecutas.
Copyright © 2016 Accenture All rights reserved.
22. 22
Docker
• Docker nos permite empaquetar nuestra aplicación con todas sus dependencias en
unidades estandarizadas.
• Características:
– Ligero
• Los contenedores que se ejecutan en la misma máquina comparten el mismo kernel
del sistema operativo de forma que arrancan instantáneamente y realizan un uso más
eficiente de la RAM.
• Las imágenes se construyen como sistema de ficheros por capas de forma que
compartan ficheros comunes, así se logra un uso más eficiente de la capacidad del
disco y las descargas.
– Abierto
• Los contenedores se basan en estándares abiertos permitiendo a los contenedores
ejecutarse en la mayoría de distribuciones Linux y sistemas operativos de Microsoft.
– Seguro
• Los contenedores aíslan las aplicaciones unas de otras y de la infraestructura mientras
proveen a la aplicación de una nueva capa de protección.
Copyright © 2016 Accenture All rights reserved.
24. 24
Guía para el taller
• Al finalizar la ejecución del script ha mostrar un mensaje indicando que ha sido correcta.
Copyright © 2016 Accenture All rights reserved.
25. 25
Guía para el taller
• Al finalizar la ejecución del script ha mostrar un mensaje indicando que ha sido correcta.
• Ejecutamos las dos instrucciones que nos indica el script.
– Así añadimos la información de la máquina al entorno, para que sea utilizada por docker.
Copyright © 2016 Accenture All rights reserved.
26. 26
Guía para el taller
• Al finalizar la ejecución del script ha mostrar un mensaje indicando que ha sido correcta.
• Ejecutamos las dos instrucciones que nos indica el script.
• Comprobamos que la imagen se ha montado correctamente con docker-machine ls.
Copyright © 2016 Accenture All rights reserved.
27. 27
Guía para el taller
• Al finalizar la ejecución del script ha mostrar un mensaje indicando que ha sido correcta.
• Ejecutamos las dos instrucciones que nos indica el script.
• Comprobamos que la imagen se ha montado correctamente con docker-machine ls.
• Accedemos a la URL de nuestra máquina tal y como nos indica el script.
– Debemos ver la página de inicio de ADOP con todas las herramientas disponibles.
Copyright © 2016 Accenture All rights reserved.
28. 28
Guía para el taller
• Al finalizar la ejecución del script ha mostrar un mensaje indicando que ha sido correcta.
• Ejecutamos las dos instrucciones que nos indica el script.
• Comprobamos que la imagen se ha montado correctamente con docker-machine ls.
• Accedemos a la URL de nuestra máquina tal y como nos indica el script.
• Desde Jenkins creamos un nuevo job de despliegue en CI.
Copyright © 2016 Accenture All rights reserved.
29. 29
Guía para el taller
• Al finalizar la ejecución del script ha mostrar un mensaje indicando que ha sido correcta.
• Ejecutamos las dos instrucciones que nos indica el script.
• Comprobamos que la imagen se ha montado correctamente con docker-machine ls.
• Accedemos a la URL de nuestra máquina tal y como nos indica el script.
• Desde Jenkins creamos un nuevo job de despliegue en CI.
• Lanzamos el pipeline y comprobamos la información del build y la aplicación.
Copyright © 2016 Accenture All rights reserved.
30. 30
Guía para el taller
• Al finalizar la ejecución del script ha mostrar un mensaje indicando que ha sido correcta.
• Ejecutamos las dos instrucciones que nos indica el script.
• Comprobamos que la imagen se ha montado correctamente con docker-machine ls.
• Accedemos a la URL de nuestra máquina tal y como nos indica el script.
• Desde Jenkins creamos un nuevo job de despliegue en CI.
• Lanzamos el pipeline y comprobamos la información del build y la aplicación.
• Clonamos el repositorio en Gerrit.
Copyright © 2016 Accenture All rights reserved.
31. 31
Guía para el taller
• Al finalizar la ejecución del script ha mostrar un mensaje indicando que ha sido correcta.
• Ejecutamos las dos instrucciones que nos indica el script.
• Comprobamos que la imagen se ha montado correctamente con docker-machine ls.
• Accedemos a la URL de nuestra máquina tal y como nos indica el script.
• Desde Jenkins creamos un nuevo job de despliegue en CI.
• Lanzamos el pipeline y comprobamos la información del build y la aplicación.
• Clonamos el repositorio en Gerrit.
• Realizamos una modificación (por ejemplo añadiendo un mensaje en el jsp de inicio) y lo subimos con commit/push
Copyright © 2016 Accenture All rights reserved.
32. 32
Guía para el taller
• Al finalizar la ejecución del script ha mostrar un mensaje indicando que ha sido correcta.
• Ejecutamos las dos instrucciones que nos indica el script.
• Comprobamos que la imagen se ha montado correctamente con docker-machine ls.
• Accedemos a la URL de nuestra máquina tal y como nos indica el script.
• Desde Jenkins creamos un nuevo job de despliegue en CI.
• Lanzamos el pipeline y comprobamos la información del build y la aplicación.
• Clonamos el repositorio en Gerrit.
• Realizamos una modificación (por ejemplo añadiendo un mensaje en el jsp de inicio) y lo subimos con commit/push
• Lanzamos el pipeline y comprobamos que el cambio se ha subido a CI
Copyright © 2016 Accenture All rights reserved.
33. 33
Guía para el taller
• Al finalizar la ejecución del script ha mostrar un mensaje indicando que ha sido correcta.
• Ejecutamos las dos instrucciones que nos indica el script.
• Comprobamos que la imagen se ha montado correctamente con docker-machine ls.
• Accedemos a la URL de nuestra máquina tal y como nos indica el script.
• Desde Jenkins creamos un nuevo job de despliegue en CI.
• Lanzamos el pipeline y comprobamos la información del build y la aplicación.
• Clonamos el repositorio en Gerrit.
• Realizamos una modificación (por ejemplo añadiendo un mensaje en el jsp de inicio) y lo subimos con commit/push
• Lanzamos el pipeline y comprobamos que el cambio se ha subido a CI
• Creamos un nuevo entorno de preproducción, añadimos un job de despliegue en preproducción y ejecutamos el job.
Copyright © 2016 Accenture All rights reserved.
34. 34
Guía para el taller
• Al finalizar la ejecución del script ha mostrar un mensaje indicando que ha sido correcta.
• Ejecutamos las dos instrucciones que nos indica el script.
• Comprobamos que la imagen se ha montado correctamente con docker-machine ls.
• Accedemos a la URL de nuestra máquina tal y como nos indica el script.
• Desde Jenkins creamos un nuevo job de despliegue en CI.
• Lanzamos el pipeline y comprobamos la información del build y la aplicación.
• Clonamos el repositorio en Gerrit.
• Realizamos una modificación (por ejemplo añadiendo un mensaje en el jsp de inicio) y lo subimos con commit/push
• Lanzamos el pipeline y comprobamos que el cambio se ha subido a CI
• Creamos un nuevo entorno de preproducción, añadimos un job de despliegue en preproducción y ejecutamos el job.
• Comprobamos que en preproducción se han subido los cambios.
Copyright © 2016 Accenture All rights reserved.
35. 35
Guía para el taller
• Al finalizar la ejecución del script ha mostrar un mensaje indicando que ha sido correcta.
• Ejecutamos las dos instrucciones que nos indica el script.
• Comprobamos que la imagen se ha montado correctamente con docker-machine ls.
• Accedemos a la URL de nuestra máquina tal y como nos indica el script.
• Desde Jenkins creamos un nuevo job de despliegue en CI.
• Lanzamos el pipeline y comprobamos la información del build y la aplicación.
• Clonamos el repositorio en Gerrit.
• Realizamos una modificación (por ejemplo añadiendo un mensaje en el jsp de inicio) y lo subimos con commit/push
• Lanzamos el pipeline y comprobamos que el cambio se ha subido a CI
• Creamos un nuevo entorno de preproducción, añadimos un job de despliegue en preproducción y ejecutamos el job.
• Comprobamos que en preproducción se han subido los cambios.
• Creamos un nuevo entorno de producción, añadimos un job de despliegue en producción y ejecutamos el job.
Copyright © 2016 Accenture All rights reserved.
36. 36
Guía para el taller
• Al finalizar la ejecución del script ha mostrar un mensaje indicando que ha sido correcta.
• Ejecutamos las dos instrucciones que nos indica el script.
• Comprobamos que la imagen se ha montado correctamente con docker-machine ls.
• Accedemos a la URL de nuestra máquina tal y como nos indica el script.
• Desde Jenkins creamos un nuevo job de despliegue en CI.
• Lanzamos el pipeline y comprobamos la información del build y la aplicación.
• Clonamos el repositorio en Gerrit.
• Realizamos una modificación (por ejemplo añadiendo un mensaje en el jsp de inicio) y lo subimos con commit/push
• Lanzamos el pipeline y comprobamos que el cambio se ha subido a CI
• Creamos un nuevo entorno de preproducción, añadimos un job de despliegue en preproducción y ejecutamos el job.
• Comprobamos que en preproducción se han subido los cambios.
• Creamos un nuevo entorno de producción, añadimos un job de despliegue en producción y ejecutamos el job.
• Comprobamos que en producción se han subido los cambios.
Copyright © 2016 Accenture All rights reserved.
37. 37
Guía para el taller
• Al finalizar la ejecución del script ha mostrar un mensaje indicando que ha sido correcta.
• Ejecutamos las dos instrucciones que nos indica el script.
• Comprobamos que la imagen se ha montado correctamente con docker-machine ls.
• Accedemos a la URL de nuestra máquina tal y como nos indica el script.
• Desde Jenkins creamos un nuevo job de despliegue en CI.
• Lanzamos el pipeline y comprobamos la información del build y la aplicación.
• Clonamos el repositorio en Gerrit.
• Realizamos una modificación (por ejemplo añadiendo un mensaje en el jsp de inicio) y lo subimos con commit/push
• Lanzamos el pipeline y comprobamos que el cambio se ha subido a CI
• Creamos un nuevo entorno de preproducción, añadimos un job de despliegue en preproducción y ejecutamos el job.
• Comprobamos que en preproducción se han subido los cambios.
• Creamos un nuevo entorno de producción, añadimos un job de despliegue en producción y ejecutamos el job.
• Comprobamos que en producción se han subido los cambios.
• Realizamos un cambio “con error” en el código y lo subimos al repositorio con commit/push
Copyright © 2016 Accenture All rights reserved.
38. 38
Guía para el taller
• Al finalizar la ejecución del script ha mostrar un mensaje indicando que ha sido correcta.
• Ejecutamos las dos instrucciones que nos indica el script.
• Comprobamos que la imagen se ha montado correctamente con docker-machine ls.
• Accedemos a la URL de nuestra máquina tal y como nos indica el script.
• Desde Jenkins creamos un nuevo job de despliegue en CI.
• Lanzamos el pipeline y comprobamos la información del build y la aplicación.
• Clonamos el repositorio en Gerrit.
• Realizamos una modificación (por ejemplo añadiendo un mensaje en el jsp de inicio) y lo subimos con commit/push
• Lanzamos el pipeline y comprobamos que el cambio se ha subido a CI
• Creamos un nuevo entorno de preproducción, añadimos un job de despliegue en preproducción y ejecutamos el job.
• Comprobamos que en preproducción se han subido los cambios.
• Creamos un nuevo entorno de producción, añadimos un job de despliegue en producción y ejecutamos el job.
• Comprobamos que en producción se han subido los cambios.
• Realizamos un cambio “con error” en el código y lo subimos al repositorio con commit/push
• Ejecutamos el pipeline y subimos hasta producción, vemos el error.
Copyright © 2016 Accenture All rights reserved.
39. 39
Guía para el taller
• Al finalizar la ejecución del script ha mostrar un mensaje indicando que ha sido correcta.
• Ejecutamos las dos instrucciones que nos indica el script.
• Comprobamos que la imagen se ha montado correctamente con docker-machine ls.
• Accedemos a la URL de nuestra máquina tal y como nos indica el script.
• Desde Jenkins creamos un nuevo job de despliegue en CI.
• Lanzamos el pipeline y comprobamos la información del build y la aplicación.
• Clonamos el repositorio en Gerrit.
• Realizamos una modificación (por ejemplo añadiendo un mensaje en el jsp de inicio) y lo subimos con commit/push
• Lanzamos el pipeline y comprobamos que el cambio se ha subido a CI
• Creamos un nuevo entorno de preproducción, añadimos un job de despliegue en preproducción y ejecutamos el job.
• Comprobamos que en preproducción se han subido los cambios.
• Creamos un nuevo entorno de producción, añadimos un job de despliegue en producción y ejecutamos el job.
• Comprobamos que en producción se han subido los cambios.
• Realizamos un cambio “con error” en el código y lo subimos al repositorio con commit/push
• Ejecutamos el pipeline y subimos hasta producción, vemos el error.
• Realizamos un rollback del cambio y desplegamos en producción la versión anterior.
Copyright © 2016 Accenture All rights reserved.
41. ¡Muchas gracias por asistir!
41Copyright © 2016 Accenture All rights reserved.
https://www.coritel.es
https://github.com/Accenture
https://twitter.com/_deors
https://twitter.com/viarellano
https://twitter.com/restalion