DEV Community

Discussion on: The Problem with Feature Branches

Collapse
 
joelbonetr profile image
JoelBonetR 🥇 • Edited

The complexity tends to remain, the question is where you want to put it.

Analogy of that:
Monoliths end up with a single complex codebase and an easy-to-setup, easy-to-maintain pipeline/infrastructure.

Microservices end up with a lesser complex codebase each but the complexity is now into the infrastructure and the pipelines.

Services is the natural evolution for a monolyth when it needs to escalate from the architectural point of view and are also a middle point between the other two.

On the topic of the OP, you pretend to move the complexity to the management of tags, flags and so in a hope that it will go well without taking into account that branches are just what solve that need/issue.


That post may be originated by a missunderstanding on what continuous integration is. You added the link to thoughworks that show us what thoughworks understand and apply as continuous integration, but you don't work in thoughworks neither do I and each project has it's needs and it's budget*.

A more agnostic description of CI would be:

Continuous integration is a software engineering practice that consists of making automatic integrations of a project as often as possible in order to detect failures as soon as possible.

The keys here are "automatic integrations" and "as often as possible".

*When I say it's budget is because a nice thing to have is to deploy each branch when pushing on them so you can depoy feature branches in feature environments. This of course is not cheap, you pay for more instances in the cloud, the complexity of your infrastructure grows and so on. Maybe is what thoughworks use but I usually deal with clients that even earning billions, ask us to down the Dev and QA instances during the non-labour time to reduce costs, so they can invest that money in objectively better things, which I understand and I'd probably do the same in the same situation. Imagine asking them for that 😂

Of course you can raise that in-house with iron and the costs will be assimilated sooner or later as amortized, but this also means you need to deal with the availability and maintenance of that iron (i.e. having a SysAdmin in-house and not being able to remote working most of the time, good luck finding someone).