En nuestro Informe Experiencia Ágil publicado en la Sitio web de la Alianza Ágil Expliqué detalladamente cómo aprendimos a adaptarnos continuamente a las nuevas situaciones y a aprender de nuestros errores. El documento detalla nuestras prácticas organizativas e interpersonales. Esta es, a todos los efectos, la parte social de la agilidad. Pero también hay una parte técnica muy importante que debemos tener en cuenta.
Sin las herramientas y las prácticas técnicas, la agilidad no es más que una gran historia sobre algunos ideales. Organizar las cosas es inútil sin la infraestructura necesaria para sostener el tipo de trabajo que requieren los procesos lean o la planificación scrum.
Nosotros en Syneto implementado un sistema de integración continua y despliegue continuo. Incluso hacemos entrega continua dentro de nuestra empresa. Entonces, ¿de qué tratan todas estas herramientas?
Cuando un desarrollador de software termina de escribir un fragmento de código pequeño pero funcional, guarda los cambios y los envía a un repositorio central de código fuente. Esto puede ocurrir tan rápido como cada dos minutos o tan raramente como cada dos días. Nosotros solemos hacer commit y push una vez cada hora por término medio.
La integración continua es una práctica de desarrollo de software en la que los miembros de un equipo integran su trabajo con frecuencia, normalmente cada persona lo integra al menos una vez al día, lo que da lugar a múltiples integraciones diarias.
- Martin Fowler
Tenemos otro servidor que supervisa continuamente el repositorio central de código fuente. Cada vez que alguno de nuestros desarrolladores envía código nuevo, este servidor inicia un proceso de integración de ese nuevo código. Este es el integración continua servidor. El código se comprueba en otro directorio, se compilan y codifican todos los archivos y se ejecutan las pruebas unitarias. En esta fase también se ejecutan otras comprobaciones, como la interfaz gráfica de usuario y la interacción con el sistema operativo subyacente. Se trata de un proceso totalmente automatizado que ejercita alrededor de 70% de todas las rutas de nuestra aplicación.
Si todo va bien, el despliegue continuo se inicia automáticamente. El resultado final de nuestro procedimiento de construcción es el Sistema operativo de almacenamiento sistema operativo con sus cientos de paquetes de software individuales. Estos deben construirse utilizando el sistema de gestión de paquetes de nuestro sistema operativo, llamado IPS.
El último paso de nuestra infraestructura automatizada es el entrega continua proceso. Esto toma los paquetes IPS y los hace disponibles en un servidor de actualización. Nosotros sólo utilizamos un servidor interno, nuestros usuarios finales no reciben actualizaciones cada vez que cambiamos nuestro código. Aunque sería relativamente seguro entregar continuamente a los usuarios finales, el ecosistema de dispositivos de almacenamiento es demasiado sensible para este tipo de soluciones. Por eso, antes de que los usuarios reciban las actualizaciones, se realizan otros pasos y pruebas. Pero este es un tema para otra entrada del blog.