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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  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

    View full-size slide

  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

    View full-size slide

  7. Servidor de Scrum
    7 de 52

    View full-size slide

  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

    View full-size slide

  9. Servidor de Información
    DokuWiki
    9 de 52

    View full-size slide

  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

    View full-size slide

  11. Servidor Controlador de Versiones
    11 de 52

    View full-size slide


  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

    View full-size slide

  13. Servidor de integración continua
    13 de 52

    View full-size slide

  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

    View full-size slide

  15. Servidores de Desarrollo y Calidad
    15 de 52

    View full-size slide

  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

    View full-size slide

  17. Implementando la Infraestructura
    ¿Cómo instalo todo esto?
    17 de 52

    View full-size slide

  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

    View full-size slide

  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

    View full-size slide

  20. Servidor de Desarrollo / Calidad:
    LAMP/LAPP Tomcat PostgreSQL MySQL
    Implementando la Infraestructura
    20 de 52

    View full-size slide

  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

    View full-size slide

  22. Utilizando la Infraestructura
    22 de 52

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  25. 3. Pasar las historias listas (aceptarlas) a la Pila del
    producto y priorizarlas con el Product Owner.
    Utilizando - Icescrum
    25 de 52

    View full-size slide

  26. 4. Estimar las historias con el equipo (Pocker
    planning).
    Utilizando - Icescrum
    26 de 52

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  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

    View full-size slide

  30. 8. Monitoriar el progreso de la iteración.
    Utilizando - Icescrum
    30 de 52

    View full-size slide

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

    View full-size slide

  32. Utilizando - Dokuwiki
    Información general:
    1. Información de contacto de los miembros del
    equipo.
    2. Estándares de trabajo.
    32 de 52

    View full-size slide

  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

    View full-size slide

  34. Utilizando - Dokuwiki
    34 de 52

    View full-size slide

  35. Utilizando - SVN
    Mantener el código organizado de acuerdo al
    estándar:
    Trunk / Tags / Branches
    35 de 52

    View full-size slide

  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

    View full-size slide

  37. 1. Crear el proyecto (Generalmente estilo libre)
    Utilizando - Jenkins
    37 de 52

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  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

    View full-size slide


  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

    View full-size slide

  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

    View full-size slide

  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

    View full-size slide

  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

    View full-size slide

  51. Preguntas
    51 de 52

    View full-size slide

  52. Gracias por su atención
    Para comentarios/preguntas, pueden
    hacerlo a
    [email protected]
    Twitter - @adrianmoya
    Blog – http://www.adrianmoya.com
    52 de 52

    View full-size slide