你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

优化人员时间的建议

适用于此 Azure Well-Architected 框架成本优化清单建议:

CO:13 优化人员时间。 使人员在任务上花费的时间与任务的优先级保持一致。 目标是在不降低结果的情况下减少任务花费的时间。 优化工作应包括最小化噪音、缩短生成时间、高保真调试和生产模拟。

本指南介绍优化人员时间的建议。 此优化是一个战略过程,可最大程度地提高员工在工作时间设计、实施和操作工作负载的工作效率。 它涉及调整他们的技能、优势和任务的方式,以确保他们花在工作中的每一小时都得到最有效的利用。 目标是消除浪费的人员潜力和能力。 未能优化人员时间可能会导致员工倦怠、竞争优势降低和生产力下降。

定义

术语 定义
噪音 不相关或误导性信息,可能会分散对实际问题或趋势的注意力。
Signal 有意义的相关信息,可深入了解系统或应用程序的行为和性能。
技术债务 在开发过程中,为了更快地交付代码而故意采用的累积低效、不理想的设计选项或快捷方式。

关键设计策略

人员通常会在工作负载中产生最大的费用。 人员成本和价值突出了高效时间管理的重要性。 本指南介绍如何最大限度地发挥每小时工作的潜力。 鉴于员工不能全天工作,重点在于确保每个人在指定时间内都更有效,或在缩短的时间范围内同样有效。 目标是更好地利用他们的时间,以利于个人和工作负载。

设置优化目标

设置人员时间优化目标是建立明确、可衡量的目标的过程。 这些目标用作对任务和函数进行所需改进的指南。 可以使用这些基准针对目标评估结果。 首先,定义用于衡量人员时间优化工作是否成功的指标。 确定要通过优化实现的特定目标。 示例目标可能是减少管理任务花费的时间,或减少响应客户查询所需的时间。 若要设置人员时间优化的目标,请考虑以下策略:

  • 选择定量指标:选择与目标一致且可以准确测量的指标。 考虑时间节省、生产力提高、效率改进和任务完成时间等指标。

  • 收集定性指标:除了定量指标外,还收集人员的反馈,以衡量他们对角色的满意度。 此反馈可以提供有关人员时间优化工作对员工士气和参与度的影响的宝贵见解。

  • 设置目标:为每个所选指标设置现实和可实现的目标。 这些目标应基于当前性能级别和所需的改进级别。

优化开发时间

优化开发涉及优化软件开发流程,以实现更高的效率。 因此,开发人员可以投入更多时间来优化功能、在特定工作负载的约束内进行创新,以及解决工作负载带来的任何独特挑战。

保持功能精简

设计和自定义功能时,请保持其精简和简单。 避免不必要的复杂性和配置选项,这些选项可能会增加开发、测试和维护工作负载所需的时间。 使工作负载保持简单且专注,可随时间推移更轻松地进行适应性和优化。

缩短生成时间

缩短生成时间是最大程度地减少编译和生成部署所需的时间的过程。 较短的生成时间使开发人员能够减少等待生成完成的时间,并允许他们专注于编写代码和交付功能。 缩短生成时间还有助于确保开发人员更快地收到有关其代码更改的反馈。 更快的反馈使他们能够更快地迭代和修复问题,从而支持敏捷开发模型。 更快的生成时间有助于更频繁的生成,使团队能够采用敏捷开发做法,例如持续集成和持续交付 (CI/CD) 。 下面是减少生成时间的一些策略:

  • 优化生成配置:查看生成配置设置,并消除在生成过程中增加开销的不必要的步骤或过程。 检查点生成并将部分生成与预生成组合在一起有助于缩短生成时间并提高效率。 此方法使你能够重复使用以前生成的组件并仅生成必要的部件,从而缩短生成时间并减少时间投资。

  • 并行化生成任务:确定可以同时运行的任务,并将生成系统配置为并行运行它们。 利用可用的计算资源。

  • 使用缓存:缓存依赖项、中间生成项目和其他可重用组件,以避免后续生成过程中的冗余工作。

  • 使用增量生成:若要避免不必要的重新编译,请实施允许生成系统仅重新生成自上一生成以来更改的部署部分的技术。

  • 分发生成过程:如果适用,将生成过程分发到多个计算机或生成代理,以使用并行度并减少总体生成时间。

  • 优化基础结构:确保生成环境有足够的资源(例如 CPU、内存和磁盘 I/O)来处理生成。

使用生产模拟

通过模拟组件或服务,开发人员可以通过模拟依赖项来隔离其代码,以便进行重点测试。 模拟使开发人员能够创建在实际生产环境中难以重现或不切实际的特定方案和边缘案例。 它可以加快测试周期,促进并行工作,并消除故障排除依赖项。 下面是实现生产模拟的一些方法:

  • 模拟框架:使用专用模拟框架或库,使你能够创建模拟对象、存根或假对象来替换依赖项。

  • 依赖项注入:将应用程序设计为使用依赖项注入,这样就可以在测试或调试期间轻松地用模拟对象替换实际依赖项。

  • 服务虚拟化:使用服务虚拟化工具或技术模拟外部服务或 API 的行为。 这样,开发人员无需访问实际服务即可测试集成。

  • 配置驱动的模拟:实现一种配置驱动方法,在此方法中,可以通过配置设置或标志修改应用程序的行为,以根据需要启用模拟。

  • 动态和条件模拟:将应用程序设计为支持动态和条件模拟,使开发人员能够根据特定条件或方案在真实组件和模拟组件之间切换。

优化开发环境

目标是让开发人员快速获得有关更改的反馈。 进行必要的技术更改,以改善开发体验。

容器化:考虑将工作负载容器化以在本地运行。 容器可帮助开发人员在本地复制生产环境并快速测试其更改。 它们可实现更快的迭代和调试,从而获得更高效的开发过程。 容器还提供一致且隔离的环境来运行应用程序。 最后,它们支持轻松缩放和部署应用程序。

开发人员工作站:最佳开发人员工作站应具有合适的集成开发环境 (IDE) 。 良好的开发人员工作站可提高开发人员效率,减少各种任务所需的时间和资源。 良好的 IDE 提供针对编程语言定制的代码补全和语法突出显示。 它还应支持 Git 等版本控制。 装备精良的 IDE 使开发人员能够在开发过程中快速查明和修复问题,从而缩短调试时间。

开发人员环境:开发人员的环境不应受到过分的限制。 开发人员应具有完成任务所需的权限,且不受不当限制,以便他们能够高效有效地工作。

优化预生产环境

通常,预生产环境越接近生产环境,节省的时间就越多。 这种增强的一致性还有助于最大程度地降低风险。 两个环境越接近,在将版本部署到生产环境之前,越能测试和验证版本的功能和性能。 环境中的这种相似性有助于尽早识别和解决任何问题或瓶颈,从而降低生产环境中出现问题的风险。

权衡图标权衡:需要平衡人员时间与资源成本。 环境离生产环境越近,成本就越高。

重用组件和库

可重用的组件和库可以为开发人员节省大量时间。 开发人员无需编写、测试和调试代码,而是可以重用经过验证的组件和库,并更快地开发或修复应用程序功能。 请务必为每个组件或库提供文档。 将代码和文档存储在具有版本控制(如 GitHub)的中央存储库中。

此外,使用包管理器(如 NuGet 或 Maven)中提供的受信任发布者提供的开源软件或库。 这些包管理器为访问和管理库提供了一个集中且可靠的源。 使用包管理器提供的受信任库可以进一步提高工作效率,并减少开发和维护代码所花费的时间。

消除技术债务

消除技术债务对于维护健康高效的代码库至关重要。 通过遵循特定标准并实施质量入口等机制,可以有效地解决技术债务问题并提高代码的整体质量。 下面介绍如何将本指南纳入方法:

  • 分配解决技术债务的时间:将开发团队的一部分时间用于解决技术债务。 一个很好的起点是将团队大约 20% 的时间专门用于解决技术债务问题。 利用专用时间,开发人员可以专注于重构、代码清理和提高代码库的整体质量。

  • 为开发团队提供支持:允许开发团队拥有技术债务解决的优先顺序。 开发团队最适合识别需要关注的代码库领域,并了解技术债务对工作负载功能的影响。 鼓励团队内部的开放式沟通和协作,以确保有效解决技术债务。

  • 优先级:根据技术债务项对工作负载功能的影响确定其优先级。 专注于解决对工作负荷的性能、可维护性和可伸缩性影响最大的问题。 通过有效地确定优先级,可以最大限度地发挥消除技术债务的努力的效果。

消除技术债务是一个持续的过程。 这需要积极主动的方法和开发团队的持续努力。 通过设置并遵守代码库中的特定标准并实现质量入口等机制,可以有效地解决技术债务问题,并创建更简洁、更易于维护的代码库:

  • 设置编码标准:建立明确且具体的编码标准,为代码库定义所需的结构、样式和最佳做法。 这些标准应涵盖命名约定、代码格式、文档和错误处理等领域。 通过遵守这些标准,可确保整个代码库的一致性和可读性。

  • 实现质量关卡:质量入口是一种机制,用于强制实施定义的编码标准,并在开发过程的早期捕获潜在问题。 它们可以包括自动代码评审、静态代码分析工具和持续集成管道。 通过将质量入口集成到开发工作流中,可以在代码质量问题成为技术债务之前识别并解决它们。

优化人员协作

优化人员协作是增强团队动态、沟通和知识共享的过程。 目标是防止误解、重复工作和浪费时间。 它涉及打破孤岛、修订不必要的标准、创建共享知识存储库以及投资相关培训。 有效的协作减少了重复的错误,并最大限度地利用团队的集体专业知识。 若要优化人员协作,请考虑以下策略:

  • 消除孤岛:孤岛可能会导致缺乏共享知识以及不必要的任务复制。 跨职能协作可以节省时间并改进结果。 打破部门或团队之间的障碍,促进部门间合作。 促进跨部门会议、研讨会和联合项目。 鼓励跨团队开放沟通渠道。

  • 优化标准:不必要的标准可能会导致浪费时间和资源,而不会带来更好的结果。 评估、改进或消除不会增加价值但会增加工作负载的标准或协议。 定期评审标准和协议。 从基层员工处获取反馈。 如果某个标准没有增加价值,请考虑取消或修改它。

  • 创建共享知识存储库:共享知识库可防止重复错误、辅助训练并减少搜索信息所花费的时间。 开发一个集中位置,让所有成员都可以访问集体知识并参与其中。 使用知识管理工具,定期更新存储库,并激励团队成员的贡献。

  • 投资培训:对流程、工具和项目的培训进行大量投资。 这样做可确保在人们开始参与项目之前满足基线要求。 确保团队接受既定标准和流程方面的培训,使他们能够在定义的准则内高效工作。 团队成员应接受这些标准和流程方面的培训,这样他们就不会浪费精力自行识别他们。

优化流程

优化流程涉及优化工作流,以消除不必要的步骤、减少手动工作量以及简化角色和更改管理。 此增强功能可确保任务更高效。 简化的流程减少了任务所需的时间和资源。 缩短时间可以提高工作效率并节省资金。 若要优化流程,请考虑以下建议:

  • (SDLC) 方法优化软件开发生命周期:采用最佳 SDLC 有助于以更少的开销实现高质量。 评估当前的 SDLC 方法,并考虑更高效的替代方案。 探索并采用 Scrum、看板或瀑布图等方法。 定期重新评估所选框架以提高效率,同时认识到 SDLC 本质上是协作的。

  • 按角色优化:定义的角色可确保明确职责和期望,并提高效率。 了解和定义每个角色的要求,例如,包括开发人员和解决方案架构师。 若要扩展团队,应了解每个角色在硬件、许可证和访问权限方面的需求。

  • 简化变更管理:积极接受变革可确保更顺畅的过渡和更好的结果。 使实现更改的过程顺利且被接受。 培养积极参与而不是抵制的文化。 通过指导和持续学习促进变革采用。 以建设性的方式适应变化。

优化操作任务

优化工作负载操作任务是使作业任务更快、更直接的过程。 目标是简化活动以提高效率并确保最有效地使用资源。 这种简化可确保任务以更少的错误、干扰和延迟完成。 它可以节省人员时间,从而加快决策制定速度、缩短故障排除持续时间,并整体提高效率并节省成本。 若要优化操作任务,请考虑以下策略。

降低噪声与信号比率

区分信号与噪声对可观测性至关重要,因为它使团队能够专注于其系统和应用程序的最关键方面。 筛选出干扰可帮助团队做出明智的决策、解决问题并更快地优化工作负载。 更高效、更快速地识别和解决问题,可降低人员成本。

若要区分信号与干扰,需要定义明确的目标和指标。 确定与工作负荷相关的关键绩效指标 (KPI) 和指标。 为每个指标建立阈值或范围,以指定正常行为以及应标记为异常的内容。 使用监视工具收集数据并实时跟踪定义的指标,并确定指示潜在问题或改进领域的模式。

确定可操作见解的优先级。 专注于指向工作负载下降的见解,并确定其优先级,以便进行进一步调查或操作。 根据反馈定期查看和更新监视策略。

使用高保真调试

高保真调试 是指准确诊断和修复软件应用程序中的问题的能力。 可以深入了解应用程序在运行时的行为和状态。 高保真调试对于有效的软件开发和故障排除至关重要。 通过高保真调试,开发人员可以更精确地重现和分析问题,从而减少修复 bug 所需的时间和精力。 了解应用程序的行为使开发人员能够更快地做出明智的决策,以提高代码质量。

  • 使用调试工具:使用功能丰富的调试器,可全面了解应用程序的执行流、变量和内存状态。

  • 启用详细的日志记录和跟踪:使用日志记录和跟踪语句检测代码,以在运行时捕获相关信息。 这样做有助于诊断问题。

  • 分析错误消息和堆栈跟踪:仔细检查错误消息和堆栈跟踪,以了解导致问题的事件的上下文和序列。

增强技术支持

提高技术支持操作的效率和有效性。 减少重复出现的问题可节省时间并提高用户满意度。 识别重复出现的支持问题,通过支持影子集成工程和支持团队,并采用 IT 经典部署模型流程来减少总体支持负载。

从事件中学习

分析事件可以防止重复发生并缩短反应时间。 利用过去的事件作为学习机会,供将来改进。 执行追溯以分析事件、识别改进的操作和联系协议,并通过全面的日志和指标增强系统可观测性。

实现可靠的治理

标准化可以减少错误和返工,以确保一致的质量和成本优化。 在组织内加强合规性和标准化。 自动执行合规性检查,并倡导标准化解决方案、体系结构和蓝图。 若要简化决策,请尽量减少不符合组织约束或 SLA 的选项。

优化人员技能

更好的技能可以提高效率和减少错误。 投资开发和改进团队技能。 若要优化人员技能,请考虑以下建议:

  • 技能提升:确保团队成员具备基本的成本优化和监视技能。 提供用于动手学习和技能开发的沙盒环境。 鼓励团队成员获得认证,并与经验丰富的同事一起推广影子。

  • 工具:熟练使用工具是优化任务并获得成本管理的宝贵见解的关键技能。 确保人员精通基本工具,并能够适应新的工具。 优先熟悉关键工具,尤其是与监视相关的工具。 培训人员从系统各个层的数据中提取有意义的见解,强调有效监视与成本管理之间的联系。

  • 一致的专业知识:根据员工的技能和专业知识将员工与任务匹配。 利用其优势并相应地分配任务,以最大限度地提高效率。

Azure 简化

设置优化目标Azure DevOps 提供了一套用于定义目标、选择指标和设置目标的工具。 它提供工作项跟踪、仪表板和报告功能等功能。 它还提供源代码管理、持续集成、持续交付和项目管理功能。 通过使用 Azure DevOps,团队可以自动执行流程、有效协作并减少手动工作量。

优化开发时间:Azure 提供各种工具和功能来优化开发人员时间,包括:

  • 开发环境:Azure 以多种形式提供开发环境,例如 Microsoft Dev Box,后者提供安装开发人员工具的 Windows 和 Linux VM。 Microsoft 还提供用于容器化开发和Azure 容器注册表的 Docker VM,从而实现 Docker 生成。

  • 与 Azure DevOps 集成:Azure 与 Azure DevOps 集成,以提高工作效率并简化开发流程。

  • IDE 集成:Azure 提供与 Visual Studio 和 Visual Studio Code 等常用开发工具的 IDE 集成。 此集成使开发人员能够无缝使用 Azure 服务。

  • 标准 SDK 和库:Azure 为所有 Azure 服务提供标准 SDK 和库。 这些 SDK 和库使开发人员能够重复使用代码,并减少集成和实现 Azure 服务所需的时间。

  • 快速入门模板和示例:Azure 提供可加速开发过程的快速入门模板和示例。

  • 包管理器和标准库:Azure 支持包管理器并提供标准库,如 NuGet 包管理器。 它们可以简化开发,并帮助开发人员减少在实现常见功能上花费的时间。

  • 开源支持:Azure 具有支持开源技术的强大生态系统,因此开发人员可以使用现有的开源工具和框架来优化他们的时间。

Azure 提供的这些功能和工具可帮助开发人员节省时间并提高开发工作流的工作效率。

优化操作任务:Azure 支持基础结构即代码 (IaC) 功能,使你能够使用代码定义和管理基础结构。 这样做有助于降低复杂性并提高系统的适应性。

Azure Monitor 是一项全面的监视服务,可让你了解 Azure 上应用程序和基础结构的性能和运行状况。 可以使用它收集遥测数据、设置警报和获取实时见解。 使用 Azure Monitor 可以主动识别和解决问题。 它使你能够减少在故障排除上花费的时间。

Azure 自动化提供了一种在 Azure 上自动执行手动重复任务的方法。 可以使用它来创建和管理 Runbook,这些 Runbook 是用于执行特定任务的说明集。 通过自动执行日常任务,可以节省时间并腾出人员专注于更关键的活动。

优化人员技能:Microsoft 提供了一套全面的 培训 材料和活动。 培训面向开发人员、架构师和业务利益干系人。

成本优化清单

请参阅完整的建议集。