研发管理DevOps最佳实践之三问三答

2年前 (2022) 程序员胖胖胖虎阿
235 0 0

近日,极狐(Gitlab)江狐会·北京站在极狐北京Demo Center如期开展。

会上,极狐(Gitlab)高级解决方案架构师杨周带来了《研发管理DevOps最佳实践》主题分享,解答了如下备受关注的问题:

  • Git Flow过时之后推荐用什么?
  • Java/VUE老项目如何落地代码规范?
  • 为什么不该用CI做部署,而是CD、GitOps?

希望给普遍面临这些问题的开发人员尤其是研发负责人、架构师,以及开源和DevOps的爱好者们提供一些参考。

以下内容整理自本次分享,enjoy~

研发管理DevOps最佳实践之三问三答

Git Flow过时了,那应该用什么呢?

Git Flow是一种诞生于 2010 年的工作流,一篇名为《一个成功的Git分支模型》的文章将Git Flow推入了开发团队的视野。但在2020 年,其作者 Vincent Driessen 宣布Git Flow不适合「持续交付」

原因是Git Flow适合当年多版本共存的软件,而现代软件大部分只有「最新版」,比如网站打开永远是「最新版」、App 会提示升级而不会维护旧版本。所以Git Flow的发布分支(如 release/1.2.0)和支持分支(如 support/1.x)不再常用。

那么问题来了:Git Flow过时了,我们应该用什么呢?

现在业界常用的 Git Workflow 有「简易 Git Flow」、「GitHub Flow」、「GitLab Flow」,个人总结它们的特点如下,大家可应需选用。

  • 简易 Git Flow:保留 Git Flow 的双长期分支(main 和 develop)、几个临时分支(feature/xxx、bugfix/xxx、hotfix/xxx),而舍弃 release 和 support;
  • GitHub Flow:非常简单,拉取临时分支,合并到主干即可;适合人少的小项目,比如个人开源项目;
  • GitLab Flow:包括多种 Flow,比如 「Production branch with GitLab Flow」、「Environment branches with GitLab Flow」、「Release branches with GitLab Flow」。

Java/VUE 老项目如何落地代码规范?

如何做一名优秀的研发工程师?从改善每一行代码开始。若有《程序猿的自我修养》,缩进、换行、大小写、注释,应该大写加粗印在扉页上。😄

研发管理DevOps最佳实践之三问三答

而经验告诉我们,规范写在纸上或者口头传达依然不尽人意,因此,强制自动执行的自动检查代码规范(lint)出圈了。业界知名的代码规范都有配套的lint,比如 VUE 用 eslint,Java 用 checkstyle。新项目可以直接扫描整个目录,把检查命令放在 CI 里,即可实现在代码合并请求时强制检查规范。比如:

  • VUE 项目执行 npm run lint
  • Java 项目执行 ./gradlew check

研发管理DevOps最佳实践之三问三答

研发管理DevOps最佳实践之三问三答

但是,如果老项目的规范报错太多,就需要所有人暂停手头工作,一起清理。这样做的成本太高了,哒咩🙅,所以很多老项目只能越来越差。

新的解决方案是采用增量扫描,即只扫描本次修改的文件。这样,随着时间的推移,只要老项目还在维护,代码就会越来越干净漂亮。

研发管理DevOps最佳实践之三问三答

研发管理DevOps最佳实践之三问三答

为什么不要用 CI 做部署,而是用 CD、GitOps?

CI (Continuous Integration)和 CD(Continuous Deployment) 都是自动化流水线,但 CD 更适合部署。区别在于:

  1. CI 基于代码,而 CD 基于包。当需要回滚时,CI 必须重新编译打包,可能很久,而 CD 瞬间获取上一个版本的包,降低了「故障恢复时间」。
  2. CI 难以区分多个环境,而 CD 具有多环境配置管理,比如 testing、staging、production。
  3. CI 没有上线审批,而 CD 有,可以为每个环境设置审批人。

但 CD 仍然有缺点,即因为它缺少基础设施的完整信息(比如 K8s yaml),在灾难恢复、为客户私有化部署时,无法瞬间创建新环境。

GitOps 解决了 CD 的这个缺点,实现了:

  1. 基础设施即代码(IaC):Git 作为单一可信源,保存完整的基础架构信息,可实现快速部署新环境(灾难恢复、销售私有化产品)。
  2. 合并请求(MRs):借助 Git 的合并请求评审机制,让部署可评审、记录可追溯。
  3. 更安全:由于 Git 中保存了完整的基础设施配置,可通过 Agent 拉取生效,而不像 CD 流水线推送需要暴露服务器网络权限。

研发管理DevOps最佳实践之三问三答

极狐 GitLab 同时支持 CI、CD、GitOps,建议大家使用 CD 和 GitOps 进行部署。

极狐GitLab 一体化 DevOps 平台

从设计到投产,一个平台覆盖 DevSecOps 全流程。极狐GitLab 帮助团队更快、更安全地交付更好的软件,提升研运效能,实现 DevOps 价值最大化。

版权声明:程序员胖胖胖虎阿 发表于 2022年10月2日 下午9:40。
转载请注明:研发管理DevOps最佳实践之三问三答 | 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...