Ecuador jug 2017 -incrementando la productividad de proyectos java ee con ci y cd

46
Incrementando la productividad de proyetos JavaEE con Integración y Entrega Contínua César Hernández CesarHernandezGt @CesarHgt CesarHernandezGt

Transcript of Ecuador jug 2017 -incrementando la productividad de proyectos java ee con ci y cd

Page 2: Ecuador jug   2017 -incrementando la productividad de proyectos java ee con ci y cd

César Hernández● Ing. MGSI.● Senior Software Enginner Tomitribe● Java Champion● Ducke’s Choice Award ● Oracle Certified Professional● Blogger de TIC’s independiente● +8 años Diseño e impl. de Java EE.● Personal Training y conferencias técnicas.

CesarHernandezGt@CesarHgt

CesarHernandezGt

Page 4: Ecuador jug   2017 -incrementando la productividad de proyectos java ee con ci y cd

Agenda

● Encuesta● Entorno● Perspectivas● Integración Contínua● DevOps● Entrega Contínua

Page 6: Ecuador jug   2017 -incrementando la productividad de proyectos java ee con ci y cd

Encuesta

● Repositorio de versionamiento● Pruebas unitarias● Pruebas de carga● Pruebas de regresión● Repositorio de bibliotecas/artefactos● CI Server

Page 7: Ecuador jug   2017 -incrementando la productividad de proyectos java ee con ci y cd

Encuesta (cont)

● Periodicidad de releases○ 1 cada trimestre○ 1 al mes○ 1 a la semana○ 1 al dia○ 1 cada hora

Page 8: Ecuador jug   2017 -incrementando la productividad de proyectos java ee con ci y cd

Entorno“La especie más fuerte no es la que sobrevive, tampoco la

más inteligente, sino la que se adapta mejor al cambio.”- Charles Darwin -

Page 9: Ecuador jug   2017 -incrementando la productividad de proyectos java ee con ci y cd

PERSONAS PROCESOS TECNOLOGÍA PERSONAS

El entorno de un proyecto de software

Page 10: Ecuador jug   2017 -incrementando la productividad de proyectos java ee con ci y cd

Manifiesto para el Desarrollo Ágil de Software (2001)

http://www.agilemanifesto.org/iso/es/

Page 11: Ecuador jug   2017 -incrementando la productividad de proyectos java ee con ci y cd

Perspectivas“La prueba del líder es la capacidad de reconocer un

problema antes de que se convierta en una emergencia”.–John Maxwell

Page 12: Ecuador jug   2017 -incrementando la productividad de proyectos java ee con ci y cd

Ciclo de vida del software

Nueva Característica

o BugCodificación Pruebas Nuevo

Release

Page 13: Ecuador jug   2017 -incrementando la productividad de proyectos java ee con ci y cd

Ciclo de vida del software

Nueva Característica

o BugCodificación Configuración

Pruebas Funcionales

Pruebas de carga Despliegue Nuevo

Release

Page 14: Ecuador jug   2017 -incrementando la productividad de proyectos java ee con ci y cd

Ciclo de vida del softwareNueva

Característica o Bug

Codificación Integración Configuración

Despliegue Pruebas Unitarias

Pruebas Integración

Pruebas Regresión

Pruebas Funcionales

Pruebas de carga

Nuevo Release

Page 15: Ecuador jug   2017 -incrementando la productividad de proyectos java ee con ci y cd

Perspectiva del hardware

RedAlmacenamientoProcesamientoVirtualización

Sistema OperativoJVM

Software

Page 16: Ecuador jug   2017 -incrementando la productividad de proyectos java ee con ci y cd

Perspectiva en proyectos Java EE

Page 17: Ecuador jug   2017 -incrementando la productividad de proyectos java ee con ci y cd

Problemas emergentes

● Poca visibilidad● Falta de automatización● Comunicación reactiva● Versionamiento (SW/HW)● No hay agilidad en el ciclo de desarrollo● Necesidad de replicación entre ambientes ● Alto tiempo de release ● ....

Page 18: Ecuador jug   2017 -incrementando la productividad de proyectos java ee con ci y cd

Oportunidades

http://blog.import.io/post/simply-outsourcing-observations-from-my-time-in-india

Page 19: Ecuador jug   2017 -incrementando la productividad de proyectos java ee con ci y cd

Oportunidades

http://www.thecloudinfographic.com/2012/03/02/saas-paas-and-iaas-what-are-they.html

Page 20: Ecuador jug   2017 -incrementando la productividad de proyectos java ee con ci y cd

Integración Contínua1991

Page 21: Ecuador jug   2017 -incrementando la productividad de proyectos java ee con ci y cd

● Práctica de desarrollo de software● Desarrolladores integran código en repositorio varias

veces al día. ● Cada registro de versionamiento es verificado por

una construcción automatizada, permitiendo a los equipos para detectar los problemas a tiempo.

● Mediante la integración con regularidad, puede detectar errores de forma rápida, y localizar más fácilmente.

Integración Contínua

Page 22: Ecuador jug   2017 -incrementando la productividad de proyectos java ee con ci y cd

Integración Contínua

http://www.teleread.com/chris-meadows/amazons-kiva-robots-herald-warehouse-automation/

Page 23: Ecuador jug   2017 -incrementando la productividad de proyectos java ee con ci y cd

● Mantener un único repositorio de código● Automatizar el empaquetado● Hacer el empaquetado self-testing● Cada commit debe ser empaquetado en una máquina de

integración● Mantener rápido el proceso de empaquetado ● Probar en un clon del ambiente de producción● Facilitar a cualquiera tener la última versión del ejecutable● Todos pueden ver que es lo que pasa● Automatizar el deployment

La Prácticas de Integración Contínua

Page 24: Ecuador jug   2017 -incrementando la productividad de proyectos java ee con ci y cd

Costo de detección de errores

Problemas afrontables con CI

Page 25: Ecuador jug   2017 -incrementando la productividad de proyectos java ee con ci y cd

En 1 mes, el tiempo muerto por no tener CI

Problemas afrontables con CI

En 1 año...

Page 26: Ecuador jug   2017 -incrementando la productividad de proyectos java ee con ci y cd

Optimización de recurso y depuración de tiempos muertos

Problemas afrontables con CI

✓✓✓✓✓✓

✓✓

Page 27: Ecuador jug   2017 -incrementando la productividad de proyectos java ee con ci y cd

Optimización de recurso y depuración de tiempos muertos

Problemas afrontables con CI

✓✓✓✓

✓✓✓✓

Page 28: Ecuador jug   2017 -incrementando la productividad de proyectos java ee con ci y cd

¿Donde comenzar?

PERSONAS PROCESOS TECNOLOGÍA PERSONAS

Page 29: Ecuador jug   2017 -incrementando la productividad de proyectos java ee con ci y cd

Perspectivas de incorporación de cambios

● Costo● Licenciamiento● Soporte● Tiempo● ROI

Tecnológia

ProcesoRECURSOHUMANO

Page 31: Ecuador jug   2017 -incrementando la productividad de proyectos java ee con ci y cd

DEVOPS (2008)

http://corpsite-blog.s3.amazonaws.com/blog/wp-content/uploads/2014/10/Screen-Shot-2014-10-21-at-10.35.35-AM-4061918db9a7d7de7a7ccc9587164f58.png

DESARROLLO

● Nuevas características

● Innovación

OPERACIONES

● Disponibilidad● Confiabilidad● Seguridad

DevOps: Mejorar el software manteniendo el sistema estable, rápido y disponible

Page 32: Ecuador jug   2017 -incrementando la productividad de proyectos java ee con ci y cd

DEVOPS (2008)

https://en.wikipedia.org/wiki/File:Devops.svg

● Comunicación● Colaboración● Integración● Automatización

Page 35: Ecuador jug   2017 -incrementando la productividad de proyectos java ee con ci y cd

● Extensión natural de integración continua● Enfoque en el que los equipos garantizan que

cada cambio en el sistema es deployable en producción

● Producir software robusto y de valor en ciclos cortos

Entrega continua

Page 38: Ecuador jug   2017 -incrementando la productividad de proyectos java ee con ci y cd

● Depende de un proceso maduro que adopte integración contínua

● Confianza en las pruebas automatizadas ● Integridad referencial a nivel de base de

datos● Infraestructura debe de responder con la

misma agilidad que el software

Retos

Page 39: Ecuador jug   2017 -incrementando la productividad de proyectos java ee con ci y cd

Oportunidades en infraestructura

Page 40: Ecuador jug   2017 -incrementando la productividad de proyectos java ee con ci y cd

Oportunidades en infraestructura

● Definir y versionar infraestructura en archivos planos

Page 41: Ecuador jug   2017 -incrementando la productividad de proyectos java ee con ci y cd

Herramientas para proyectos JavaEE

Page 42: Ecuador jug   2017 -incrementando la productividad de proyectos java ee con ci y cd

Escenario general de CI CD

http://searchdatacenter.techtarget.com/news/4500248868/Enterprise-DevOps-open-source-hits-Targets-bulls-eye