Table of Contents
Cuando se programa una aplicación, es importante mantenerse sincronizado con los demás ingenieros que trabajan en el proyecto. Una estrategia que ayuda a un equipo a mantenerse sincronizado con los cambios en el código base se conoce como trunk-based development o desarrollo basado en troncos. Cuando se emplea el desarrollo basado en troncos, los desarrolladores que trabajan en un proyecto hacen todos sus cambios de código en una rama común conocida como trunk. El desarrollo con este enfoque tiene numerosos beneficios, que discutiremos en este artículo.
¿Qué es el desarrollo basado en troncos?
El desarrollo basado en troncos es una práctica de gestión de control de versiones en la que los desarrolladores fusionan pequeñas y frecuentes actualizaciones a un tronco central o rama principal. Es una práctica común entre los equipos de DevOps y forma parte del ciclo de vida de DevOps, ya que agiliza las fases de fusión e integración. De hecho, el desarrollo basado en el tronco es una práctica necesaria de CI/CD. Los desarrolladores pueden crear ramas de corta duración con unos pocos commits pequeños en comparación con otras estrategias de ramificación de características de larga duración. A medida que la complejidad de la base de código y el tamaño del equipo crecen, el desarrollo basado en troncos ayuda a mantener el flujo de las versiones de producción.
El desarrollo basado en troncos (TBD) es un modelo de bifurcación para el desarrollo de software en el que los desarrolladores fusionan cada nueva característica, corrección de errores u otro cambio de código en una rama central en el sistema de control de versiones. Esta rama se llama «tronco». El desarrollo basado en el tronco permite la integración continua y la entrega continua mediante la creación de un entorno en el que las confirmaciones al tronco se producen naturalmente varias veces al día para cada programador. Esto facilita el cumplimiento de los requisitos de la integración continua y hace que el código base pueda ser liberado en cualquier momento, como es necesario para la entrega continua y el despliegue continuo. En el desarrollo basado en troncos, los desarrolladores introducen el código directamente en el tronco. Los cambios realizados en las ramas de lanzamiento -snapshots- del código cuando está listo para ser liberado se suelen fusionar de nuevo con el tronco tan pronto como sea posible. En este enfoque, hay casos en los que las correcciones de errores deben fusionarse en las versiones, pero estos casos no son tan frecuentes como el desarrollo de nuevas características en el tronco. En los casos en los que los lanzamientos se producen varias veces al día, las ramas de lanzamiento no son necesarias en absoluto, porque los cambios pueden ser empujados directamente en el tronco y desplegados desde allí. Un beneficio clave del éste enfoque es que reduce la complejidad de los eventos de fusión y mantiene el código actualizado al tener menos líneas de desarrollo y hacer fusiones pequeñas y frecuentes.
Desarrollo basado en troncos y feature flags
En otras palabras, el desarrollo basado en troncos es una metodología para la liberación de nuevas características y pequeños cambios con rapidez al tiempo que ayuda a evitar largas correcciones de errores y el «merge hell». Es una práctica DevOps cada vez más popular entre los equipos de desarrollo ágil, y a menudo se combina con feature flags o feature toggles para asegurar que cualquier nueva feature pueda ser revertida rápida y fácilmente si se descubre algún error. La práctica de marcar las características o envolver las nuevas características en el código que se puede activar y desactivar de forma remota, es un proceso de desarrollo común que los ingenieros de software emplean para ayudar a implementar el desarrollo basado en troncos al tiempo que reduce el riesgo de introducir errores en el código. Dado que el desarrollo basado en troncos implica trabajar en una sola rama en el entorno de producción, las feature flags proporcionan una manera de introducir nuevas features y cambios en el código de una manera controlada, y rápidamente permite desactivarlas si se descubre algún error.
Ventajas del desarrollo basado en troncos
- Permite la integración continua del código
El desarrollo basado en troncos es una práctica necesaria para la integración continua. Si los procesos de construcción y prueba están automatizados, pero los desarrolladores trabajan en ramas de características aisladas y largas que se integran con poca frecuencia en una rama compartida, la integración continua no está a la altura de su potencial. En el modelo de desarrollo basado en troncos, hay un repositorio con un flujo constante de confirmaciones que fluyen hacia la rama principal. La adición de un conjunto de pruebas automatizadas y la supervisión de la cobertura del código para este flujo de confirmaciones permite la integración continua. Cuando el nuevo código se fusiona con el tronco, las pruebas automatizadas de integración y cobertura del código se ejecutan para validar la calidad del código.
- Asegura una revisión rápida y continua del código
Las pequeñas y rápidas confirmaciones del desarrollo basado en troncos hacen que la revisión del código sea un proceso más eficiente. Con las ramas pequeñas, los desarrolladores pueden ver y revisar rápidamente los pequeños cambios.
- Permite la publicación consecutiva de código de producción
Los equipos deben realizar fusiones frecuentes y diarias a la rama principal. El desarrollo basado en el tronco se esfuerza por mantener la rama del tronco «verde», lo que significa que está lista para desplegar en cualquier confirmación. Las pruebas automatizadas, la convergencia de código y las revisiones de código proporcionan a un proyecto de desarrollo basado en troncos la seguridad de que está listo para desplegar en producción en cualquier momento. Esto da agilidad al equipo para desplegar con frecuencia a la producción y establecer más objetivos de lanzamientos de producción diarios.
- Entregas rápidas
El desarrollo basado en troncos permite a los equipos enviar los nuevos cambios a producción mucho más rápido y es un requisito previo para la integración continua y la entrega continua (CI/CD).
Mejores prácticas de desarrollo basadas en troncos
- Desarrollar en pequeños lotes
Mantener los commits y las ramas pequeñas permite un ritmo más rápido de fusiones y despliegues.
- Feature flags
Las feature flags complementan muy bien el desarrollo basado en troncos, ya que permiten a los desarrolladores envolver los nuevos cambios en una ruta de código inactiva y activarla en un momento posterior. Las feature flags fomentan directamente las actualizaciones de pequeños lotes.
- Implementar pruebas automatizadas completas
Las pruebas automatizadas son necesarias para cualquier proyecto de software moderno que pretenda alcanzar el CI/CD. Las pruebas automatizadas ayudan al desarrollo basado en troncos manteniendo un pequeño ritmo de lotes a medida que los desarrolladores fusionan nuevos commits. El conjunto de pruebas automatizadas revisa el código para detectar cualquier problema y lo aprueba o lo rechaza automáticamente. Esto ayuda a los desarrolladores a crear rápidamente confirmaciones y a pasarlas por las pruebas automatizadas para ver si introducen algún problema nuevo.
- Fusionar las ramas al tronco al menos una vez al día.
Los equipos de desarrollo de alto rendimiento, basados en troncos, deberían cerrar y fusionar cualquier rama abierta y lista para la fusión al menos a diario.
Espero que te haya resultado útil este post y si necesitas ayuda con el desarrollo basado en troncos, háznoslo saber, somos expertos en desarrollo de software.
Author
-
Ekaterina Novoseltseva is an experienced CMO and Board Director. Professor in prestigious Business Schools in Barcelona. Teaching about digital business design. Right now Ekaterina is a CMO at Apiumhub - software development hub based in Barcelona and organiser of Global Software Architecture Summit. Ekaterina is proud of having done software projects for companies like Tous, Inditex, Mango, Etnia, Adidas and many others. Ekaterina was taking active part in the Apiumhub office opening in Paseo de Gracia and in helping companies like Bitpanda open their tech hubs in Barcelona.
Ver todas las entradas