持续交付管理

简介: 持续交付管理

《持续交付 发布可靠软件的系统方法》读书笔记

实现持续交付不仅仅是买些工具,做一些自动化的工作。它依赖于交付过程中所涉及的每个人的协作,来自行政管理层的支持,以及基层人员的改进意愿。持续交付不仅仅是一种新的交付方法论。对依赖于软件的业务来说,它是一个全新的范例。要想知道为什么,需要研究公司治理核心中一种根本的张力(tension)。CIMA 把企业治理(enterprise governance)定义为“由董事会(board)和执行管理层行使的一系列职责和实践,其目的是提供战略方向,以确保达成业务目标,风险被合理地管理起来,并验证组织的资源被可靠地使用了。”企业治理更关注于符合度(conformance),即遵从性、保障、监管、责任和透明管理,而业务治理(business governance)更关注业务和价值创造的执行度(performance)。通过确保交付团队能得到应用程序在类生产环境上的不断反馈,是部署流水线达成“执行度”这个目标的方法和手段。部署流水线使交付流程更加透明,来帮助团队达成符合度。使用本书中提到的实践后,即使开发复杂软件的大型组织也可以快速且可靠地交付新版本了。也就是说,不仅业务部门可以从投资中得到快速回报,而且还能减少风险,消除因较长的开发周期(甚至更糟,最终交付的软件无法满足其业务目标)所产生的机会成本。像精益制造业一样,没有频繁交付的软件就是仓库中的库存。它已经花钱制造完了,却还没有为你赚钱,实际上保管它也是花钱的。

配置与发布管理成熟度模型

1aaca376616707cef54002534f93fb6d.png

这个模型的最终目标是组织改进,想得到的结果如下:

  • 缩短生产周期,以便能更快地为组织交付价值,增加利润。
  • 减少缺陷,以便可以提高效率,在技术支持工作上花更少的成本。
  • 提高软件交付生命周期的可预测性,让计划更有效。
  • 具有采用和遵守任何必要的法律规章的能力。
  • 具备有效发现和管理软件交付相关风险的能力。
  • 通过更好的风险管理和交付更少缺陷的软件来减少成本。

我们相信,这个成熟度模型可以作为一个指南,帮助你收获所有这些产出。

项目生命周期

每个软件开发项目都是不同的,但不难从中抽取出共同元素。尤其是,我们可以抽象出一个软件交付的生命周期。与每个团队一样,每个应用程序都有自己的叙事弧线。团队组建与磨合常常会经历五个阶段:

  • 创建期(forming)
  • 风暴期(storming)
  • 规范期(norming)
  • 运转期(performing)
  • 调整/重组期(mourning/reforming)

同样,软件也会经过几个阶段。初步可包含以下阶段:

  • 识别阶段(identification)
  • 启动阶段(inception)
  • 初始阶段(initiation)
  • 开发和部署阶段(development and deployment)
  • 运维阶段(operation)

风险管理流程

风险管理是一个过程,它确保:

  • 项目的主要风险已经被识别。
  • 已有适当的缓解策略对这些风险进行管控。
  • 在整个项目过程中,持续识别和管理风险。

风险管理过程应该有如下几个关键特征:

  • 一个项目团队汇报项目状态的标准结构。
  • 项目团队依赖标准,定期更新进度状态。
  • 有一个信息展示板,让程序经理(program manager)可以跟踪当前状态,并查看所有项目的趋势。
  • 项目外的人员定期对项目进行审计,确保风险被有效地管理起来了。

风险管理过程应该在启动阶段结束之前就开始了,并在初始阶段结束时进行重新审视,然后在整个开发和部署阶段中定期进行审视。分析任何项目,可以从下面这些问题出发:

  1. 如何跟踪项目进度?
  2. 如何防止缺陷?
  3. 如何发现缺陷?
  4. 如何跟踪缺陷?
  5. 怎么知道一个用户故事做完了?
  6. 如何管理环境?
  7. 如何管理配置项,比如测试用例、部署脚本、环境和应用程序配置、数据库脚本和外部库?
  8. 演示可工作功能的频率是怎样的?
  9. 做回顾会议的频率是怎样的?
  10. 运行自动化测试的频率是怎样的?
  11. 如何部署软件?
  12. 如何构建软件?
  13. 对运营团队来说,如何确保发布计划是可行的且可接受的?
  14. 如何确保风险问题列表是及时更新的?

这些问题并不是一种规范,这一点非常重要,因为每个团队都要有一定的灵活性根据他们的具体需求来选择合适的流程。

常见的交付问题

不频繁的或充满缺陷的部署

花很长时间部署某个构建版本,而且部署过程很脆弱。

较差的应用程序质量

交付团队无法实施有效的测试策略。

缺乏管理的持续集成工作流程

不适当的构建过程管理。

较差的配置管理

环境不是专属的,应用程序无法用自动化过程可靠安装。

符合度与审计

许多大公司都必须遵守其所在行业的法规。

文档自动化

很多公司坚信,文档是审计的关键。我们的想法有些不同。让你按照某种方法做事的那张纸无法保证你真的是那么做的。自动化脚本就是一份必须遵守的部署流程文档。强制使用这些脚本,你就要确保它们是时时更新的,并且部署流程是完全按照你指定的方式执行的。

加强可跟踪性

我们通常需要能够跟踪变更的历史,从生产环境中部署过哪些版本,到这些版本在源代码库中的版本号。

在筒仓中工作

大型组织常常会按职能不同被划分成多个部门。很多组织会有独立团队负责部署、测试、运营、配置管理、数据管理和架构。在规范的环境中,许多重要活动都要受到审查,审计人员和安全团队的任务就是确保该组织不会受到法律风险或任何形式的安全漏洞的危胁。

变更管理

在一个规范的环境中,对于构建、部署、测试和发布过程中的某些环境需要审批,这常常是必要的。尤其是,手工测试环境、试运行环境和生产环境总是在严格的访问控制之下,以便确保只能通过组织制定的变更管理流程对它们进行修改。这看上去像是不必要的官僚作风,但是实际研究表明,使用这种做法的组织中,其 MTBF(Mean Time Between Failures,平均失败时间)和 MTTR(mean time to repair,平均修复时间)更短。

小结

对于每个项目的成功来说,管理都是至关重要的。良好的管理所创建的流程令软件更高效地交付,同时确保风险被适当地管理,规章制定被严格遵守。我们的构建和发布成熟度模型的目标是改进组织的执行度。它让你可以识别交付实践效率是什么状态,并且为如何改进提供了建议。

推荐阅读

目录
相关文章
|
4月前
|
运维 Devops jenkins
DevOps实践:自动化部署与持续集成
【8月更文挑战第29天】本文深入探讨了DevOps文化中的两大核心实践——自动化部署和持续集成。通过介绍这两个概念,解释了它们如何相互促进并提升软件开发的效率和质量。文章将展示具体的代码示例,指导读者如何在实际项目中实现这些实践,以及如何从中受益。
|
1月前
|
监控 Devops jenkins
自动化部署与监控:打造高效的DevOps流程
【10月更文挑战第24天】在追求快速迭代和持续交付的软件开发时代,DevOps成为提升团队效率的关键。本文深入探讨如何构建一个高效的DevOps流程,包括自动化部署、监控和故障排除等关键环节。通过实际案例,我们将学习如何利用工具简化运维任务,确保系统稳定运行,并快速响应生产问题。
57 2
|
1月前
|
运维 Devops jenkins
DevOps实践之持续集成与持续交付
【10月更文挑战第32天】在软件开发的快节奏世界中,DevOps已经成为提升效率和质量的关键策略。通过将开发(Development)和运维(Operations)紧密结合,DevOps促进了更快速的软件发布和更高的可靠性。本文将深入探讨DevOps的核心组成部分——持续集成(CI)和持续交付(CD),并展示如何通过实际代码示例实现它们,以帮助团队构建更加高效和稳定的软件发布流程。
|
2月前
|
运维 Devops jenkins
DevOps实践:自动化部署与持续集成的实现
【9月更文挑战第36天】本文通过深入浅出的方式,向读者展示了在现代软件开发中,DevOps如何通过自动化部署和持续集成提高开发效率和软件质量。文章不仅介绍了相关概念,还提供了实用的代码示例,帮助读者理解如何在实际工作中应用这些技术。
|
2月前
|
监控 Devops 测试技术
DevOps实践:持续集成与部署的自动化之路
【9月更文挑战第30天】在软件工程的世界中,DevOps已成为提升开发效率、确保软件质量和加快交付速度的关键策略。本文将深入探讨如何通过自动化工具和流程实现持续集成(CI)与持续部署(CD),从而优化软件开发周期。我们将从基础概念出发,逐步深入到实际操作,最终展示如何构建一个高效的自动化流水线,以支持快速迭代和高质量发布。
59 7
|
4月前
|
监控 测试技术 持续交付
持续集成与持续交付的最佳实践
【8月更文挑战第15天】持续集成和持续交付是现代软件开发中的重要实践,它们通过自动化和频繁地集成代码、构建、测试和部署,帮助团队更快地交付高质量的软件。通过遵循最佳实践,团队可以优化其持续集成和持续交付的流程,提高开发效率和软件质量。希望本文的分享能够为开发团队提供有益的参考和指导。
|
4月前
|
存储 安全 测试技术
持续集成、交付和部署简介
持续集成、交付和部署简介
56 1
|
3月前
|
运维 监控 Devops
DevOps实践:构建高效运维流程
【9月更文挑战第3天】在当今快节奏的技术环境中,高效的运维流程是企业成功的关键。本文旨在揭示如何通过DevOps实践,构建一个既灵活又高效的运维体系。我们将深入探讨自动化工具、持续集成与持续部署(CI/CD)策略以及监控和日志管理的最佳实践,以实现运维工作的优化。文章将用简洁明了的语言,结合生动的比喻,带领读者走进DevOps的世界,学习如何将理论应用到实际工作中去。
|
4月前
|
Devops jenkins 持续交付
DevOps 实践:自动化部署与持续集成的无缝对接
【8月更文挑战第30天】本文旨在通过浅显易懂的语言,向读者展示如何在现代软件开发中实现 DevOps 理念下的自动化部署和持续集成。我们将从基础概念出发,逐步深入到实际操作,不仅分享理论知识,还将提供具体的代码示例,帮助读者快速掌握如何将这两个关键环节有效结合,以提高开发效率和软件质量。
|
4月前
|
敏捷开发 运维 监控
持续交付 2.0
持续交付 2.0
45 0