DevOps

使用一套共享的自动化构建、测试和部署实践来统一开发和运营团队,从而加快软件交付。

什么是 DevOps?为什么它很重要?

DevOps 是一套加速软件交付的卓越实践和工具,它用结构化、可重复的流程取代了冗长且容易出错的部署,从而帮助构建、测试、发布和监控软件版本的功能和性能。DevOps 实践可以应用于软件应用程序、工程系统或嵌入在产品(如汽车)中的软件,能够以更快的速度、更高的效率和可靠性为客户提供价值。

overlaycontent

DevOps 如何运作?

DevOps 是一种敏捷扩展,专注于以更快的速度交付更小的价值单位,它提供了一个共享的流程和工具集来规划、管理和监控软件交付。它用扩展到嵌入式产品软件的客户价值的持续集成/持续交付 (CI/CD) 管道取代了大型、不频繁的发布。嵌入式 DevOps 模型以不连续的时间间隔提供软件更新,而其他软件则支持更频繁的无线 (OTA) 更新。

DevOps 的优势

加快速度

通过更频繁的自动化软件更新,更快地为客户提供价值。

通过更频繁的自动化软件更新,更快地为客户提供价值。

降低成本

实现更高的效率和自动化,并降低软件发布的总体成本。

实现更高的效率和自动化,并降低软件发布的总体成本。

更高质量

通过一致的自动化测试和性能监控,提高最终用户体验的质量。

通过一致的自动化测试和性能监控,提高最终用户体验的质量。

改善的协同

协同工作,建立并兑现共同的客户价值愿景。

协同工作,建立并兑现共同的客户价值愿景。

更高的客户满意度

缩短从请求到交付的周期,随着时间的推移保持竞争平衡。

缩短从请求到交付的周期,随着时间的推移保持竞争平衡。

更长的产品生命周期

通过频繁的软件更新延长产品的使用寿命。

通过频繁的软件更新延长产品的使用寿命。

DevOps 生命周期

因为 DevOps 的持续特性,所以实践者使用无限循环来表明 DevOps 生命周期的各个阶段如何相互关联。尽管循环似乎是按顺序流动的,但它象征着在整个生命周期中不断协同和迭代改进的需求。

DevOps 生命周期由八个代表开发(在循环的左侧)和运营(在循环的右侧)所需的流程、功能和工具的阶段组成。在每个阶段,团队间都要进行协同和沟通,以保持一致性、速度和质量。

overlaycontent

DevOps 卓越实践

虽然 DevOps 流程不尽相同,但大都包括以下方面:

协同

DevOps 打破了将开发、运营和测试团队分开的孤岛,使他们能够合并,或者在共同的目标下运作。

整体发布规划

将代码变更与缺陷、需求和测试用例联系起来。整体发布规划使团队能够隔离问题、执行回滚、确定请求优先级,并根据需要与硬件和电子产品交付保持同步。

持续集成

开发人员将代码变更合并到一个共享存储库中,该存储库定期(有时是每天)自动集成、编译和测试,以降低集成成本。

持续交付

代码变更经过回归测试,并定期(有时是每天)交付到生产环境中,以加快客户价值交付。

无线 (OTA) 更新

新软件通过无线方式交付并嵌入到产品中。在大多数情况下,更新受到严格控制,以避免破坏使用中的产品的稳定性。

监控和分析

跟踪、分析和报告 DevOps 流程,并通过增强的可见性管理问题上报。监控进度并为团队提供跨项目的 DevOps 价值流的单一视图。

用于 DevOps 的工具:Codebeamer

Codebeamer 是一种需求、风险和测试管理解决方案,可加速客户价值交付,为团队采用 DevOps 实践扫除障碍。它通过提供需求、代码和测试数据的全方位视图来管理 CI/CD 管道。确定客户请求的优先级,做出明智的回滚决策,并提供审计就绪的可追溯性。中央 DevOps 中心集成了开发人员工具和测试工具(如 GitLab、Jenkins 和 Mattermost),取代了分散的工具链。简化并管理工程系统和嵌入式软件版本。

overlaycontent

DevOps 常见问题解答

采用 DevOps 时面临哪些挑战?

采用 DevOps 实践时面临的常见挑战包括:

各自为政的团队 – 团队缺乏共同的流程和目标,确定的优先任务集也不同,导致交付缓慢且容易出错,因此许多组织将开发、测试和运营工程师合并成一个 DevOps 团队。团队也可以保持其当前的组织结构不变,但在共同的流程和目标下合作。查看单一的共享仪表板的能力对于围绕共同的成功定义联合团队至关重要。

缺乏自动化 – 频繁的工作软件交付需要整个构建-测试-部署周期实现自动化,否则团队会被繁重的手动任务所拖累。集成的工具链可加快交付速度,同时还能提高 DevOps 质量。

缺乏可追溯性 – 生命周期可追溯性有助于组织精确、可控地采用 DevOps 实践。优先交付某个客户请求、回滚某个导致性能问题的功能或者向不同的客户或地区交付不同的功能等等,这些都需要精细的开发和发布周期控制。只有当 DevOps 实践与其他生命周期行为准则集成时,这种程度的发布控制才有可能。

嵌入式软件的 DevOps 有何不同?

DevOps 实践可以扩展到产品(如汽车、手机和医疗器械)中的嵌入式软件,但存在一些关键差异:

交付时机 – 智能产品通常需要更可控和细致的交付实践,例如汽车软件更新,在批次和时间上需要与定期的汽车维修间隔吻合。交付通常要选择时机,以尽量减少中断并确保安全。

安全和保障 – 许多智能产品是安全关键型产品,监管监督延伸到 DevOps 实践。这些产品必须满足可追溯性和审计标准,并确保软件更新监管链安全。

交付方法 – 嵌入式软件可以利用无线 (OTA) 更新、传统 Web、CD 或其他有线交付方法。

异构环境 – 团队可以在传统 DevOps 环境中实现对计算环境的高度控制。他们可以规定包含或排除哪些特定软件,并确保所有软件维护任务都已执行,这同不拥有物理硬件设备的运营团队正好相反。嵌入式软件更新通常需要对大量假设配置进行较为复杂的测试,以确保更新将在实际条件和配置中运行。