什么是 DevOps 文化?
DevOps 文化如何帮助调整人员、流程和工具,以实现更加统一的客户导向服务。
Tom Hall
DevOps 推广人员和从业人员
DevOps 是实现组织变革的一种敏捷开发方法,旨在弥合孤立团队之间的传统分歧,并建立促进协作的新流程。虽然新工具和敏捷开发工程实践使 DevOps 成为可能,但并不足以实现 DevOps 的优势。没有正确的思维方式、方法和文化,很难实现 DevOps 的全部优势。
人员和文化是成功实施 DevOps 的首要因素。
- Atlassian 2020 年 DevOps 趋势调查
什么是 DevOps 文化?
从本质上讲,DevOps 文化要求开发和运营团队在创建和维护产品期间进行更密切的协作和责任共享。这有助于公司调整人员、流程和工具,以实现更加统一的客户导向服务。
它涉及培养对产品整个生命周期负责的多学科团队。DevOps 团队可以自主工作,并采用软件工程文化、工作流程和工具集,将运营要求提升至与架构、设计和开发同等重要性的水平。开发人员对“谁构建,谁运行”的理解使其能够更接近用户,并更好地了解用户要求和需求。随着运营团队更多地参与到开发过程中,他们可以为获得更好的产品来增加维护要求和客户需求。
DevOps 文化的核心就是提高过去孤立工作的团队之间的透明度、沟通和协作。但要使这些团队更加紧密地结合在一起,还需要完成至关重要的文化转型。DevOps 是一种强调持续学习和持续改进的组织文化转型,尤其是通过团队自主性、快速反馈、高度同理心和信任以及跨团队协作来实现。
相关资料
接受客户至上的理念
相关资料
了解 DevOps 优势
DevOps 要求进行共担责任。开发和运营人员都应该对产品的成败负责。开发人员应当贯彻“谁构建,谁运行”的理念,不仅要完成构建并移交给运营团队,还要共同承担整个产品生命周期内的产品监督责任。他们负责测试和操作软件,并与 QA 和 IT 运营团队进行更密切的协作。当他们理解运营团队所面临的挑战时,他们就更有可能简化部署和维护。同样,当运营团队理解系统的业务目标时,他们就可以与开发人员合作,帮助确定系统的运营需求并采用自动化工具。
自主团队是 DevOps 的另一个重要方面。为了让开发和运营团队进行有效的协作,他们需要在没有繁琐冗长的批准流程的情况下做出决策并执行变更。这涉及团队之间的信任,并要求创造一个不惧失败的环境。这些团队应该拥有适当的流程和工具,以根据客户面临的各种风险等级更快速、更轻松地做出决策。
例如,典型的开发工作流程可能需要来自不同团队的多名贡献者参与才能部署代码变更。开发人员进行代码更改并将其推送到源代码控制存储库,构建工程师则负责构建代码并将其部署到测试环境中,而产品负责人在事务跟踪工具中更新工作状态等。自主团队将利用可自动执行这些流程的工具,这样推送新代码就会触发在测试环境中构建和部署新功能,且事务跟踪工具会进行自动更新。
例如,团队会受到一些要求的限制,如必须和单独的运营团队创建工作单才能完成极小的基础架构变更(如添加新的 DNS 条目)。一项原本只需几秒钟就能完成的任务,结果却要几天或几周的时间才能完成。无论是让团队中拥有适当技能和经验的个人,还是通过访问自助服务工具,自主团队都能够自行实现此类变更。
DevOps 团队文化重视快速反馈,这有助于持续改进统一的开发和运营团队。在开发和运营团队孤立工作的环境中,将应用软件在生产环境中的性能和稳定性反馈信息反馈给开发团队通常很慢(如果有反馈的话)。DevOps 运营人员在设计和实施应用监控和报告策略时进行协作,以确保开发人员能够获得快速反馈,从而快速迭代和改进应用代码。例如,任何功能足够强大的持续集成工具都可以自动构建和测试新的代码推送,并为开发人员提供有关其代码质量的即时反馈。
自动化对 DevOps 文化至关重要,因为它可以实现良好的协作并释放资源。实现软件开发团队和 IT 团队之间的流程自动化和集成可帮助他们更快速、更可靠地构建、测试和发布软件。
DevOps 文化有哪些优势?
接受 DevOps 文化的最明显且最具影响力的好处就是可以实现精简、频繁和高质量的软件发布。这不仅可以提高公司的绩效,还可以提高员工的满意度。
《加速:建立和扩展高绩效技术组织》一书表示,DevOps 文化可以提高信任度和协作水平,从而提高决策质量,甚至提高工作满意度。
实施 DevOps 文化是在不降低员工满意度的情况下构建高绩效工程组织的关键。这是一种双赢。对于工程师来说,没有什么比频繁且轻松地部署和运行稳定、高性能软件更能让用户满意。而对于管理人员来说,其目标就是改进业务成果。
有哪些挑战?
完全接受 DevOps 文化通常需要个人和团队对其工作方式进行重大改变,因此需要组织最高层的支持。
基层努力可能且往往是获得管理层和领导层支持 DevOps 转型的重要起点。少数个人或小团队采用 DevOps 方法并开始取得成功通常是支持进一步普及 DevOps 的最充分理由。
如果所涉及的任何个人或团队之间之前存在过冲突,则很难培养 DevOps 文化中典型的高度自主权和信任感。在尝试采用 DevOps 方法之前,团队的孤立程度越高,就越难建立联系。
变革是一件困难的事。即使在现有个人和团队之间高度和谐的环境中,如果没有清楚地表达和理解变革的优势,也很难让大家接受变革并愿意在工作中做出改变。
可以理解的是,工程思维较强的组织往往会立即使用工具和技术来解决业务挑战。的确,有一些工具和技术可以帮助您的组织过渡到 DevOps 方法。但是,在不改变文化的情况下更高工具和技术通常被称为“货物崇拜型 DevOps”,因为它改变了外观而没有解决基础中的弱点问题。
向 DevOps 文化过渡的注意事项
开放式沟通
DevOps 力求应对的其中一项最基本的挑战就是不同组织单位中的知识、经验和工作的孤立。当编写代码的编程人员与部署和维护代码的系统管理员不进行沟通时,就可能会出现效率低下的问题。
犯错的能力
很多组织、团队和个人都会对自己和对方施加巨大的压力,以求永不犯错。如果失败不是一种选择,那么个人或团队都不太可能会尝试一种新方法来解决问题或开发创新功能。
这种思维方式反映在过去就是沉迷于测量“平均故障间隔时间”(MTTR) 而非“平均恢复时间”(MTTR)。MTBF 使用诸如“根本原因分析”一类的工具来确定故障来源并尝试防止其再次发生。MTTR 反映了将软件应用视为复杂系统(这些系统容易以不可预测的方式出现故障)的观点,并专注于在出现故障时快速恢复。
“无指责的回顾”是 DevOps 文化的共同特征。当冲刺或项目结束时,如果团队在一个开放且安全的环境中开会讨论哪些方面做得好以及哪些方面有待改进,结果就会得到改善。
不指责失败的这一方法之所以行之有效,部分原因在于它采用了一种成长型思维模式,同时承认错误会发生,但在运营时假设个人和组织都能够学习、成长和改进。
- “有效的 DevOps”,作者:Jennifer Davis 和 Katherine Daniels
一组新的流程
培养 DevOps 文化需要使用新方法解决老问题。DevOps 需要改变编程人员编写应用代码并将其“扔”给部署和运营应用的运营团队的孤立流程。DevOps 方法要求开发和运营团队在项目的整个生命周期中协同工作。
持续集成和持续交付 (CI/CD) 通常被认为是 DevOps 文化的所必需的。第三个流程(即持续部署)为 Netflix 等大型组织所采用和推广,但大多数小型公司并未普遍采用(或要求采用)。这是因为在生产环境中持续部署新功能需要高度的自信,确信新代码已经过全面测试并且可以安全地部署(例如:在功能切换后)。因此,除非您的组织每天进行多次部署,否则对支持这种方法的流程进行投资可能并不值得。
多数情况下,进行一些“主干开发”将大大简化您的 CI/CD 工作。在此模型中,团队取消了长期存在的功能分支,并对代码的“主干”分支进行频繁提交。
主干开发的一个重要组成部分就是全面的自动化测试:单元测试、集成测试和回归测试。这有助于确保所有至主干分支的新提交在推送到存储库时都已经过彻底审查。
持续集成是将多个贡献者的代码变更自动集成到软件项目中的流程。这不局限于开发团队,还包括组织的其他部门。例如,产品团队可协调何时按顺序发布功能和修复,以及将由哪些团队成员负责。
持续交付是一种组织方法,它将设计、产品和营销等工程团队和非工程团队结合在一起,以便交付产品。没有 CD 的环境鼓励“各管一摊”的行为,即开发人员将 QA 团队视为主要的用户体验对象。这意味着存储库的“主干”分支始终处于“可部署”状态。
持续部署允许在进行代码变更时将其自动部署到生产环节,此类变更既可隐藏在功能标记后面,部署到一小部分客户中,也可/或是轻松回滚。如此一来,团队便可更灵活地响应不断变化的市场和客户需求,因为团队可以对客户反馈做出反应,并快速部署和验证新功能。他们还可以轻松回滚功能,使团队不会因为构建中断而受阻。
功能标记、功能切换或模糊部署是确保新应用功能在部署到生产环境中时无法呈现或不起作用的常见方法,且能非常轻松地开启。此战略支持持续部署,因为它几乎不会对用户造成不利影响。通常情况下,通过按地理位置对功能进行细分或运行单独的服务器实例,然后将功能只发布给一台用户可访问的服务器,可将功能限制在用户群的某一子集内。
更新的工具链
大多数软件开发团队都至少使用某种类型的版本控制、事务跟踪和应用监控工具。所有这些都是支持 DevOps 文化的重要工具,但对于传统工具集来说,最重要的补充是支持 CI/CD 的软件。拥有可以进行提交、测试和部署的自动化工作流程实际上是获得 DevOps 文化所需的快速反馈的唯一方法。
DevOps — 可带来成效的文化转型
数十年来,开发人员一直在努力实现一个梦想:以更少的精力和更少的缺陷更频繁地交付软件。如今,实现这一梦想的工具和实践终于来了。
Atlassian 发现,实践 DevOps 的组织表示,他们可以提供更高品质的交付成果 (61%),提高部署频率,并缩短上市时间 (49%)。受益的不仅仅是组织,从业人员也表示他们学到了新技能 (78%) 并获得了加薪 (48%)。
培养 DevOps 文化可能具有挑战性,但对开发人员、经理和客户等来说是值得的,因为这种文化可以提高满意度。
是否想改善 DevOps 文化?请从服务团队运行状况监控开始。此外,还可以利用构建 DevOps 文化的四大战略,与同事练习沟通、协作和头脑风暴。
分享此文章
下一主题
推荐阅读
将这些资源加入书签,以了解 DevOps 团队的类型,或获取 Atlassian 关于 DevOps 的持续更新。