Infraestructura agil

52
Infraestructura de Desarrollo Ágil Ing. Adrian Moya Mérida, Octubre de 2011 Como apoyarnos en herramientas libres para construir software aplicando Scrum + XP. 1 de 52

description

Mis láminas del Agile Tour Merida 2011

Transcript of Infraestructura agil

Page 1: Infraestructura agil

Infraestructura de Desarrollo Ágil

Ing. Adrian MoyaMérida, Octubre de 2011

Como apoyarnos en herramientas libres para construir software aplicando Scrum + XP.

1 de 52

Page 2: Infraestructura agil

Agenda

1. Introducción.2. Infraestructura.3. Construcción.4. Utilización.5. Conclusiones.

2 de 52

Page 3: Infraestructura agil

Infraestructura de Desarrollo Ágil

En casa de herrero, cuchillo de palo

3 de 52

Page 4: Infraestructura agil

Infraestructura Ágil

¿Qué necesitamos?

4 de 52

Page 5: Infraestructura agil

Prácticas y requerimientos

SCRUM: Planificar y Gestionar el proyecto

Llevar control de las historias de usuario. Planificar las entregas en iteraciones. Medir el avance del equipo.

XP: Prácticas de Desarrollo

Buena comunicación del equipo. Control de versiones de código. Integrar código continuamente. Pruebas unitarias de código.

5 de 52

Page 6: Infraestructura agil

Infraestructura Ágil

Estaciones de trabajo

Servidor Controlador de Versiones

Servidor de Información

Servidor de Scrum

Servidor de Integración Continua

Servidor de Desarrollo Servidor de

Calidad

6 de 52

Page 7: Infraestructura agil

Servidor de Scrum

7 de 52

Page 8: Infraestructura agil

Servidor de Scrum

Herramienta que lleva el control del proceso Scrum.

Fácil instalación y configuración. Backlog de producto automatizado. Planificación de Entregas e Iteraciones. Tablero de actividad del proyecto. Gráficas de Burndown, Velocidad entre otras.

8 de 52

Page 9: Infraestructura agil

Servidor de Información

DokuWiki

9 de 52

Page 10: Infraestructura agil

Servidor de Información

Wiki sencillo de usar. Basado en archivos de texto (no requiere DB). Sintaxis simple pero poderosa. Rápido. Tematizable Extensible vía plugins.

DokuWiki

10 de 52

Page 11: Infraestructura agil

Servidor Controlador de Versiones

11 de 52

Page 12: Infraestructura agil

Sistema de control de versiones centralizado. Fácil uso y excelente documentación. Soporte de ramas y etiquetas. Soporte de archivos binarios. Cliente Tortoise (integración en Windows) y

RabitVCS (Linux). Puede ser servido a través de apache.

Servidor Controlador de Versiones

12 de 52

Page 13: Infraestructura agil

Servidor de integración continua

13 de 52

Page 14: Infraestructura agil

Servidor de integración continua

Herramienta que monitorea la ejecución de trabajos repetitivos.

Construcción y prueba de proyectos de manera continua.

Fácil instalación y configuración. Soporta múltiples control de versiones. Notificaciones por RSS/Correo. Extensible vía plugins.

14 de 52

Page 15: Infraestructura agil

Servidores de Desarrollo y Calidad

15 de 52

Page 16: Infraestructura agil

Infraestructura Ágil

Estaciones de trabajo

Servidor Controlador de Versiones

Servidor de Información

Servidor de Scrum

Servidor de Integración Continua

Servidor de Desarrollo Servidor de

Calidad

DokuWiki

16 de 52

Page 17: Infraestructura agil

Implementando la Infraestructura

¿Cómo instalo todo esto?

17 de 52

Page 18: Infraestructura agil

Implementando la Infraestructura

Librería de aplicaciones que incluye lo mejor del software libre en un formato empaquetado y listo para usar.

Servidores basados en Ubuntu 10.04 LTS. Optimizados para facilidad de uso y despliegue

rápido (sólo minutos). Instalables en servidores físicos, máquinas

virtuales o en la nube.

18 de 52

Page 19: Infraestructura agil

Servidor de Scrum Icescrum:

Imagen Comunitaria.Desarrollada por Adrian Moya.

Servidor de Información Dokuwiki:

Imagen OficialDokuwiki

Servidor de Control Versiones Subversion:

Imagen OficialSource ControlSvn/Git/Bzr/Hg

Servidor de Int. ContinuaJenkins:

Imagen Comunitaria.Desarrollada por Adrian Moya.

Implementando la Infraestructura

19 de 52

Page 20: Infraestructura agil

Servidor de Desarrollo / Calidad:

LAMP/LAPP Tomcat PostgreSQL MySQL

Implementando la Infraestructura

20 de 52

Page 21: Infraestructura agil

Consolidar servidores virtualizando:

Intel Core2Quad 4GB RAM 320GB DiscoSO: Proxmox-VE15 Servidores OVZ (TODA LA INFRAESTRUCTURA+)

Implementando la Infraestructura

21 de 52

Page 22: Infraestructura agil

Utilizando la Infraestructura

22 de 52

Page 23: Infraestructura agil

1. Crear el proyecto y asignar/crear el equipo.

Utilizando - Icescrum

23 de 52

Page 24: Infraestructura agil

2. Construir las historias y características en el área de ensayo.

Utilizando - Icescrum

24 de 52

Page 25: Infraestructura agil

3. Pasar las historias listas (aceptarlas) a la Pila del producto y priorizarlas con el Product Owner.

Utilizando - Icescrum

25 de 52

Page 26: Infraestructura agil

4. Estimar las historias con el equipo (Pocker planning).

Utilizando - Icescrum

26 de 52

Page 27: Infraestructura agil

5. Planificar historias en el sprint.

Utilizando - Icescrum

27 de 52

Page 28: Infraestructura agil

6. Dividir historias en tareas y estimar en horas.

Utilizando - Icescrum

28 de 52

Page 29: Infraestructura agil

7. Iniciar la iteración. El equipo toma las tareas y las pone en progreso. A medida que trabaja actualiza las horas restantes.

Utilizando - Icescrum

29 de 52

Page 30: Infraestructura agil

8. Monitoriar el progreso de la iteración.

Utilizando - Icescrum

30 de 52

Page 31: Infraestructura agil

9. Fin de la iteración - Retrospectiva

Utilizando - Icescrum

31 de 52

Page 32: Infraestructura agil

Utilizando - Dokuwiki

Información general:

1. Información de contacto de los miembros del equipo.

2. Estándares de trabajo.

32 de 52

Page 33: Infraestructura agil

Información por proyecto:

1. Configuraciones del repositorio de código.

2. Documentos/Información que respalden las historias.

3. Recursos: Enlaces a Servidor IC, Ambientes de Desarrollo y Calidad.

Utilizando - Dokuwiki

33 de 52

Page 34: Infraestructura agil

Utilizando - Dokuwiki

34 de 52

Page 35: Infraestructura agil

Utilizando - SVN

Mantener el código organizado de acuerdo al estándar:

Trunk / Tags / Branches

35 de 52

Page 36: Infraestructura agil

Utilizando - Jenkins

Comenzamos instalando plugins:

Control de versiones: Subversion, Git

Herramienta de construcción: Symfony (php), Grails (Groovy), Rails (Ruby), Django (Python), Java

Análisis: Análisis de Código Estático, DRY, Buenas prácticas, etc.

Post-construcción: Construir reportes, realizar despliegues.

Notificaciones: Email, etc.36 de 52

Page 37: Infraestructura agil

1. Crear el proyecto (Generalmente estilo libre)

Utilizando - Jenkins

37 de 52

Page 38: Infraestructura agil

2. Configurar el repositorio de codigo (trunk).

Utilizando - Jenkins

38 de 52

Page 39: Infraestructura agil

3. Configurar el disparador de ejecución.

Utilizando - Jenkins

39 de 52

Page 40: Infraestructura agil

4. Configurar pasos de ejecución.

4.1. Pruebas unitarias/funcionales.

Utilizando - Jenkins

40 de 52

Page 41: Infraestructura agil

4.2. Análisis de código estático y reportes.

Utilizando - Jenkins

41 de 52

Page 42: Infraestructura agil

4.3. Construcción de la aplicación

Utilizando - Jenkins

42 de 52

Page 43: Infraestructura agil

5. Desplegar en ambiente de desarrollo.

Utilizando - Jenkins

43 de 52

Page 44: Infraestructura agil

6. Notificaciones:

Utilizando - Jenkins

44 de 52

Page 45: Infraestructura agil

Monitorear las construcciones:

Utilizando - Jenkins

45 de 52

Page 46: Infraestructura agil

Algunas recomendaciones de trabajo:

● Configurar límites de “violaciones” a las reglas aceptables.

● Si el build se rompe, hay que repararlo de inmediato.

Utilizando - Jenkins

46 de 52

Page 47: Infraestructura agil

El servidor a utilizar dependerá del tipo de aplicación que estemos construyendo.

En el servidor de desarrollo siempre estará disponible la última versión de la aplicación (desplegada por el Servidor de IC desde trunk).

En el servidor de calidad estarán las versiones al final de una iteración (sprint).

El servidor de calidad debe ser una COPIA FIEL del ambiente de producción.

Utilizando – DEV y QA

47 de 52

Page 48: Infraestructura agil

Conclusiones

● Debemos apoyarnos en un ecosistema de herramientas que faciliten nuestro trabajo y nos permitan atender rápidamente cualquier eventualidad que pueda presentarse.

● El tiempo invertido en montar la infraestructura se ve compensando enormemente con las ventajas obtenidas de automatizar nuestro proceso de desarrollo ágil.

● Debemos aprender a utilizar las herramientas, pues de lo contrario el resultado será el mismo que como si no estuviéramos utilizándolas.

48 de 52

Page 49: Infraestructura agil

Recomendaciones

● Implementar una herramienta y/o práctica a la vez.

● Para el manejo de incidencias, se usa el Area de Ensayo de Icescrum, pero podría incorporarse una herramienta de manejo de incidencias si fuera necesario (ChiliProject).

● Para el manejo centralizado de usuarios y claves, se ha pensado agregar un servidor de autenticación (OpenLDAP).

49 de 52

Page 50: Infraestructura agil

Recursos

Icescrum – http://www.icescrum.org/

Dokuwiki – http://www.dokuwiki.org/

Subversion – http://subversion.apache.org/

Jenkins – http://www.jenkins-ci.org/

Turnkeylinux – http://www.turnkeylinux.org/

50 de 52

Page 51: Infraestructura agil

Preguntas

51 de 52

Page 52: Infraestructura agil

Gracias por su atención

Para comentarios/preguntas, pueden hacerlo a

[email protected]

Twitter - @adrianmoyaBlog – http://www.adrianmoya.com

52 de 52