integración y entrega continua con visual studio online

35

Upload: ernesto-cardenas

Post on 31-May-2015

526 views

Category:

Technology


4 download

DESCRIPTION

Charla presentada en el DevDays 2014 (http://www.comunidadesmicrosoft.org/detalles-de-developer-days-2014) presentando la necesidad de Integración y Entrega Continua, y el como Visual Studio Online nos facilita el poder desplegar nuestros proyectos a la nube y a entornos on premise. Cualquier duda consultarme en twitter via @fisica3

TRANSCRIPT

Page 1: Integración y Entrega Continua con Visual Studio Online
Page 2: Integración y Entrega Continua con Visual Studio Online

Integración y Entrega Continua con Visual Studio OnlineErnesto Cárdenas CangahualaSenior Software Engineer| Avantica Technologies@fisica3

Page 3: Integración y Entrega Continua con Visual Studio Online

Presentación

• Ing. Informático• SSE Avantica Technologies• Fotógrafo aficionado• Algún tiempo “fuera” ;)• @agileperu

Page 4: Integración y Entrega Continua con Visual Studio Online

Erase una vez… un desarrollador

Page 5: Integración y Entrega Continua con Visual Studio Online

En la Universidad

• !En mi casa compilaba!

Page 6: Integración y Entrega Continua con Visual Studio Online

• ¿Qué has hecho ayer en todo el día?• …¡Subir el proyecto a preproducción!

Durante el Desarrollo

Page 7: Integración y Entrega Continua con Visual Studio Online

• ¡La web de producción esta grabando en la BD de preproducción!

• Este… ayer subí la corrección de un bug….

• ¡Además ahora las formulas dan valores incorrectos!

… Mantenimiento

Page 8: Integración y Entrega Continua con Visual Studio Online

¡Busquemos una salida!

Page 9: Integración y Entrega Continua con Visual Studio Online

Integración Continua

• Martin Fowler:“La integración continua es una práctica de desarrollo de software en la cuál los miembros de un equipo integran su trabajo frecuentemente, como mínimo de forma diaria. Cada integración se verifica mediante una herramienta de construcción automática para detectar los errores de integración tan pronto como sea posible.”

Page 10: Integración y Entrega Continua con Visual Studio Online

¿Qué perseguimos con la CI?

• Tener un proyecto “sano y funcionando” siempre• Mayor confianza del equipo y de los stakeholders

Page 11: Integración y Entrega Continua con Visual Studio Online

¿Y si damos un paso mas?

•Valor es Software funcionando en manos del usuario ¿verdad?•Entonces nuestro siguiente objetivo es la Entrega Continua

Page 12: Integración y Entrega Continua con Visual Studio Online

¿Qué lograremos con todo eso?

• Tener un proyecto “sano y funcionando” siempre• Mayor confianza del equipo y de los stakeholders• No dedicar tiempo excesivo a la integración y

despliegue• Mayor visibilidad y feedback continuo (QA) -> menos riesgos

Page 13: Integración y Entrega Continua con Visual Studio Online

Primero veamos los pilares

Page 14: Integración y Entrega Continua con Visual Studio Online

Versionado

Código+

Configuración+

Datos+

Scripts

Page 15: Integración y Entrega Continua con Visual Studio Online

Automatización

- tiempo- trabajo manual- errores

+ conocimiento

Page 16: Integración y Entrega Continua con Visual Studio Online

• Mantener un único repositorio de código fuente

• Automatizar la construcción, validación y despliegue del proyecto de manera rápida (¡un clic!)

• Que sea fácil probar la ultima versión en una replica del entorno de producción

• Publicar qué está pasando (alertas!!!)

Practicas para el día a día

Page 17: Integración y Entrega Continua con Visual Studio Online

Ok, ¿cómo lo logramos?

Page 18: Integración y Entrega Continua con Visual Studio Online

Empecemos con una visión inicial

Page 19: Integración y Entrega Continua con Visual Studio Online

Aterrizando la teoría

Page 20: Integración y Entrega Continua con Visual Studio Online

Team Foundation Build

• Considerado parte del núcleo de la plataforma TFS/VSO

• Los miembros del equipo pueden ser notificados del estado de la build, para prevenir checkin que no sean correctivos

• MSBuild hace el “building”, Windows Workflow hace la orquestación

• Extensible: Soporte Java, Maven, Ant vía TFS Build Extensions

Page 21: Integración y Entrega Continua con Visual Studio Online

Arquitectura de Team Foundation Build

Application Tier

Build Controller

Build Agent

Drop Server

Build

Page 22: Integración y Entrega Continua con Visual Studio Online

Esto, traducido a VSO/Azure…

Page 23: Integración y Entrega Continua con Visual Studio Online

• Controlado por un archivo XAML Windows Workflow 4.0

• Tres plantillas de proceso “out-of-the-box”• DefaultTemplate (ahora con versión Git!)• Almacenado en TFS• Se pueden crear plantillas de build

personalizadas

Team Build Process

Page 24: Integración y Entrega Continua con Visual Studio Online

Demo

Page 25: Integración y Entrega Continua con Visual Studio Online

Principios para el desarrollador

• Diseña características apagables!!• Contribuye a menudo (código sano!)• Soluciona los build rotos inmediatamente• Escribe tests automáticos• Todos los tests deben pasar

Page 26: Integración y Entrega Continua con Visual Studio Online

Llegados a este punto…

• ¿Cuanto le tomaría a tu organización desplegar un cambio que involucre tan solo una línea de código?• ¿Lo haces de una

manera confiable y reproducible?

Mary & Tom Poppendieck

Page 27: Integración y Entrega Continua con Visual Studio Online

Todo eso esta muy pero…

• Yo tengo que desplegar en local!

Page 28: Integración y Entrega Continua con Visual Studio Online

Entonces… otro escenario

Page 29: Integración y Entrega Continua con Visual Studio Online

Ingredientes

• TFS Controller/Agent 2013• Publish Profiles• .config Transformations• MS Web Deploy

Page 30: Integración y Entrega Continua con Visual Studio Online

Mejor veamoslo en acción

Page 31: Integración y Entrega Continua con Visual Studio Online

Reforzando el factor humano

• Establecer políticas de contribución, ramificación y Code Review

• Configurar bien las alertas• Detenerse cuando la Build se cae• Si se cae la Build no es el fin del mundo• Antes de hacer commit, Get latest versión y probar en

local• Probar en ambiente de Integración• Validar siempre la actualización del Modelo de BD• Considerar CodeAnalysis, StyleCop y opcionalmente

convertir warning en errors

Page 32: Integración y Entrega Continua con Visual Studio Online

Caso real

• DEV1: Solo compila y corre tests, ejecutada automáticamente• DEV2: DEV1+Despliegue en DEV, cada hora (si

hay cambios)• QA: DEV1 + Despliegue en QA, cada 6 horas• Staging: DEV1 + Empaquetado automatico para

despliegue manual, bajo demanda

¡Cada una con sus propias configuraciones!

Page 34: Integración y Entrega Continua con Visual Studio Online

¿Preguntas?

Page 35: Integración y Entrega Continua con Visual Studio Online