Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Infraestructura de Desarrollo Ágil

Infraestructura de Desarrollo Ágil

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

Adrian Moya

October 26, 2011
Tweet

More Decks by Adrian Moya

Other Decks in Programming

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. 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
  3. 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
  4. 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
  5. 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
  6.  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
  7. 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
  8. 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
  9. 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
  10. 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
  11. Consolidar servidores virtualizando: Intel Core2Quad 4GB RAM 320GB Disco SO:

    Proxmox-VE 15 Servidores OVZ (TODA LA INFRAESTRUCTURA+) Implementando la Infraestructura 21 de 52
  12. 2. Construir las historias y características en el área de

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

    producto y priorizarlas con el Product Owner. Utilizando - Icescrum 25 de 52
  14. 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
  15. Utilizando - Dokuwiki Información general: 1. Información de contacto de

    los miembros del equipo. 2. Estándares de trabajo. 32 de 52
  16. 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
  17. Utilizando - SVN Mantener el código organizado de acuerdo al

    estándar: Trunk / Tags / Branches 35 de 52
  18. 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
  19. 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
  20.  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
  21. 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
  22. 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
  23. 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
  24. Gracias por su atención Para comentarios/preguntas, pueden hacerlo a [email protected]

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