GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab : 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。
更多关于极狐GitLab :https://gitlab.cn 或者 DevOps 的最佳实践,可以关注文末的极狐GitLab 公众号。
学习极狐GitLab 的相关资料:
- 极狐GitLab 官网:https://gitlab.cn
- 极狐GitLab 官网文档:https://docs.gitlab.cn
- 极狐GitLab 论坛:https://forum.gitlab.cn/
- 极狐GitLab 安装配置:https://gitlab.cn/install
- 极狐GitLab 资源中心:https://resources.gitlab.cn
搜索【极狐GitLab】公众号,后台输入加群,备注gitlab,即可加入官方微信技术交流群。
DevOps 世界的主要资源限制之一是技术负债(technical debt)。技术负债是Ward Cunningham创造的一个比喻,它把 cruft 程序代码中随时间堆积起来的过时垃圾代码(软件系统内部的质量缺陷)比作金融债务的积累,增加新特性时所需付出的努力就是为债务支付的利息。
-- Martin Fowler
然而对于一个工作忙碌的开发人员来说,发布新功能常常具有更高优先级,而无暇优化过去的遗留问题。因此,为了尽快完成交付工作,在有已知缺陷的代码上进行后续开发非常普遍。
Fowler说:“在决定是否要花费宝贵时间去修复 cruft 过时垃圾代码并打造新特性的价值时,面临的主要的困境之一是其成本无法被客观衡量。”就像偿还金融债务一样,决定的正确性在很大程度上要视情况而定,并非是绝对的。
“鉴于此,一般来说最好的途径就像我们处理金融债务一样,逐步偿还。”Fowler写道。
通过在开发新功能时清理一部分过时垃圾代码,可以确保核心代码在未来的迭代中变得更加优雅。当涉及到变更需求很小的过时垃圾代码段时,可以暂时不用管它。这种方法类似于每月支付低息贷款的余额,其影响很小。
“与此相反,对频繁变更所牵涉到的过时垃圾代码需采取零容忍的态度,因为利息支出高得惊人。”Fowler写道。
着手处理技术负债的一个方法是进行粗略的审计,并按照 “利率”对您的技术负债进行分类——高利率的过时垃圾代码要和交付新功能一样被优先处理,而中低利率的过时垃圾代码则可以按照最适合您团队情况的优先级来处理,因为尽早处理最紧急的技术负债将有助于您长期节省资源。
技术负债是如何在您的工作流程中积累的
不仅仅是代码中包含了过时垃圾代码那么简单,很多时候,这些过时垃圾代码会拖慢我们的工程流程。这导致在更新 DevOps 流程时,时间和金钱似乎永远都不足。
“我们不会让我们的团队花时间去改进他们的流程,因为我们认为这是浪费精力,”GitLab 高级开发者 Brendan O’Leary说。“但如果你能花一天时间修复一些导致工作流程效率低下的事情,能让以后每周都能节省一个小时的话,那倒不错。”
以手动部署与使用自动化流水线为例。手动部署需要花费大量的时间,但为实现自动化流水线而需要投入的前期准备工作也令人望而生畏。
应用案例
如果您的团队陷入了耗时的技术负债旋涡中,不妨看看总部位于美国明尼苏达州的咨询公司 BI Worldwide (BIW) 是如何通过过渡到 GitLab 来加速部署的。
在案例研究中,BIW 企业产品开发团队解释了他们在内部基础架构上进行手动测试和手动部署时所面临的困境。他们的工具链复杂且效率低下,导致了大量backlog产品功能待办清单。
“应用所有的代码更改非常耗时。”BIW 产品架构师 Adam Dehnel 在研究案例中说。当每个版本中都塞进了太多的功能时,部署频率与速度会变得很慢。
提高部署速度的第一步是对流程更新进行现代化改造。
“虽然在那时 BIW 已经有了实践和工具,但却把时间花在了没有业务差异化特征的项目上。他们面临着缺乏跨团队沟通的典型问题,包括组织内工作流程和个性化工具集的低效机制。”BIW 产品架构师 Adam Dehnel 解释道。
最开始,BIW 进行了从 CVS 到 Git 的痛苦转型。下一步,公司的目标是实现构建、测试和部署过程的自动化,并利用GitHub、Jenkins、JIRA 和 Confluence等工具建立了一个完整工具链。
对于 BIW 来说,这种复杂的工具链是错误的。在这个具体的例子中,有一点没有提到但值得关注的是维护所有这些不同工具的隐性成本。
GitLab 高级开发者 Brendan O’Leary:需要注意的不仅是使用这些不同工具的成本,你拥有的工具越多,就会有更多升级、维护和整合这些工具的额外开销。在经营成本的背后还有巨大的隐性成本。
在接下来的迭代中,BIW 通过采用 GitLab 享有了一体化工具的高效率。
BIW 从每9到12个月发布一个版本的速度节奏,发展为每天使用 GitLab Ultimate 进行近十次部署,这无疑大大减少了他们由于缓慢而费力的发布周期而造成的技术负债。
节约宝贵资源,用 DevOps 偿还技术负债
DevOps 可以帮助您更快、更频繁地进行部署,使您的企业在竞争中占据优势,它同时也是一种偿还技术负债的策略。通过首先考虑到您的代码和工程流程中的低效率,您可以粗略评估和分类团队的技术负债。这种类型的审计是第一步,以确定您可以减少的过时垃圾程序代码,以帮助缩短您的周期时间,清理您的 backlog 产品功能待办清单并实现工程流程的现代化。
Martin Fowler是一位知名软件开发人员、作家和软件开发领域的国际公开演讲者,专门研究面向对象的分析和设计、UML、模式和敏捷软件开发方法。
关注极狐GitLab,成为 DevOps 专家~
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。