设计和优化软件全生命周期相关流程

1. 持续评估与DevOps成熟度模型

实践DevOps是一个长期过程,需要不断地评估自身的状态来进行改善。可从软件的开发周期的7个维度来讨论创建适合自己项目的DevOps成熟度模型,即持续规划、持续集成、持续测试、持续部署、持续监控、持续运维、持续反馈。

在这里插入图片描述
为了对这7个维度进行评估,可以将DevOps成熟度模型分成5个阶段,如图所示:
在这里插入图片描述

2. 持续规划的评估策略

以上五种阶段中,根据阶段的不同,评估策略也有所不同。

  • 初始阶段:各个团队彼此独立,有不同的KPI、不同的规划目标,各自为战。
  • 基础阶段:各个团队有一定程度的沟通,聚集于交付时间与部署频度等指标进行跨团队规划,有统一目标。
  • 可靠阶段:在各个团队充分沟通的基础之上,团队合作和分享程度逐渐变好,确定统一目标,开发团队和运维团队能够实现很高的部署频度和成功率。
  • 成熟阶段:各个团队规划目标高度统一,有明确规划的各项标准,聚焦于交付时间与响应时间,将用户的满意度也纳入规划度量之中,确保整体规划能够更充分地与客户价值相关联,确保整个团队能充分理解规划目标和度量标准,并对趋势进行跟踪和分析。
  • 优化阶段:规划聚焦于更具竞争力的业务服务能力及更好的市场收益,结合持续部署的能力和信心,通过持续规划生产环境来保证服务更具弹性,功能更具有竞争力。

3. 持续集成的策略与原则

持续集成时衡量DevOps的工具自动化和流程自动化等方面实施状况的重要指标,不同阶段的策略与原则不同。

  • 初始阶段:用手工方式或者部分自动化方式进行构建,构建环境不能保证稳定性和一致性,各种工具分散管理,对源代码进行了版本控制。
  • 基础阶段:通过持续集成服务器进行定期自动构建、按需手工构建,或者在代码提交之后触发自动构建,基本可以保证构建是稳定和可重复的,源代码及构建所需的设定文件和脚本都纳入了版本控制。
  • 可靠阶段:结合了版本管理模型和开发方式,提供进一步的持续集成能力,不仅对代码和构建所需要的脚本进行了版本管理,而且能够对进行标准化构建所需要的一切都进行版本管理,保证不会因为持续构建服务器的损坏而丧失稳定构建的能力。
  • 成熟阶段:具有每日数次部署或者按需部署所需要的的构建能力,使用基于主干的版本管理,构建过程实时可视,结合版本管理、需求管理、缺陷管理、运维监控进行一定程度的集成管理,能实现代码和需求的关联,缺陷和需求、故障和需求等局部关联,并可以进行相关数据的展示和分析。
  • 优化阶段:根据持续集成统计反馈信息进行不断改善和优化,形成需求、缺陷、运维、监控统一的管理平台以促进各个团队之间更好地进行协作和沟通。

4. 持续测试的策略与原则

持续测试是在DevOps实践中衡量质量与安全性的一项重要指标,不同阶段的策略与原则不同

  • 初始阶段:开发完成之后,进行手工测试。
  • 基础阶段:对零散的测试用户和数据进行管理,可以对部分功能进行自动化测试。
  • 可靠阶段:采用TDD方式,测试与开发同步进行,测试驱动开发,单元测试和验收测试等接入部署在流水线中自动进行。
  • 成熟阶段:各个阶段(诸如单元测试和验收测试)的覆盖率进一步提高,测试的质量可视化确认,诸如覆盖率等度量指标进一步清晰,并可进行趋势跟踪。
  • 优化阶段:所有部署都会毫无例外地通过自动化测试,测试用例和数据得到实时更新,根据反馈强化测试作用,保证持续测试时间可控。

5. 持续部署的策略与原则

持续部署为组织提供了快速交付的能力,作为一项重要的指标,不同阶段的策略与原则不同

  • 初始阶段:手工配置环境、部署应用,频度受限,过程不可控,容易出现问题。
  • 基础阶段:通过简单机制实现环境自动生成,通过脚本等可进行重复部署,并可完成相关脚本的版本管理。
  • 可靠阶段:提供统一的部署方式和策略,可一键部署,并能够提供自主部署服务。
  • 成熟阶段:支持标准化和自定义部署,支持"蓝绿部署"或者"金丝雀部署"等方式,可完成例行部署和紧急部署,以及实时部署状态的可视化展示。
  • 优化阶段:持续部署能够支持业务相关人员进行不断学习和试错,出现问题之后保证风险可控,部署不会导致任务服务的中断或者服务水平的降低。

6. 持续监控的策略与原则

持续监控为组织提供了问题快速定位的能力,作为一项重要指标,不同阶段的策略与原则不同

  • 初始阶段:主要通过运维人员进行监控
  • 基础阶段:监控主要集中于故障发生后的通知等,以保证运维人员能够在第一时间确认问题,并保证服务能尽快恢复。
  • 可靠阶段:通过可视化的监控平台对问题进行分析及定位,结合运维人员的知识和经验能够对可能出现故障的征兆有所察觉。
  • 成熟阶段:将全生命周期的数据纳入统一监控平台,可监控从代码质量到部署流水线的状况,以及从业务数据到系统资源状况等的整体状况。故障从发生到恢复的过程均可体现,可根据关键指标的临界阈值进行监控。
  • 优化阶段:监控平台自身的稳定性和可用性进一步加强,与关键业务相关的监控不断增加和优化,不断调整监控阈值等以提高故障发生前从监控系统中捕获征兆的可能性。

7. 持续运维的策略与原则

持续运维为组织提供了稳定的连续性服务的能力。

  • 初始阶段:运维操作基本上通过运维人员手工进行。
  • 基础阶段:常用的运维操作通过分散的Ansible Playbook工具或者Shell脚本等进行自动执行以提高效率和稳定性。
  • 可靠阶段:诸如数据库版本或者系统安全补丁升级等常规运维操作也成为常规的持续部署的一种。通过结合部署流水线和自动化运维平台或者工具,保证常规运维操作能像代码部署一样操作。
  • 成熟阶段:运维相关的操作纳入规划与监控,所有的运维操作、常规的维护模式或者紧急故障应对均有明确的平均参考数据,同时可以对各项问题(如MTTR平均修复时间)进行跟踪和分析。
  • 优化阶段:对运维平台自身的稳定性和可用性进一步优化,通过对运维操作的趋势和问题进行跟踪以实现进一步的优化,持续对安全与效率等进行评估和改善。

8. 持续反馈的策略与机制

持续反馈为组织提供了持续学习的支撑,作为一项重要指标,不同阶段的策略与原则不同

  • 初始阶段:各个团队之间很少进行有效沟通、协作,彼此独立,缺少反馈回路。
  • 基础阶段:在项目中可进行开发和运维之间的反馈,通过一些工具进行内部知识共享和协作管理。
  • 可靠阶段:基于开发团队和运维团队统一的目标进行沟通和合作,在整个过程中建立初步的反馈回路。敏捷方式的开发则在每个冲刺阶段都会贯彻执行相关的反馈、改善。
  • 成熟阶段:持续反馈的内容具体化和量化,从服务质量、流程效率、运维能力、客户价值等多个维度进行评估和反馈,持续反馈的结果对全体成员可见,以促进组织级别的整体改善。
  • 优化阶段:持续反馈聚焦于能够带来影响市场份额和交付价值的项目,并通过不断对现有系统的整体过程、工具、方法进行评估来改善。
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐