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

Post on 14-Feb-2017

128 views 0 download

Transcript of 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

Agenda

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

Encuesta

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

Encuesta (cont)

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

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 -

PERSONAS PROCESOS TECNOLOGÍA PERSONAS

El entorno de un proyecto de software

Manifiesto para el Desarrollo Ágil de Software (2001)

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

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

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

Ciclo de vida del software

Nueva Característica

o BugCodificación Pruebas Nuevo

Release

Ciclo de vida del software

Nueva Característica

o BugCodificación Configuración

Pruebas Funcionales

Pruebas de carga Despliegue Nuevo

Release

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

Perspectiva del hardware

RedAlmacenamientoProcesamientoVirtualización

Sistema OperativoJVM

Software

Perspectiva en proyectos Java EE

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 ● ....

Oportunidades

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

Oportunidades

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

Integración Contínua1991

● 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

Integración Contínua

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

● 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

Costo de detección de errores

Problemas afrontables con CI

En 1 mes, el tiempo muerto por no tener CI

Problemas afrontables con CI

En 1 año...

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

Problemas afrontables con CI

✓✓✓✓✓✓

✓✓

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

Problemas afrontables con CI

✓✓✓✓

✓✓✓✓

¿Donde comenzar?

PERSONAS PROCESOS TECNOLOGÍA PERSONAS

Perspectivas de incorporación de cambios

● Costo● Licenciamiento● Soporte● Tiempo● ROI

Tecnológia

ProcesoRECURSOHUMANO

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

DEVOPS (2008)

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

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

● 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

● 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

Oportunidades en infraestructura

Oportunidades en infraestructura

● Definir y versionar infraestructura en archivos planos

Herramientas para proyectos JavaEE

Escenario general de CI CD

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