Post on 14-Feb-2017
Incrementando la productividad de proyetos JavaEE con Integración y
Entrega Contínua
César HernándezCesarHernandezGt@CesarHgt
CesarHernandezGt
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
Java es comunidad
www.guate-jug.net
/Guate.Java.User.Group
Grupo de Usuarios
Java Guatemala
/ouggt
Grupo de Usuarios Oracle Guatemala
/nullpointersband
Java Community Rock Band
/EventosJEspanol
JEspañol
https://community.oracle.com/community/otn-speaker-bureau
OTN Speaker BureautFactory
http://tfactory.github.io/
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
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
● 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
● Definir y versionar infraestructura en archivos planos
Escenario general de CI CD
http://searchdatacenter.techtarget.com/news/4500248868/Enterprise-DevOps-open-source-hits-Targets-bulls-eye
Recursos recomendados
https://youtu.be/K1l8717tN2chttps://youtu.be/McTZtyb9M38
Recursos recomendados
http://ora.cl/hn0
César Hernández
PREGUNTAS?CesarHernandezGt@CesarHgt
CesarHernandezGt