Infraestructura agil

Post on 28-Nov-2014

1.595 views 0 download

description

Mis láminas del Agile Tour Merida 2011

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

Agenda

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

2 de 52

Infraestructura de Desarrollo Ágil

En casa de herrero, cuchillo de palo

3 de 52

Infraestructura Ágil

¿Qué necesitamos?

4 de 52

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

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

Servidor de Scrum

7 de 52

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

Servidor de Información

DokuWiki

9 de 52

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

Servidor Controlador de Versiones

11 de 52

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

Servidor de integración continua

13 de 52

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

Servidores de Desarrollo y Calidad

15 de 52

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

Implementando la Infraestructura

¿Cómo instalo todo esto?

17 de 52

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

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

Servidor de Desarrollo / Calidad:

LAMP/LAPP Tomcat PostgreSQL MySQL

Implementando la Infraestructura

20 de 52

Consolidar servidores virtualizando:

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

Implementando la Infraestructura

21 de 52

Utilizando la Infraestructura

22 de 52

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

Utilizando - Icescrum

23 de 52

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

Utilizando - Icescrum

24 de 52

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

Utilizando - Icescrum

25 de 52

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

Utilizando - Icescrum

26 de 52

5. Planificar historias en el sprint.

Utilizando - Icescrum

27 de 52

6. Dividir historias en tareas y estimar en horas.

Utilizando - Icescrum

28 de 52

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

8. Monitoriar el progreso de la iteración.

Utilizando - Icescrum

30 de 52

9. Fin de la iteración - Retrospectiva

Utilizando - Icescrum

31 de 52

Utilizando - Dokuwiki

Información general:

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

2. Estándares de trabajo.

32 de 52

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

Utilizando - Dokuwiki

34 de 52

Utilizando - SVN

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

Trunk / Tags / Branches

35 de 52

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

1. Crear el proyecto (Generalmente estilo libre)

Utilizando - Jenkins

37 de 52

2. Configurar el repositorio de codigo (trunk).

Utilizando - Jenkins

38 de 52

3. Configurar el disparador de ejecución.

Utilizando - Jenkins

39 de 52

4. Configurar pasos de ejecución.

4.1. Pruebas unitarias/funcionales.

Utilizando - Jenkins

40 de 52

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

Utilizando - Jenkins

41 de 52

4.3. Construcción de la aplicación

Utilizando - Jenkins

42 de 52

5. Desplegar en ambiente de desarrollo.

Utilizando - Jenkins

43 de 52

6. Notificaciones:

Utilizando - Jenkins

44 de 52

Monitorear las construcciones:

Utilizando - Jenkins

45 de 52

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

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

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

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

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

Preguntas

51 de 52

Gracias por su atención

Para comentarios/preguntas, pueden hacerlo a

adrianmoya@gmail.com

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

52 de 52