研发模式的3个实践案例(二)|学习笔记

简介: 快速学习研发模式的3个实践案例(二)

开发者学堂课程【ALPD 云架构师系列-云原生 DevOps36计研发模式的3个实践案例(二)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/82/detail/1286


研发模式的3个实践案例(二)

 

内容介绍:

一、案例一:P2P 直播 CDN 产品

二、案例二:基础网络产品

三、案例三:金融安全产品

四、总结

五、实践建议

六、回顾


四、总结

通过这几个例子可以发现,所有都是根据团队、本身的产品特征来确定分支模式的,这些分支模式里也尽可能减少分支,降低分支的维护成本,每多一个分支,维护的成本就会高很多,所有在选择分支的过程中,需要合理的考虑。在集成过程中,集成结束之后,发现集成分支有问题,需要摘出相应的代码,很多分支合在一起,可以使用临时的集成分支来解决。集成分支失败后,临时分出一个集成分支,把废弃分支摘除,其他的合进去就可以解决这个问题。阿里云的云霄就可以解决这个问题。分支可以很灵活的使用的,但灵活的使用会给程序员带来理解和维护的成本,所以分支越简单越好,另外尽量减少程序员关注分支的样子,让程序员只关注开发的分支上。

 

五、实践建议

1、单主干:一个代码仓库应该保证有且仅有一个主干分支。Getsflow 中 Develop和 Master 是很让人迷惑的。团队采用双主干或多主干的情况,一般最终拆成多个应用;

2、最少长期分支:在避免冲突的前提下,尽量减少长期分支的数量,太多的长期分支会导致代码基线的 tag 越来越大;

3、Promotion:代码的提交应该是逐级合并,如feature(开发)->develop->master,避免 feature->develop和feature->master 同时存在;

4、发布不可变:发布的版本应该是不可变且可回溯的,可以追溯找到源头;

5、自动化事件触发:分支的持续集成过程应该是自动化的,且通过代码提交事件或制品变更事件自动触发;

 

六、回顾

1、团队研发本质上是一个异步的、延迟协作的过程,随着产品复杂度和团队复杂度的增加,协作成本快速上升。协作成本会带来一个很大的冲突和等待的问题。

2、研发模式的本质是为高效交付需求,研发团队围绕代码库的一系列行为约束。围绕代码库的过程中,尽可能避免冲突和减少等待。

通过分支进行隔离,避免冲突;通过小批量频繁提交,保持信息的同步来减少等待。

3、控制分支需要考虑最大化生产力及最小化风险,分支尽可能简单,减少分支的维护和管理成本。同时,分支可以用来做一些隔离,频繁的提交和分支之间信息的同步可以减少彼此的等待。

4、分支的选择需要综合团队规模、协作成熟度、产品交付形态几个要素。上面举了3个不同的例子来证明这一观点。分支的模式和持续发布和集成的策略是息息相关的,从简单组合的角度来说,主干开发主干发布,分支开发主干发布,分支开发分支发布,主干开发分支发布,持续发布的话,采用持续发布的方式;需要版本制,采用 release 发布;如果需要做隔离,采用分支开发的方式。

分支模式不是很发杂,相应的概念需要在平常的产品实践中慢慢积累、理解。在实践中,随着团队的变化会做出相应的调整,并不是一成不变的。

课后作业

1.按照课程中示例分支模式的要求,配置对应的流水线和分支保护策略(包含代码安全监测和流水线卡点)

2.选择一个应用(如 alpd-bot-query),添加一段代码(可以实现 README 中的一个 TODO),在 feature 分支上提交

3.创建一个 feature 分支到目标分支( develop)的合并请求,查看其检查结果4.通过该合并请求

5.创建一个 develop 分支到 master 分支的合并请求,重复步骤3、4

6.创建 Tag

7.查看 Tag 触发的流水线运行结果,保证应用能顺利发布上线

8.(可选)完成一个依赖两个应用的需求(如 alpd-bot-query 和 alpd-bot-ssh ),思考一下:跨应用的需求对我们的应用本身有哪些要求?对工具有哪些要求?

基于示例做一些分支模式的设计,可以选择一个或多个示例配置一个流水线和分支保护策略。

可以选择一个应用,实现 README 中的一个 TODO 并提交,走下来整个流程。

如果有一个依赖两个应用的需求,这时应该怎么做,对应用有什么要求,对工具应该怎么做,也就是一个需求涉及到两个应用,这时该怎么办。在此基础上,还可以想一下,如果一个产品涉及到很多很多应用,而且是版本级的方式,像前边提到的私有化的方式,又该怎样设计分支模式。

希望学习完工程实践的相关课程可以成为 develop 的 master。工程实践更多的涉及到一个团队、组织、公司的,希望能在公司里对相应的工程实践做相应的升级。

相关文章
|
存储 前端开发 JavaScript
潮玩宇宙大逃杀无聊猿卷轴模式系统开发详细规则丨步骤需求丨方案项目丨技术架构丨源码功能
确定游戏类型和规则:明确无聊猿卷轴模式游戏类型和游戏规则,包括敌人类型、地图设计、任务类型、战斗机制等。
|
敏捷开发 监控 容灾
阿里巴巴DevOps实践指南(二十二)| 发布策略
DevOps 追求更短的迭代周期、更高频的发布。但发布的次数越多,引入故障的可能性就越大。更多的故障将会降低服务的可用性,进而影响到客户体验。所以,为了保证服务质量,守好发布这个最后一道关,阿里逐步发展出了适应 DevOps 要求的发布策略。
阿里巴巴DevOps实践指南(二十二)| 发布策略
|
算法 Go
阐述:one wiex壹维克斯平台逻辑系统开发项目模式方案
阐述:one wiex壹维克斯平台逻辑系统开发项目模式方案
420 0
|
运维 Kubernetes Cloud Native
研发模式的3个实践案例(一)|学习笔记
快速学习研发模式的3个实践案例(一)
178 0
研发模式的3个实践案例(一)|学习笔记
|
运维 架构师 测试技术
研发模式的三个实践案例 | 学习笔记
快速学习研发模式的三个实践案例
研发模式的三个实践案例 | 学习笔记
|
存储 消息中间件 弹性计算
行业实践(二)| 学习笔记
快速学习行业实践(二)
行业实践(二)| 学习笔记
|
机器学习/深度学习 自然语言处理 算法
课时3 :高级能力和算法效果优化(一)|学习笔记
快速学习课时3 :高级能力和算法效果优化
105 0
课时3 :高级能力和算法效果优化(一)|学习笔记
|
机器学习/深度学习 自然语言处理 算法
课时3 :高级能力和算法效果优化(三)|学习笔记
快速学习课时3 :高级能力和算法效果优化
159 0
课时3 :高级能力和算法效果优化(三)|学习笔记
|
自然语言处理 算法 机器人
课时3 :高级能力和算法效果优化(二)|学习笔记
快速学习课时3 :高级能力和算法效果优化
123 0
课时3 :高级能力和算法效果优化(二)|学习笔记
|
数据采集 消息中间件 监控
最终整体回顾总结(流程-ppt)|学习笔记
快速学习最终整体回顾总结(流程-ppt)
111 0
最终整体回顾总结(流程-ppt)|学习笔记