Flujos de Git para web-apps

Git se ha convertido en una parte vital del desarrollo de nuestras aplicaciones. Ya sean las que hagamos en nuestro tiempo libre o bien por trabajo, trabajamos en versiones y hacemos commit de cada progreso.

Nos ayuda a trabajar de forma más eficiente y además es uno de los pasos básicos para poner en práctica la metodología DevOps en nuestros proyectos.

A medida que se popularizaba, surgían flujos y prácticas recomendadas para Git, como por ejemplo, GitFlow. Pero hace unos días descubrí cómo el autor de esta metodología escribía sobre cómo GitFlow podría no ser la mejor práctica para las aplicaciones web en la actualidad.

¿En qué consiste GitFlow y por qué dejaría de ser bueno para web apps? Sígueme y lo descubriremos.

Imagen del logo de Git con el texto "Flujos de Git para aplicaciones web"

Qué es GitFlow

GitFlow es una propuesta para la gestión de control de versiones en nuestros proyectos basada en dos ramas eternas: master y develop. A partir de ellas gestionaremos nuevas características a añadir, features; versiones entregables, releases; y soluciones de bugs sobre versiones estables, hotfixes.

La rama master es aquella que contiene la última versión estable que se entrega a producción, donde se contienen las releases y la rama que recibe los hotfixes.

Partimos de la rama develop para crear nuevas features y avanzar con los requerimientos de la aplicación, también recibiendo los hotfixes que se hacen sobre master para tener siempre los cambios.

Toda esta información al detalle y bien ilustrada se encuentra en el post que Vincent Driessen escribió en 2010… y en el que también encontramos el motivo de este artículo.

Dudas sobre GitFlow y desarrollo en la actualidad

En el mismo post de Driessen se encuentra un nuevo añadido escrito en marzo de 2020, en el que explica el tiempo pasado desde que planteó GitFlow y cómo ha cambiado todo. Y, lo más importante, sobre que su modelo podría no ser el más adecuado para el desarrollo actual y los patrones de despliegue que se dan actualmente.

 Web apps are typically continuously delivered, not rolled back, and you don’t have to support multiple versions of the software running in the wild.

Desde su visión, las web apps se entregan de forma continua, tal y como marcan las tendencias DevOps y derivadas… los patrones Blue-Green o A/B Testing pueden ser, y por supuesto puedo equivocarme, casos muy particulares.

Es por esto que quizás sean necesarios flujos de control de versiones más sencillos, laxos… como GitHub Flow.

Este modelo propone un flujo mucho más sencillo, en el que tendríamos una única rama eterna, abrimos una nueva rama sobre la que trabajar… y debatir sobre el código a incorporar en la rama eterna en una pull request. Una vez debatido y mejorado el código en el pull request, se hace un despliegue de esa versión para pruebas… y cuando cumple todos los requisitos, se mergea con la rama eterna para su despliegue en producción.

Un gráfico que ilustra GitHub flow

Si quieres seguir leyendo sobre GitHub flow, puedes encontrar más información en la propia guía de GitHub.

Estudia tu propio caso

Cada proyecto, cada equipo, tiene unas circunstancias y un modo de trabajo. Puede que Gitflow sea adecuado para tu proyecto, o quizás necesites un modelo más sencillo, como puede ser GitHub flow o cualquier otro que puedas descubrir.

Tal y como aconseja Driessen y yo suscribo: estudia tu caso, encuentra el flujo que más te aporte, no caigas en el hate sin sentido y… happy programming!

Espero que estas palabras te hayan sido de utilidad e inviten a reflexionar. Cada aplicación es un mundo, así que mucho éxito.

seeU!

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s