拥抱 DevOps 文化

已完成
使开发团队和运营团队能够本着协作、共担责任和主人翁精神进行合作,不断改进其系统设计和流程。

DevOps 是一个实践社区,在其中,观点和技能的多样性推动同一个使命的实现。 团队必须营造一个共享知识的协作环境,而不是进行孤立的学习。 使用共享功能来努力克服资源约束。

良好的 DevOps 文化因共同责任而蓬勃发展。 开发团队和运营团队应将其目标和优先级与客户的期望保持一致,并牢记业务重点。 开发团队应该让运营团队参与反馈循环,以便向上游推动改进,并使其他团队平等受益。 相反,运营团队负责通过共享与工作负荷相关的资源和反馈来使开发团队成功获得业务成果。

同时,DevOps 实践对每个团队应用了明确的所有权和责任线。 无论应用程序在何处运行,工作负荷团队都对该应用程序负责。

DevOps 优化运营任务,使其高效但不繁琐。 为了充分发挥 DevOps 的优势,该文化应该通过技术来优化流程,并为组织中的人员提供促进透明通信的流程。

示例场景

Contoso 的人力资源 (HR) 部门正在启动一个项目,开发一个新的业务线 (LOB) 应用,供其部门内部使用。 该应用目前处于规划阶段,尚未开始任何设计或实施工作。

高效协作

使用通用系统和工具来促进用于通信和进度跟踪的协作环境。

通用工具和流程可实现透明的通信。 开发团队和运营团队都受益于各种环境的态势感知、常见的支持问题以及总体挑战和胜利。

如果发生事件,则团队能够从容地应对,因为已经熟悉现有的升级路径。

共享积压工作 (backlog) 可以使优先事项(例如开发新功能或修复 bug)变得清晰。

Contoso 的挑战

  • Contoso 有三个将参与新应用的开发和维护的技术团队:开发团队、测试团队和运营团队。 目前,这些团队还没有一致使用的标准通信和项目跟踪工具。
  • 从历史上看,每个团队都可以选择自己喜欢的工具。 有些团队使用 Slack 进行内部消息传送,而另一些团队则使用 Microsoft Teams 来这样做。 有些团队使用 Azure DevOps (ADO) 来跟踪任务,另一些团队则使用 Excel 来这样做。每个团队都使用与其他团队不同的文档存储库来共享知识和事件响应过程。
  • 在过去的项目中,由于使用不同的工具,整个技术组织在通信和协作方面遇到了困难。 展望未来,Contoso HR 希望提高工作效率并避免可能减慢项目进度的情况(如之前遇到的情况)。

应用方法和成果

  • 技术团队的领导已与项目发起人会面,选择未来将使用的标准工具。 小组已选择 ADO 来管理其积压工作 (backlog)、代码存储库和部署管道。 他们还选择 Microsoft Teams 进行通信和协作。
  • 使用一组通用工具,开发、运营和测试团队就可以随时了解各种环境的状态、常见项目问题和团队成就,并与之保持同步。 此外,在发生事件时,团队可以从一个众所周知的位置访问有关已建立的升级路径的信息。
  • 共享积压工作 (backlog) 还有助于统一规划优先级并与之保持一致,例如开发新功能或修复 bug。

接受持续改进

在整个开发周期内养成持续学习和试验的心态。 支持跨团队的知识共享并维护文档以方便重复使用。 进行无过失分析并汇报发布后审查和/或事件后审查。

通过 A/B 测试和开发概念证明等试验机制,你可以鼓励创新,同时降低成本。

通过协作共享知识,使团队精通设计方法、工具和流程。

在项目结束后进行回顾有助于确定需要改进的领域并庆祝成功。

Contoso 的挑战

  • 为了进一步促进信息共享并培养协作和透明的文化,团队希望有一个集中且易于访问的项目文档事实来源。 除此之外,如果新开发人员加入团队并需要快速跟上项目的进度,这将很有帮助。
  • Contoso HR 特别感兴趣的是希望确保从影响应用程序可用性的事件中获得经验教训并在整个技术组织中共享这些经验教训,以便处理未来的事件并尽可能防止其再次发生。
  • 为了避免重复过去设计应用程序用户体验时出现的错误,团队还希望使用更敏捷的方法,使他们能够考虑真实的用户反馈。

应用方法和成果

  • 团队在 ADO 中构建了一个知识共享 Wiki,其中的所有设计规范都将与所有活动的运营过程、事件响应计划和回顾性成果一起发布。
  • 在事件和每次开发迭代之后进行无过失回顾,并在 Wiki 中记录经验教训,这样可以帮助项目团队确定需要改进的领域并庆祝成功。
  • 团队采用了一种探索性方法来设计新应用程序的用户体验,利用 A/B 测试从 UX 顾问提出的几种变体中找到最佳的用户体验,并考虑用户反馈来做出数据驱动型决策。

编纂开发和运营过程

为所有开发和运营过程设置标准,并定期审查和验证它们。 这些过程包括日常任务、带外流程、应急演练和情况、工具选择、监视过程、技能计划,甚至包括与利益干系人的通信和客户披露内容。 做出有意且明确的决定。

标准增加了运营的可预测性,并使流程和实践具有可伸缩性。 验证标准是找出改进点的好方法。

通过定期进行演习,为紧急情况和恢复情况做好准备。

精准执行并启用治理以防止导致风险的异常情况。

Contoso 的挑战

  • 过去影响开发团队工作效率和输出质量的挑战之一是代码库缺乏标准化和一致性。 例如,命名约定不统一或通用软件模式的使用不统一,导致团队成员难以理解彼此的代码,从而影响了效率。
  • 此外,如果没有正确记录的通用运营方法,运营人员可能会使用不同的方法来实现相同的目标,导致效率低下和混乱。
  • 受到成功实施其他 DevOps 改进的激励,Contoso HR 决定在下一个开发周期中解决此问题。

应用方法和成果

  • 开发团队在开发周期中聚集在一起,商定一套要实施的开发标准。 他们会记录所做的选择,并开始在代码评审期间通过工具强制执行它们。 他们研究的主题如下:代码格式设置和命名约定、错误处理、版本控制和安全实践。 团队计划密切关注 ADO 中生成的质量指标和报表,以量化这些更改对质量和工作效率的影响,这样他们就可以向管理团队证明这些类型的 DevOps 改进的价值。
  • 同样,运营团队会在同一时期投入时间来扩展其现有的日常管理和故障排除实践文档,并将其发布在 Wiki 中。 展望未来,Wiki 将作为单一事实来源,节省用于搜索信息的时间和精力。

知识检查

1.

以下哪一项是运营团队和开发团队使用一组通用工具的好处?

2.

以下哪项是建立持续学习和试验心态的示例?

3.

判断正误:Contoso 的工具集缺乏标准化。