问题描述
在与大型金融机构合作时,如何避免出现“分支管理灾难”(branchageddon)的情况?这些机构的做法是不定期更新软件,而是只接受高/紧急安全补丁和定制功能。这些机构只会在主要更新之间接受补丁和定制版本。主要更新可能相隔数年,并且带来高昂的成本。这种做法导致我们(软件公司)需要为每个主要客户维护一个代码分支,从而承担了长期分支管理的所有成本和低效性。
我向社区提出的问题是:
1. 你是否遇到过类似的客户更新接受方式?
2. 你有什么建议来应对这种做法?
3. 你有什么建议来改变机构对软件更新的做法?
解决方案
请注意以下操作可能存在版本差异或风险,建议在执行前做好备份。
标准版本策略
一种应对大型机构的长期分支管理的方法是采用标准版本策略。根据行业的实际情况,制定一个合理长寿的标准版本,并在此之间交叉使用一个或多个较短寿命的中间版本(如果适用)。向客户提供在此标准发布轨道上进行升级的选择,可以设定合理的迁移期限。
针对定制分支的收费策略
对于坚持要求全定制分支支持策略的客户,可以考虑根据实际情况收取费用,以充分覆盖提供全定制支持所需的额外成本。这在商业上是有意义的。一些客户可能会为了降低成本而选择迁移到标准版本轨道,从而有助于减少定制分支的数量,而一些客户则可能不会这么做。
可变的支持计费模式
通过逐步增长的支持计费模式,以与定制分支的源自版本的年龄成正比的方式,也可以鼓励客户更快地迁移到较新的版本轨道,有助于更快地关闭较老的定制分支。这可以有助于减少每个客户的定制分支数量,尤其是那些同时运行多个软件版本的客户。
自动化CI/CD流程
确保不会陷入从一个发布分支(标准和定制)进行完整合并的陷阱,所有对它们的更改都应该是单独开发的或选择性地合并的修复。由于这些分支将逐渐相互分歧,需要对每个分支的开发成本进行考虑。没有(重要的)分支合并参与其中,你可以(也应该,其重要性不言而喻)为这些分支构建完全自动化的CI/CD流程,并配备一个良好的热修复跟踪/管理系统,以使热修复交付成为例行事项(或几乎如此)。
结论
在与大型机构合作时,面对长期分支管理的挑战,我们可以采取多种策略。从制定标准版本策略到针对定制分支收费,再到采用可变的支持计费模式,以及建立自动化的CI/CD流程,都是可以帮助我们应对这一挑战的方法。根据实际情况,结合这些策略,我们可以更好地管理分支,减少成本,提高效率,以及为客户提供更好的服务。