Download - 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
Twitter - @adrianmoyaBlog – http://www.adrianmoya.com
52 de 52