你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
生成新的或更新现有应用程序时,必须考虑解决方案如何影响气候,以及是否有改进和优化的方法。 了解有关优化代码和应用程序的注意事项和建议,以便进行更可持续的应用程序设计。
重要
本文是 Azure Well-Architected 可持续工作负荷 系列的一部分。 如果你不熟悉此系列,我们建议你从 什么是可持续工作负荷开始?
代码效率
对应用程序的需求可能会有所不同,必须考虑稳定利用率的方法,以防止过度或未充分利用资源,这可能导致不必要的能源泄漏。
评估将单体应用程序转为微服务架构
整体式应用程序通常作为一个单元进行扩展,因此很难仅对其中可能需要的各个组件进行扩展。
建议:
- 评估 微服务体系结构 指南。
- 微服务架构允许在高峰负载期间仅扩展必要的组件,确保空闲组件被缩减或闲置。 此外,它可能会降低部署整体应用程序所需的开销和资源。
- 请考虑此权衡:虽然减少了所需的计算资源,但可能会增加网络上的流量,应用程序的复杂性可能会显著增加。
- 请考虑此其他权衡:迁移到微服务可能会导致额外的部署开销,部署管道中有许多相似之处。 仔细考虑整体体系结构与微服务体系结构所需的部署资源。
- 此外,请阅读有关 容器化单体应用程序的信息。
提高 API 效率
许多新式云应用程序旨在异步处理服务和组件之间的许多消息。 请考虑用于编码负载数据的格式。 应用程序需要传达多少信息,并且是否有空间减少聊天?
绿色软件基础的对齐方式: 节能
建议:
- 了解 聊天 I/O 反模式 ,以更好地了解大量请求如何影响性能和响应能力。
- 提高可靠性和减少对系统的不必要的负载。 使用 API 管理实现高级请求限制。
- 通过选择性地对消息进行编码,最大程度地减少应用程序从请求返回的数据量。 请参阅 消息编码注意事项。
- 缓存响应以避免从后端系统重新处理相同类型的信息,除非必要。 请参阅 Azure API 管理中的缓存。
确保向后软件兼容性,确保它在旧硬件上运行
考虑应用程序如何呈现信息。 应用程序是否需要以最高质量提供一切服务,从而导致更高的带宽和处理? 在 UI 中降低组件质量以更好地实现可持续发展目标是否有余地?
绿色软件基础对齐: 硬件效率
建议:
- 支持更多最终用户设备,例如旧版浏览器和操作系统。 这种向后兼容性通过重用现有硬件(而不是要求硬件升级)来提高硬件效率,使解决方案正常工作。
- 请考虑这一权衡:如果最新的软件更新具有显著的性能改进,则使用较旧的软件版本可能不太高效。
利用云原生设计模式
了解云原生设计模式有助于生成应用程序,无论是托管在 Azure 上还是在其他地方运行。 优化云应用程序的性能和成本也会降低其资源利用率,从而减少其碳排放量。
建议:
- 在编写或更新应用程序时,利用 云原生设计模式 。
考虑使用断路器设计模式
请考虑评估和阻止应用程序执行可能失败的操作。 重复失败可能会导致开销和不必要的处理,你可以避免使用适当的设计模式。
绿色软件基础的对齐方式: 节能
建议:
- 断路器可以充当可能失败的操作的代理,并应监视最近发生的故障次数,根据这些信息决定是否继续操作。
- 研究 断路器模式,然后考虑如何将 断路器模式实现 到应用程序。
- 请考虑使用 Azure Monitor 监视故障并设置警报。
优化代码以高效使用资源
使用低效代码部署的应用程序可能会导致对可持续性产生固有影响。
建议:
- 减少 CPU 周期和应用程序所需的资源数。
- 使用优化高效的算法和设计模式。
- 请考虑 不要重复自己 (DRY) 原则。
针对异步访问模式进行优化
对应用程序的需求可能会有所不同,必须考虑稳定利用率的方法,以防止过度或未充分利用资源,这可能导致不必要的能源泄漏。
绿色软件基础的对齐方式: 节能
建议:
- 不需要立即处理的队列和缓冲区请求,然后批量处理。 以这种方式设计您的应用程序有助于实现稳定的使用率,并帮助平滑消耗以避免请求峰值。
- 阅读有关优化 异步访问模式的信息。
服务器端渲染与客户端渲染的评估
使用 UI 生成应用程序时,确定是否在服务器端或客户端上呈现。
建议:
请考虑服务器端渲染的以下优势:
- 当服务器的电源来自于比客户端所在地污染更少的替代能源时。
- 当服务器上的硬件具有更好的处理能力比时。
- 可以使用集中式缓存来减少多个不必要的渲染。
- 当客户端的设备具有丢失链接时,减少浏览器到服务器的往返次数尤其重要。
- 客户端设备较旧且 CPU 速度较慢时。 用户无需升级其设备以支持新式浏览器。
请考虑客户端渲染的以下优势:
- 在最终用户设备更为合适的情况下,将渲染责任转移到客户端。
- 它更高效地只呈现所需内容和请求的内容,而不是至少呈现一次内容。
- 无需服务器,因为可以依赖静态存储。
- 客户端上使用浏览器缓存。
注意 UX 设计的可持续性
考虑工作负荷的 UX 设计如何影响可持续性,并确定哪些选项可用于提高能效并减少不必要的网络负载、数据处理和计算资源。
绿色软件基础的对齐方式: 节能
建议:
- 请考虑减少在页面上加载和呈现的组件数。
- 确定应用程序是否可以呈现分辨率较低的图像和视频。
- 请勿将浏览器执行大小调整的全尺寸图像渲染为缩略图。
- 使用全尺寸图像作为缩略图或缩放图像会因为图像调整大小和预渲染而导致数据传输增多、不必要的网络流量和额外的客户端 CPU 使用率。
- 确保没有未使用的页面有助于最大程度地减少 UX 设计。
- 考虑搜索和可查找性。 让用户更轻松地查找要查找的内容有助于降低存储和检索的数据量。
- 请考虑提供较轻的 UI,使用较少的资源,对可持续性的影响较低,并为用户提供明智的选择。
- 通过以深色模式提供应用和网站来节省能源,带有深色背景。
- 尽可能选择使用系统字体,以避免强制客户端下载其他字体,这会导致更多的网络负载。
更新旧代码
如果旧代码未在现代云基础结构或最新更新上运行,请考虑升级或弃用旧代码。
绿色软件基础对齐: 硬件效率
建议:
- 确定适合现代化化的低效旧代码。
- 查看是否有选项可移动到无服务器或任何优化的 PaaS 选项。
- 请考虑此权衡:更新可能最终弃用的旧代码可能会消耗宝贵的时间。
后续步骤
查看应用程序平台的设计注意事项。