持续优化你的 DevOps 流程
学习目标
针对 CALMS 原则中的每个 DevOps 生命周期阶段,至少详细说明一种优化方法。
如前所述,DevOps 是一段旅程。正如之前所演示的,你可以建立敏捷开发运维,并在 SAP BTP 上提供应用程序的首个版本。在这里,我们思考如何将持续优化作为 DevOps 方法的一部分加以推进。
动机
持续优化应当贯穿应用程序的整个生命周期,成为我们敏捷活动的一部分。
以下部分给出了若干示例,说明你可以如何在 DevOps 方法中规划和实施最佳实践。每个示例都涉及 DevOps 工作流中的一个阶段。
计划
研究从收集反馈到形成具体待办事项的流程能否得到改进,以及如何在整个生命周期中提供透明度,即某个增量解决了哪些初始需求。可以考虑研究敏捷项目管理工具以及不断变化的文档能力,例如 SAP Cloud ALM 所提供的那些。
编码
持续研究扩展和改进开发方法的选项,例如采用促进整洁代码、测试驱动开发或行为驱动开发的方法。
构建
考虑为你的流水线定义 KPI,并持续研究这些 KPI 以发现优化潜力。例如,你的所有更改都符合流水线的准入条件吗?它们运行多长时间?是否可以将长时间运行的流水线拆分,因为并非每个更改都必须执行所有自动化测试,而某些方面的测试结果每天运行一次就足够了?
测试
提高整体测试覆盖率。检查在生产后续阶段出现了哪些问题,并考虑增加其他测试以避免这类迟来的意外。
持续检查新的或更新的合规要求,看看它们能否自动反映到相应的测试中。
部署
对于你的传输,研究是否还有更多用例应当通过移交给传输管理来处理——例如,由于 SAP Cloud Transport Management 服务已为传输启用了额外的内容类型。
对于现有的传输,评估将部署自动化到特定环境的必要性(例如将传输安排或自动导入到 QA 和 TEST 账户,或对不需要额外控制的开发场景使用 SAP Continuous Integration and Delivery 服务执行直接部署)。
定期评估并更新关键目标环境的已配置权限。
发布
评估是否需要额外的变更管理,例如质量门禁,或处理严格的公有云、私有云与本地部署变更之间的相互依赖关系。
考虑引入功能开关来处理已部署更改的发布流程。
运维
通过为应用程序插桩,并将本地可观测性能力(如 SAP Cloud Logging 服务所提供的)与 SAP Cloud ALM 提供的集中式可观测性相结合,实现更广泛的监控。这将使你能够检查应用的运行状况,即使它们跨越多个环境,并且如有必要,可以向下钻取进行上下文相关的日志分析。请确保借助 SAP Cloud ALM 与 SAP Alert Notification service for SAP BTP 的协同,及时获知即将出现的潜在问题或故障。
将对自动化潜力的探寻作为回顾会议的一部分。
为此,研究你为运维应用而不得不执行的近期运维任务:需要哪些操作?常规的人工任务能否自动化,例如使用 SAP Automation Pilot——或者使用 Terraform provider for SAP BTP 创建用于设置新团队子账户的自动化自助服务?
此外,在探寻更多自动化潜力时,也要把为补救近期问题而不得不执行的人工任务纳入进来。我们能否提出更多建议操作?最好绑定到事件和指标,以便 SAP Cloud ALM 能够在需要时自动在 SAP Automation Pilot 上触发这些操作。
为促进自动化,请从最新的自动化内容和示例用例(来自 SAP 或其他团队)中获取灵感。
反馈
你对软件的使用情况有透明度吗?为你的产品增加反馈渠道和问卷。思考如何触达你的最终用户(例如通过社区、活动以及直接交流来与他们建立直接联系)。
DevOps 原则——CALMS
还记得 CALMS 这个缩写吗?它来自 Culture(文化)、Automation(自动化)、Lean(精益)、Measurement(度量)和 Sharing(分享)。
不妨偶尔退后两步,评估总体流程和其他 CALMS 原则。例如,是否有足够的空间与不同团队(公司内部以及外部各方)定期交流?围绕 DevOps、开发者体验和自动化的最新市场趋势是什么?你的文化转型是否存在额外的阻碍?其他领域处于什么状态,这又如何影响你的团队?如今新团队的入职是如何运作的?组建平台团队是否有意义?
你的公司
你的团队在 DevOps 方法方面表现如何?诸如 DORA KPI 这样的指标是否有助于发现更多优化潜力?是否有足够的空间进行回顾以及与其他团队交流?还有其他优化思路吗?
业务场景——如何利用 DevOps 提高 SAP BTP 应用的可靠性
在本课程的最后,让我们再次回顾 Rotating Banana 的朋友们,看看他们是如何优化其 DevOps 方法的。
Rotating Banana 的 DevOps 团队利用 SAP BTP 上的 DevOps 服务践行敏捷方法已有一段时间。尽管他们对这种方法及其在企业环境中提供的敏捷性感到满意,但有时仍需要帮助来解决 SAP BTP 上某个应用程序的问题。这些问题往往来得出人意料,给团队带来很大压力。此外,他们必须花费大量时间来修复这些问题。
因此,这个跨职能团队在持续的反馈与优化过程中,讨论缓解该情况的行动事项。
看看他们提出的以下建议,想一想类似的方法是否能在你所在组织的回顾会议中帮到你。
1. 测试用例的数量
有人提出的一个想法是减少测试用例的数量,以便更改能够更快地传播。
你觉得这是个好主意吗?
交付时间并不是这里所面临问题的根本原因,更改的质量才是。因此,团队将研究是否可以增加自动化测试用例的数量。对于出现的每一个问题,团队都将研究能否在开发过程中通过自动化测试运行来识别其根本原因。对于新代码,他们会考虑测试驱动或行为驱动的开发方法。
他们还将评估有多少代码是自动测试的。这将使更多问题在传播到运行时之前就被发现并修复,从而减少生产环境中出现的问题数量。
2. 改进监控
另一个提出的想法是团队应专注于增加人工监控的投入,以便更快地察觉问题。你之前是否设想过类似或其他的解决方案?
团队决定不增加人工监控的投入,而是另辟蹊径:
订阅 SAP BTP 上与应用相关的所有事件,例如:
所用 SAP BTP 服务的事件,
运行 SAP BTP 账户所依托的基础设施提供商的事件,
所用 SAP BTP 运行时环境的事件。 在这里,你可以查看例如 SAP Cloud ALM ] 和 SAP Alert Notification service for SAP BTP 提供的事件。
确保相关警报通过适当的渠道送达 DevOps 团队。
确保团队能够轻松地从集中式可观测性视图向下钻取到本地可观测性以进行根本原因分析——例如从 SAP Cloud ALM 中的 Health Monitoring 钻取到 SAP Cloud Logging 服务。
这意味着建立一种响应式的工作方式,缩短察觉和修复问题所需的时间。它还会释放原本必须用于主动监控的资源。
3. 减少人工运维工作量
接下来,他们讨论了团队是否围绕人工运维任务寻找优化潜力。你对这个话题有什么看法?
正如你可能已经猜到的那样,团队决定研究需要哪些人工任务来找到根本原因并修复这些问题。
然后,他们将选择可以自动化的人工任务,以便下次出现此类问题时能够自动执行自动化补救——由 SAP Cloud ALM 或其他事件触发。
此外,还将在 SAP Automation Pilot 中创建建议操作,这些操作可以在需要执行相应任务时由 SAP Cloud ALM 触发或手动触发,从而以更少的工作量获得可重复的结果。
对 Rotating Banana 而言,所有这些决策和行动最终为 DevOps 团队带来了更高的满意度,也赢得了客户的赞赏!
小结
现在,你应该已经获得了启发,可以在这段永无止境的旅程中、本着“过程即目标”的儒家箴言精神来优化你的 DevOps 方法。
延伸阅读
本课其余配图






本课其余配图

本课其余配图

本课其余配图
