你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
有关标准化工具和流程的建议
适用于此 Azure Well-Architected 框架卓越运营清单建议:
OE:04 | 遵循行业经过验证的开发和测试做法,优化软件开发和质量保证流程。 为了明确指定角色,请跨组件(如工具、源代码管理、应用程序设计模式、文档和样式指南)标准化做法。 |
---|
本指南介绍有关定义软件开发工具和流程标准的建议。 定义一致的做法可以产生高效的工作负载团队和高质量的工作。 高绩效团队使用经过行业验证的工具和流程来最大程度地减少浪费的工作量和潜在的代码错误。
关键设计策略
优化开发做法的第一步是标准化工具和流程。 如果可能,请使用行业经过验证的解决方案,而不是开发内部解决方案。 若要进一步优化做法,请采用低代码和无代码工具。 这些工具使你能够将精力集中在应用程序上,并帮助你节省时间。 对于标准化的所有工具和流程,请实施培训,以便团队能够有效地理解和使用它们。 若要定义有助于优化开发实践的标准,请考虑以下建议。
使用已知和成熟的现成工具
使用知名和成熟的现成工具并标准化其使用。 高效的工程团队采用一流的工具。 此方法最大程度地减少了开发用于规划、开发、测试、协作以及持续集成和持续交付的解决方案的需求, (CI/CD) 。 许多企业允许开发人员在一些工具之间进行选择,但所有选项都是组织的标准工具,并在内部进行验证。 最重要的是,选择满足工作负载要求的工具。 现成工具应提供以下功能:
工作规划和积压工作管理
版本控制和存储库
CI/CD 管道
测试,例如集成、冒烟、合成用户、模拟、混沌和其他质量测试
代码开发
在某些情况下,一个工具或一套工具可能会提供多个功能。 确保了解工具的功能及其限制,以便它们满足跨函数的要求。
确定是应投资昂贵的工具还是高级版工具。 与高级工具提供的功能相比,请考虑开发自己的解决方案的时间和精力。 考虑一次性成本与定期成本。 在大多数情况下,现成的工具可为团队提供更高的价值。
如果可行,请使用低代码、无代码和 AI 工具。 低代码和无代码工具允许有经验的开发人员轻松插入功能,而无需执行整个代码开发过程,从而节省时间。 这些工具还允许可能未接受过开发人员培训的工作负载团队成员参与工作负荷的操作。 AI 工具可帮助进行代码开发、评审和优化。
标准化分支策略
尽可能选择基于中继的模型。 基于中继的分支使工作负载开发团队保持同步,并鼓励持续交付。 定义分支策略以保护重要分支,如 main 分支。 有关详细信息,请参阅 采用 Git 分支策略 和 分支策略和设置。
评估指标以量化开发有效性
软件开发和质量保证团队只有在能够量化其有效性时才能改进。 为了量化有效性,他们必须确定衡量 开发人员速度 的指标并定义 KPI。 这些指标的示例包括:
部署频率:每个开发人员每天部署的部署数。
提前期:任务或用户情景从积压工作到生产部署所需的时间。
平均解决时间:修复代码中的 bug 或缺陷所用的平均时间。
更改失败率:导致失败的更改百分比。
为了帮助利益干系人和工作负载团队轻松跟踪速度,请使用仪表板或其他报告工具可视化 KPI。
标准化工作负载团队编写、审阅和记录代码的方式
使用样式指南标准化工作负载团队编写、审阅和记录代码的方式。 标准样式使协作变得简单,并有助于新开发人员入职。 为了有效工作,新开发人员需要了解工作负载团队的运作方式。 具有明确定义的标准的风格指南可以简化其训练过程。 在样式指南中,定义开发语言、库、框架和其他约定的标准。
如果可行,请使用工具强制实施代码格式设置标准。 例如,Visual Studio 提供了多种 工具 ,用于扫描代码的样式、质量、可维护性、设计和其他问题。 对于基础结构即代码 (IaC) ,可以使用 Checkov 或 Terrascan for Terraform。
为了确保一致性并避免潜在的混淆,样式指南应包括项目、环境、分支、生成和运行的标准命名约定。
还应为环境中允许的方差程度设置准则和标准。 如果工作负载团队成员想要将新语言、框架或其他技术添加到标准列表,请实施在沙盒或更低环境中使用这些工具的过程。 测试其可行性,并在适当时替换现有技术。
使用体系结构决策记录 (ADR) 来保留工作负载团队的设计决策的历史记录。 ADR 可帮助团队保持对工作负载的全新了解。 它们还帮助新团队成员了解在工作负载生命周期内做出的设计决策。 确保 ADR 受版本控制。
在 ADR 中,包括:
团队选择的特定工具和技术,例如使用 SQL 或 NoSQL。
团队决策的原因。
考虑的其他选项,这有助于将最终决策上下文化。
纳入决策的功能和非功能要求。
决策过程的上下文,例如已解决的问题。
实施解决技术债务的标准
采用技术债务是有意为之,并且对于工作负荷团队的可交付结果是必要的思维模式。 这种思维模式激励团队定期考虑和解决技术债务,以避免积累。 将技术债务作为积压工作中的定期定期任务处理。
例如,假设团队对库进行了标准化。 随着时间的推移,需要切换到不同的库,以获取工作负载中的新功能。 这种过渡可能会导致技术债务。 通常,此类转换可能会让工作负载团队支持两种技术,因为它们无法顺利完全过渡。 工作负荷团队必须优先考虑完成转换,因为当工作负载实现新功能时,利益干系人会感到满意,并且不太可能考虑技术债务。
标准化对项目应用版本控制的方式
标准化对项目应用版本控制的方式,以及如何在内部和外部公开版本控制。 例如,面向客户端的系统应在用户界面中公开其运行版本。 当工作负载团队排查问题时,此方法非常有用,因为客户可以轻松传达他们使用的版本。 REST 接口可以公开某些组件或数据库的版本。 可以在架构的元数据中使用特定表来公开架构版本。
使用行业认可的应用程序 设计模式 ,确保应用程序可靠、高性能且安全。 与为应用程序开发自己的解决方案相比,使用这些模式可以节省时间和精力。 选择有利于工作负荷的模式。 定期查看设计模式,以确保在工作负载发展时使用正确的模式。
实现左移测试方法
通过尽早执行单元测试,并经常在整个开发过程中执行单元测试,实现左移测试方法。 在每个开发环境中频繁测试有助于开发人员对其应用程序充满信心。 若要通过左移方法帮助创建测试策略,请考虑以下原则:
尽可能在最低级别编写测试。 支持具有最少外部依赖项的测试,并在生成过程中运行测试。
编写一次测试,并在包括生产在内的任何位置运行测试。 编写可在每个开发环境中运行的测试,而无需考虑特定于一个环境的因素,例如加密的机密或配置。
设计用于测试的工作负载。 开发应用程序时,请将可测试性作为一项要求。
将测试代码视为应用程序代码。 将相同的质量和开发标准应用于应用程序代码和测试代码。 将测试代码与应用程序代码一起存储。 使用应用程序代码开发和维护测试代码。 若要确保测试的质量,请放弃不可靠的测试。
请考虑基于工作负载所有权的测试所有权。 工作负荷团队拥有其测试,不应依赖其他团队来测试其代码。
尽可能多地自动执行测试。 自动化代码可减轻工作负荷团队的负担,并强制实施一致的质量。
有关实现 DevOps 测试策略的详细指南,请参阅 带单元测试的左移测试。
要求 将 DevSecOps 做法作为标准操作过程的一部分。 工作负荷团队应了解与软件开发和质量保证相关的安全做法。 他们必须毫无例外地遵循这些做法。 有关详细信息,请参阅 安全开发生命周期指南。
实现用于命名和标记资源的标准
实现标记和命名约定是管理和组织 Azure 资源的最佳做法。 标记和命名约定有助于根据通用属性(例如环境、应用程序、所有者或成本中心)识别、分类和分组资源。 它们还可以跨订阅和资源组实现资源的安全性、自动化、报告和治理。
使用标准化标记和命名约定的一些好处包括:
- 它们为资源识别和管理提供一致性和清晰度,有助于跨Azure 门户、PowerShell、CLI 和 API 发现和搜索。
- 它们支持对资源进行筛选和分组,以实现计费、监视、安全性和合规性目的。
- 它们支持资源生命周期管理,例如预配、停用、备份和恢复。
- 它们对于安全目的至关重要。 如果遇到安全事件,必须快速识别受影响的系统、这些系统支持的功能以及潜在的业务影响。
有关为云资源使用命名约定的详细信息,请参阅 定义命名约定。 有关如何将元数据标记应用于云资源的详细信息,请参阅 定义标记策略。
Azure 简化
Azure DevOps 是一系列服务,可用于构建协作、高效且一致的开发实践。 Azure DevOps 捆绑以下解决方案:
Azure Pipelines 提供生成和发布服务来支持应用程序的 CI/CD。
Azure Boards 是一种基于 Web 的工作管理工具,支持 Scrum 和看板等敏捷做法。
Azure Repos是一种版本控制工具,支持 Git 分布式版本控制系统和Team Foundation 版本控制系统。
Azure Test Plans是一种基于浏览器的测试管理解决方案,可提供计划内手动测试、用户验收测试、探索性测试以及收集利益干系人反馈所需的功能。
Azure Artifacts 用于使开发人员能够有效地共享其代码和管理其包。
GitHub Actions for Azure 是一种可用于自动执行 CI/CD 过程的工具。 它直接与 Azure 集成,以简化部署。 可以创建工作流来生成并测试存储库的每个拉取请求,或将合并的拉取请求部署到生产环境。
GitHub Projects 是一种工作管理工具,可用于创建看板、报表、仪表板和其他功能。
低代码和无代码工具包括:
Azure 资源管理器模板和 Bicep 是可用于部署 IaC 的 Azure 本机工具。 Terraform 是另一个 Azure 支持的 IaC 工具,可用于部署和管理基础结构。
Visual Studio 是一款功能强大的开发工具,可与 Azure 集成并支持多种语言。
GitHub Copilot是一种 AI 服务,充当配对程序员,并在编码时提供自动完成样式建议。 Copilot 在 Visual Studio 和其他几个开发工具中作为扩展提供。
Azure 负载测试 是一种完全托管的负载测试服务,可用于通过模拟应用程序的流量来生成大规模负载,而不管应用程序托管在何处。
相关链接
- 采用 Git 分支策略
- 分支策略和设置
- 云设计模式
- 开发人员速度
- 为 Azure 资源开发命名和标记策略
- DevOps 资源中心
- 使用 Azure 和 GitHub 启用 DevSecOps
- 源代码分析概述
- 安全开发生命周期指南
- DevOps (DevSecOps) 中的安全性
- 将测试左移单元测试
- 视频系列:GitHub CoPilot 简介
卓越运营清单
请参阅完整的建议集。
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈