从熵增到效能:DevOps实施的全局思考与关键实践(二)

开源其实不简单 2024-11-26 21:02:35

作者: Gitee 解决方案专家 徐烈

对于许多传统研发企业而言,DevOps 仍是一个较为新颖的概念,通常被视为业务和产品深度变革的重要手段。如何成功实施 DevOps,成为每个研发团队在追求效能提升时面临的复杂课题。正如前文所述,DevOps 实践可归纳为「道、法、术、器」四个层次,而其中最直观、最易见的便是「器」。然而,真正能带来显著成效的并不仅仅是工具,而是将「道、法、术、器」有机结合起来,确保实施效果的可持续性,并不断优化研发效能。

DevOps的实施过程并非「一步到位」,而是需要在实践中不断尝试、调整、优化,以适应快速变化的业务环境。

选取试点团队:小范围起步,确保全面适配

任何复杂系统的实施都伴随着一定的风险,DevOps 也不例外。由于其覆盖面广、复杂度高,可以说「横看成岭侧成峰,远近高低各不同」。在正式推广之前,慎重选择试点团队至关重要。试点范围应控制在适中规模,既要足够覆盖不同业务类型,又需确保目标明确,因为并非所有团队都适合直接推行DevOps实践。

DevOps的理念源于敏捷与精益方法论,即使部分团队难以完全采用敏捷方式,也可以通过引入精益实践逐步实现效能优化。因此,笔者终认为 DevOps 不过是提升研发效能的一种术语,而非一套固定的流程。

为了确保试点具备广泛的适用性,可以从以下几个角度进行选取:

研发模式:涵盖传统稳态研发与敏捷研发的团队,从而全面验证DevOps的适应性。团队类型:包括自研团队、外包团队以及混合团队,优先选择驻场外包团队以确保高效协作。技术类型:覆盖微服务架构、前后端分离架构及一体化项目,以探索不同技术栈下的实践效果。

通过以上方式的选择,可以确保试点项目的多样性,更全面地了解 DevOps 在不同场景下的适用性和效果。这样的综合考虑可以为实施全面的 DevOps 实践提供更为丰富和有力的经验基础。

试点团队在推进DevOps实践时,需要满足以下要求:

技术能力:具备扎实的技术基础,并对DevOps工具与流程有一定了解,能够快速适应如持续集成和持续交付等实践。多角色分布:成员需包括需求分析、开发、测试、运维等关键角色,至少确保产品经理、开发和测试紧密协作。经验积累:团队应具有一定脚本化或CI/CD工具使用经验,以降低技术门槛。沟通能力:与研发效能团队保持高效协作,快速解决问题。

有了试点团队以后,就需要对试点团队进行深入的调研,使试点团队的工作变得可视化,IT 工作不像生产系统,基本上都是不可见的,虽然我们看到了「部分就绪」,但是无法评估它的就绪程度,同样也很难了解工作量是否使队列溢出,所以可视化工作变得非常重要,它能帮我们回答以下的问题:

目前接受了多少任务,以及是什么任务?哪一个步骤正在积压工作、导致瓶颈以致于链条上的剩余工作无法有效展开?哪个领域的产能潜在存在不足,很快会拖慢其他领域?在我们价值流的哪一个点或阶段,资源几乎被耗尽或是接近于满负荷?哪些任务被阻塞了,以至于无法在这个迭代中完成?未完成的工作有哪些,需优先处理?如果时间有限,哪些任务最值得优先完成,以实现最有价值的结果?

通过分析可视化数据,我们可以精准定位问题所在,并逐步引入适配的工具,提升自动化水平,降低人为操作带来的瓶颈。

试点团队作为 DevOps 实施的第一步,同时也是未来总结和定义 DevOps 实践的关键要素。在选择试点团队时,质量的原则至关重要。试点的成败直接关系到后续是否能够正式大规模推广,因此需谨慎决策,接受逐步适应变化的过程,避免急功近利。

试点团队的经验将为 DevOps 流程、规范和工具的完善提供宝贵反馈。即使试点未能成功,也不应否定 DevOps 的价值,而应总结经验教训,客观分析失败原因,避免将责任归咎于工具本身。通常,DevOps 实施失败的根本原因在于未能找到合适的文化环境。当一个原本重要的项目未能取得预期效果时,不能简单归因于 DevOps,需深入分析文化、组织及沟通等方面的问题。

在此过程中,应保持开放心态,积极看待失败,将其视为学习和改进的机会。成功的 DevOps 实践需要时间与持续努力,只有通过不断调整和优化,才能更好地满足组织需求,最终实现 DevOps 的全面推广和成功实施。

DevOps工具建设:以基础为核心,服务目标需求

正所谓「工欲善其事,必先利其器」,构建一套端到端的 DevOps 工具链是推进实践落地的重要手段。工具链需覆盖从项目管理、持续集成、持续交付到测试与运维的各个环节,服务于产品经理、开发、测试及运维等不同角色,同时满足业务、技术与管理等多层次需求。

工具建设原则

在 DevOps 工具建设中,首先需要清晰理解 DevOps 的「道法术器」体系,其中工具属于「器」,是基础设施。然而,仅有工具的支撑而缺乏相应的文化和规范指导,无法充分发挥其作用。因此,在建设初期,必须考虑如何将文化和规范有效地落地到工具上。在研发效能的「黄金三角」中,工具平台的目标是构建一体化、集成化的效能平台,覆盖软件交付的全生命周期。其核心价值体现在自动化与自助化、场景化与生态化的结合上。

自动化:DevOps 的核心之一是「自动化一切」,这正体现了其精髓「CALMS」框架中的 A(Automation)。研究表明,高效能企业在构建自动化流程、实施自动化测试、创建和部署自动化环境,以及实现自动化监控与可观测性方面,显著优于中低效能企业。自助化:工具平台应支持上下游角色通过平台实现无缝协作。一旦某个角色创建了平台,其他角色应能够按需自助使用,降低对特定角色或个人的依赖,从而提升组织的协作效率。场景化:平台建设需要贴合研发场景,避免通过工具拼凑形成系统。理想的平台应具备良好的用户体验,并结合具体研发场景进行设计,如分层需求管理、分支模式、流水线配置等,满足管理者与工程师的实际需求。生态化:平台建设应避免重复造轮子,注重开放性,推动平台底座与原子能力的分离,减少重复建设和资源内耗,以应对业务复杂性高、规模庞大、场景多样的大型企业需求。

在平台建设初期,不宜追求「大而全」。应从实际研发场景出发,通过试点使用逐步推进,收集反馈,深入理解业务痛点与需求,并通过持续优化和扩展,使平台功能逐步完善,形成滚雪球式的良性发展。

开源与商业 DevOps 工具

关于工具建设,许多人可能会问,我们需要构建哪些工具以及如何构建。DevOps 知识与工具平台 Ledge 曾推出过一份「元素周期表」形式的 DevOps 工具集,涵盖需求管理、代码管理、构建、集成、流水线、发布、运维、容器、云原生等多个环节,列举了众多国外开源软件。

对于研发规模较小的团队,通常建议选择开源软件,组装一套适合自身需求的 DevOps 工具链,实现部分自动化功能。根据 DevOps 的八字环理念,可以在不同阶段选择相应工具。例如:

需求管理:使用 Jira 进行项目管理,Confluence 作为知识库管理工具;代码管理:选择 GitLab 开源版;持续集成:采用 Jenkins;制品管理:使用 Nexus;部署与容器化:通过 Docker 容器实现;监控与反馈:在生产环境中使用 Prometheus 和 ELK 等工具。

利用这些开源工具,可以构建一套覆盖项目管理、代码管理、持续集成与交付、监控运维等环节的集成工具链平台,实现局部的自动化。然而,由于这些开源软件通常由不同组织开发,彼此间的联通性较弱。如果团队缺乏足够的开发能力对开源软件进行二次开发,可能需要接受工具的既有功能,难以完全满足定制化需求。

对于大型组织来说,通常会选择商业化工具来满足 DevOps 建设的需求。例如,Gitee DevOps 作为行业领先的解决方案提供商,不仅涵盖基础功能,还在产品联通性、用户体验、权限管理和组织规范落地等方面提供全面支持,帮助企业实现一体化解决方案,将 DevOps 理念有效落地。对于一般组织而言,在选择商业化 DevOps 工具时,应重点关注以下几个方面:

项目管理的高度配置化能力:工具是否能够根据组织需求,对流程、事项、界面和字段等进行高度自定义,同时支持通过配置脚本定义事项间的联动,以适应复杂多变的业务场景。需求价值流与研发价值流的联动:需求价值流贯穿需求的新建、设计、开发、测试到发布,研发价值流涵盖代码提交、分支创建、编译、测试、部署等环节。工具平台需要实现这两条价值流的无缝衔接,确保状态流转和信息同步自动化。代码管理功能的完善性:需支持门禁控制、代码审查(Code Review)、行间评论和细粒度权限分配,确保代码质量和安全性。流水线的规范落地能力:工具是否支持通过流水线模板定义关键活动节点,并限制删除关键节点的权限,从而将代码扫描、安全检查、单元测试等强制嵌入工具流程中,逐步提升研发交付能力。端到端的度量指标:工具应提供清晰的研发过程价值流图,以识别流程中的等待时间,消除浪费并提升整体效能。工具平台的核心价值与应用场景

工具的核心在于提高一致性与自动化水平。通过构建工具链平台,可以实现以下典型场景:

产品经理将拆解的业务需求分配给研发负责人;研发团队进一步细化任务,并自动创建分支,任务状态自动更新为「开发中」;开发完成后,持续集成流水线自动执行代码扫描、单元测试与编译构建,确保所有步骤通过后自动合并代码并更新任务状态;测试完成后,系统自动晋级制品库,完成从测试到生产的全自动流转;发布环节通过发布流水线完成,最大限度减少人工干预。

如果某环节出错,例如单元测试失败,系统将阻止合并操作并提示开发人员修复问题。这种高度自动化流程允许开发人员专注于编码,测试人员专注于测试,而其他操作由平台自动执行,实现效率与质量的双提升。

实现的关键与持续优化

尽管上述场景看似理想,但实际上完全可以实现。实现这一目标的关键在于提升工具自动化能力,建立可信的组织文化,并逐步强化交付能力。工具作为 DevOps 的重要支柱,其功能完善性直接影响流程的流畅性。

DevOps 并非一成不变,而是一个动态发展的过程。随着技术进步和业务需求变化,企业需要不断调整和优化已实施的实践,确保工具、流程与组织目标保持一致。只有在「道、法、术、器」之间形成良性循环,DevOps 才能真正发挥价值,助力企业在竞争中立于不败之地。

0 阅读:1
开源其实不简单

开源其实不简单

感谢大家的关注