Infraestructura de Desarrollo Ágil

Infraestructura de Desarrollo Ágil

Como construir una fábrica de software basado en productos opensource

6d34a1145039fce454dea36c5464cf77?s=128

Adrian Moya

October 26, 2011
Tweet

Transcript

  1. 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
  2. Agenda 1. Introducción. 2. Infraestructura. 3. Construcción. 4. Utilización. 5.

    Conclusiones. 2 de 52
  3. Infraestructura de Desarrollo Ágil En casa de herrero, cuchillo de

    palo 3 de 52
  4. Infraestructura Ágil ¿Qué necesitamos? 4 de 52

  5. 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
  6. 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
  7. Servidor de Scrum 7 de 52

  8. 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
  9. Servidor de Información DokuWiki 9 de 52

  10. 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
  11. Servidor Controlador de Versiones 11 de 52

  12.  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
  13. Servidor de integración continua 13 de 52

  14. 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
  15. Servidores de Desarrollo y Calidad 15 de 52

  16. 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
  17. Implementando la Infraestructura ¿Cómo instalo todo esto? 17 de 52

  18. 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
  19. Servidor de Scrum Icescrum: Imagen Comunitaria. Desarrollada por Adrian Moya.

    Servidor de Información Dokuwiki: Imagen Oficial Dokuwiki Servidor de Control Versiones Subversion: Imagen Oficial Source Control Svn/Git/Bzr/Hg Servidor de Int. Continua Jenkins: Imagen Comunitaria. Desarrollada por Adrian Moya. Implementando la Infraestructura 19 de 52
  20. Servidor de Desarrollo / Calidad: LAMP/LAPP Tomcat PostgreSQL MySQL Implementando

    la Infraestructura 20 de 52
  21. Consolidar servidores virtualizando: Intel Core2Quad 4GB RAM 320GB Disco SO:

    Proxmox-VE 15 Servidores OVZ (TODA LA INFRAESTRUCTURA+) Implementando la Infraestructura 21 de 52
  22. Utilizando la Infraestructura 22 de 52

  23. 1. Crear el proyecto y asignar/crear el equipo. Utilizando -

    Icescrum 23 de 52
  24. 2. Construir las historias y características en el área de

    ensayo. Utilizando - Icescrum 24 de 52
  25. 3. Pasar las historias listas (aceptarlas) a la Pila del

    producto y priorizarlas con el Product Owner. Utilizando - Icescrum 25 de 52
  26. 4. Estimar las historias con el equipo (Pocker planning). Utilizando

    - Icescrum 26 de 52
  27. 5. Planificar historias en el sprint. Utilizando - Icescrum 27

    de 52
  28. 6. Dividir historias en tareas y estimar en horas. Utilizando

    - Icescrum 28 de 52
  29. 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
  30. 8. Monitoriar el progreso de la iteración. Utilizando - Icescrum

    30 de 52
  31. 9. Fin de la iteración - Retrospectiva Utilizando - Icescrum

    31 de 52
  32. Utilizando - Dokuwiki Información general: 1. Información de contacto de

    los miembros del equipo. 2. Estándares de trabajo. 32 de 52
  33. 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
  34. Utilizando - Dokuwiki 34 de 52

  35. Utilizando - SVN Mantener el código organizado de acuerdo al

    estándar: Trunk / Tags / Branches 35 de 52
  36. 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
  37. 1. Crear el proyecto (Generalmente estilo libre) Utilizando - Jenkins

    37 de 52
  38. 2. Configurar el repositorio de codigo (trunk). Utilizando - Jenkins

    38 de 52
  39. 3. Configurar el disparador de ejecución. Utilizando - Jenkins 39

    de 52
  40. 4. Configurar pasos de ejecución. 4.1. Pruebas unitarias/funcionales. Utilizando -

    Jenkins 40 de 52
  41. 4.2. Análisis de código estático y reportes. Utilizando - Jenkins

    41 de 52
  42. 4.3. Construcción de la aplicación Utilizando - Jenkins 42 de

    52
  43. 5. Desplegar en ambiente de desarrollo. Utilizando - Jenkins 43

    de 52
  44. 6. Notificaciones: Utilizando - Jenkins 44 de 52

  45. Monitorear las construcciones: Utilizando - Jenkins 45 de 52

  46. 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
  47.  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
  48. 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
  49. 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
  50. 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
  51. Preguntas 51 de 52

  52. Gracias por su atención Para comentarios/preguntas, pueden hacerlo a adrianmoya@gmail.com

    Twitter - @adrianmoya Blog – http://www.adrianmoya.com 52 de 52