前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >推动软件交付的24个关键能力

推动软件交付的24个关键能力

作者头像
DevOps云学堂
发布2020-09-22 16:18:32
9480
发布2020-09-22 16:18:32
举报
文章被收录于专栏:DevOps持续集成

这篇文章摘自Nicole Forsgren博士,Jez Humble和Gene Kim 的Accelereate摘录 。

持续交付能力

1.对所有生产工件使用版本控制

版本控制是将所有生产工件纳入版本控制系统(例如GitHub或Subversion)管理,包括应用程序代码,应用程序配置,系统配置以及用于自动构建和配置环境的脚本。

2.自动化部署过程

部署自动化是指部署完全自动化且不需要人工干预的程度。

3.实施持续集成

持续集成(CI)是实现持续交付的第一步。这是一种开发实践,其中的代码会定期检入,每次检入都会触发一组快速测试,以发现严重的回归问题,开发人员会立即对其进行修复。CI流程将创建规范的构建和程序包,并最终进行部署和发布。

4.使用基于主干开发方法

基于主干的开发模式已被证明可以实现软件开发和交付中的高性能。它的特点是在代码存储库中少于三个活动分支。在合并入主干分支之前具有非常短的生命周期(例如,少于一天)的分支;应用程序团队很少或从来没有“code lock”期,因为合并冲突,代码冻结或稳定阶段,没人能签入代码或执行拉取请求。

5.实施测试自动化

测试自动化是一种在整个开发过程中自动(而非手动)连续运行软件测试的实践。有效的测试套件是可靠的,也就是说,测试会发现真正的失败,并且只能通过可发布的代码。请注意,开发人员应主要负责创建和维护自动化测试套件。

6.支持测试数据管理

测试数据需要仔细的维护,并且测试数据管理已成为自动化测试中越来越重要的部分。有效的做法包括拥有足够的数据来运行您的测试套件,按需获取必要数据的能力,在管道中对测试数据进行条件调整的能力以及不限制可以运行的测试数量的数据。但是,我们确实要警告,团队应尽可能减少运行自动化测试所需的测试数据量。

7.左移安全性

将安全性集成到软件开发过程的设计和测试阶段是提高IT性能的关键。这包括对应用程序进行安全审查,包括在应用程序的设计和演示过程中的信息安全团队,使用预先批准的安全性库和程序包,以及将安全性功能作为自动化测试套件的一部分进行测试。

8.实施持续交付(CD)

CD是一种开发实践,其中软件在其整个生命周期中都处于可部署状态,并且团队优先考虑使软件保持在可部署状态,而不是研究新功能。所有团队成员都可以快速获得有关系统质量和可部署性的反馈,当他们收到有关系统不可部署的报告时,可以快速进行修复。最后,可以根据需要随时将系统部署到生产或最终用户。

架构能力

9.使用松耦合的架构

这影响了团队可以按需测试和部署其应用程序的程度,而无需与其他服务进行协调。松散耦合的架构使您的团队能够独立工作,而无需依赖其他团队的支持和服务,从而使他们能够快速工作并为组织创造价值。

10.授权团队的架构师

我们的研究表明,可以选择要使用哪些工具的团队在持续交付方面会更好,进而可以推动更好的软件开发和交付性能。没有人比从业者更清楚他们需要什么才能有效。

产品和过程能力

11.收集并实施客户反馈

我们的研究发现,组织是否定期主动地寻求客户反馈,并将此反馈纳入其产品设计对软件交付性能很重要。

12.通过价值流使工作流程可见

团队应该对从业务一直到客户的工作流程有很好的理解和可视性,包括产品和功能的状态。我们的研究发现,这对IT性能有积极影响。

13.小批量工作

团队应该将工作分成小块,可以在一周或更短的时间内完成。关键是将工作分解为允许快速开发的小功能,而不是在分支上开发复杂的功能并很少发布它们。这个想法可以应用于功能和产品级别。(MVP是产品的原型,具有足够的功能以使人们能够有效地了解产品及其商业模型。)小批量工作可缩短交货时间并加快反馈循环。

14.培养和启用团队实验

团队实验是开发人员在开发过程中尝试新想法并创建和更新规范的能力,而无需团队外部的批准,这使他们能够快速创新并创造价值。当与小批量工作相结合,合并客户反馈并使工作流程可见时,这特别有影响。

精益管理和监控能力

15.进行轻量级变更批准流程

我们的研究表明,与使用外部变更批准委员会(CAB)相比,基于同级审查(对编程或团队内部代码审查)的轻量级变更批准过程可产生出色的IT性能。

16.跨应用程序和基础架构进行监视以通知业务决策

使用来自应用程序和基础架构监视工具的数据来采取行动并制定业务决策。当出现问题时,这不仅仅可以传呼别人。

17.主动检查系统运行状况

使用阈值和变化率警告来监视系统运行状况,以使团队能够抢先发现和缓解问题。

18.改进流程并管理在制品(WIP)限制的工作

在精益社区中,使用在制品限制来管理工作流程是众所周知的。有效使用后,可提高流程效率,提高吞吐量并在系统中显示约束。

19.可视化工作以监视质量并在整个团队中进行沟通

已显示用于监视质量和在制品的视觉显示,例如仪表板或内部网站,有助于软件交付性能。

文化能力

20.支持生成文化

衡量组织文化的依据是社会学家罗恩·韦斯特鲁姆(Ron Westrum)开发的一种类型学,他在航空和医疗保健领域研究了对安全至关重要的复杂系统。我们的研究发现,这种文化程度可以预测IT绩效,组织绩效和减少倦怠。此措施的标志包括良好的信息流,高度的合作与信任,团队之间的桥梁以及有意识的询问。

21.鼓励和支持学习

在您的文化中,学习被认为对持续进步至关重要吗?学习被视为成本还是投资?这是对组织学习文化的一种衡量。

22.支持和促进团队之间的合作

这反映了传统上孤立的团队在开发,运营和信息安全方面的互动程度。

23.提供使工作有意义的资源和工具。

这项工作满意度的特殊衡量标准是从事具有挑战性和有意义的工作,并有权锻炼您的技能和判断力。这还与获得做好工作所需的工具和资源有关。

24.支持或体现变革型领导

变革型领导支持并扩大了DevOps中至关重要的技术和流程工作。它由五个因素组成:视觉,智力刺激,鼓舞性沟通,支持性领导和个人认可。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-09-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DevOps云学堂 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 持续交付能力
    • 1.对所有生产工件使用版本控制
      • 2.自动化部署过程
        • 3.实施持续集成
          • 4.使用基于主干开发方法
            • 5.实施测试自动化
              • 6.支持测试数据管理
                • 7.左移安全性
                  • 8.实施持续交付(CD)
                  • 架构能力
                    • 9.使用松耦合的架构
                      • 10.授权团队的架构师
                      • 产品和过程能力
                        • 11.收集并实施客户反馈
                          • 12.通过价值流使工作流程可见
                            • 13.小批量工作
                              • 14.培养和启用团队实验
                              • 精益管理和监控能力
                                • 15.进行轻量级变更批准流程
                                  • 16.跨应用程序和基础架构进行监视以通知业务决策
                                    • 17.主动检查系统运行状况
                                      • 18.改进流程并管理在制品(WIP)限制的工作
                                        • 19.可视化工作以监视质量并在整个团队中进行沟通
                                        • 文化能力
                                          • 20.支持生成文化
                                            • 21.鼓励和支持学习
                                              • 22.支持和促进团队之间的合作
                                                • 23.提供使工作有意义的资源和工具。
                                                  • 24.支持或体现变革型领导
                                                  相关产品与服务
                                                  持续集成
                                                  CODING 持续集成(CODING Continuous Integration,CODING-CI)全面兼容 Jenkins 的持续集成服务,支持 Java、Python、NodeJS 等所有主流语言,并且支持 Docker 镜像的构建。图形化编排,高配集群多 Job 并行构建全面提速您的构建任务。支持主流的 Git 代码仓库,包括 CODING 代码托管、GitHub、GitLab 等。
                                                  领券
                                                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档