本文中所述的解决方案可帮助你为 Azure 上托管的应用程序创建可持续性模型。 模型使用代理,随后可用于对应用程序的碳排放影响和效率进行评分。 此评分称为“软件碳排放强度 (SCI)”评分。 它为测量应用程序的碳排放变化提供了基线。
体系结构
下载此体系结构的 Visio 文件。
数据流
- 配置用于计算 SCI 评分的应用程序数据源。 数据可以是 Azure 门户中碳优化边栏选项卡提供的排放度量值,也可以是来自非 Microsoft 源或系统的代理度量值。
- 将碳排放数据导出到数据湖。
- 使用 Azure Functions 或 Azure 逻辑应用等事件处理程序来计算 SCI 评分。 排放量是每单位排放的碳量(以克为单位),其中单位指的是应用程序刻度因子,或基于代理的类似刻度因子。
- 使用 Azure Functions、逻辑应用或 Azure 自动化 runbook 等技术来触发对应用程序的需求调整或启动应用程序的预定义生态模式。
- 使用 Power BI 报告和显示评分及一段时间后的变化。
组件
- Azure 门户中的碳优化边栏选项卡提供资源组级别的 Azure 工作负载的碳排放度量值。
- Cloud for Sustainability API 提供碳优化的基础数据。 可以使用它检索订阅的排放信息。
- Application Insights 是 Azure Monitor 的一项功能,提供应用程序性能管理(APM)。 它可以帮助你深入了解人们如何使用你的应用。 可以利用此知识做出提高应用程序效率的数据驱动型决策。
- Azure Blob 存储存储 Azure 碳优化、自定义计算或其他排放代理的排放信息。
- Azure Data Lake 是一个集中式存储库,它以原始形式引入和存储大量数据。 然后,可以处理数据并用于满足各种分析需求。
- Azure 逻辑应用可用于创建和运行自动化工作流,几乎可以不使用任何代码。 通过使用可视化设计器并从预生成的操作中进行选择,可以快速创建一个工作流来集成和管理代理源、数据存储和效率计算系统。
- Azure Functions 可用于运行小型代码单元。 它根据需求自动缩放资源,只需为实际执行时间付费。 可以使用它进行可持续性计算,并将其存储在 Blob 存储或数据湖中。
- Azure 自动化通过 Runbook 提供进程自动化。 可以使用 Runbook 通过 PowerShell 代码实现复杂的逻辑,从而帮助应用程序提高效率。 此服务还可以通过减少错误和运营成本来增加业务价值。
- Power BI 可以将数据转化为提供实时见解的分析和报表。
备选方法
本文中所述的 Azure 服务可以替换为类似的服务。 若要提高现有资源的密度和使用率,请使用环境中部署的 Azure 服务或工具,以对基础结构影响最小的方式进行计算:
- 可以将 Power BI 仪表板替换为 Azure Monitor 工作簿或 Azure 托管 Grafana 服务。
- 可以将 Application Insights 替换为任何其他应用程序性能管理(APM)工具,例如 Elasticsearch 应用程序性能管理(APM)或 OpenAPM。
- 表形式的数据或非结构化数据可以保留在任何记录系统中,例如 MySQL 或 MariaDB,或者 Azure Cosmos DB 和 MongoDB。
- 如果你有正在运行的 Azure Functions 或逻辑应用空间,则可以从现有部署定期运行计算。
- 如果应用程序资源分布在多个资源组中,则可以使用标记关联成本数据并计算应用程序排放的碳量。
方案详细信息
此体系结构旨在从 Azure 和其他源收集碳优化数据,以便全面了解应用程序的环境影响。 从 Azure 碳优化收集数据。 对于非 Azure 环境,代理用于检索相关的碳排放指标。 合并数据后,将执行 SCI 计算以评估总体碳足迹。 然后,结果将存储在Azure 存储帐户或 Data Lake 中,以便长期保留,从而启用 BI 分析和历史报告。 这种方法可确保集中跟踪各个基础设施的碳排放影响,并支持战略可持续性工作。
碳排放信息部分从 Azure 门户碳优化边栏选项卡中收集,并尽可能部分通过代理计算。
出于两个主要原因,必须使用单独的体系结构来收集 Azure 碳优化数据:
- 仅存储并(在滚动窗口中)显示过去 12 个月的 Azure 碳优化数据。 当需要长期跟踪碳足迹时,专用系统可确保保留详细的历史信息。
- 应用程序可能涵盖多个基础结构,Azure 仅充当一个组件。 通过单独的体系结构,可以集中监视所有环境中的碳排放影响,以提供整体视图,并确保提供更全面的可持续性见解。
注意
温室气体不只由二氧化碳组成,它们对环境的影响并不相同。 例如,1 吨甲烷与 80 吨二氧化碳的热效应相同。 在本文中,所有物质都标准化为 CO2 当量指标。 所有对碳的引用均指 CO2 当量。
数据源
通常,应创建一个包含少量变量的代理公式。 选择的代理指标应代表应用程序的行为和性能。
此示例使用这些指标:
- 从碳排放 API 中检索到的基础设施的碳排放。 此 API 是 Azure 门户中排放影响仪表板和碳优化边栏选项卡的来源。 数据在资源组级别可用,因此可以更轻松地跟踪应用程序的碳排放。
- 从 Application Insights 收集的应用程序的性能和缩放指标:
- 应用程序的缩放因子(API 调用、服务器请求或其他指标)
- CPU 使用率
- 内存使用率
- 响应时间(发送和接收)
有关如何设置 Application Insights 获得所需指标的教程,请参阅适用于 ASP.NET Core 应用程序的 Application Insights。
可以在公式中添加其他变量,例如:
- 边缘服务和基础结构碳排放。
- 用户连接时间,因为电力生产量和电力需求量会随时间变化。
- 应用程序的任何其他指标,这些指标可以说明应用程序的性能如何随时间变化。
通过将还可反映用户数的此公式生成到评分中,可以生成最接近的碳排放评分。 此评分是为实现应用程序可持续性而进行任何进一步更改和改进的基准。
成本是与应用程序性能相关的另一个考虑因素。 在大多数情况下,可以在性能效率和成本与碳减排之间建立直接的关联。 这种关联会产生以下假设:
- 当性能较高但成本相同时,你已经优化了应用并减少了碳排放量。
- 当成本减少但性能相同时,你已经优化了应用并减少了碳排放量。
- 当性能和成本均增加时,你尚未优化应用,并且增加了碳排放量。
- 当成本增加但性能降低或相同时,你尚未优化应用并增加了碳排放量(或者能源成本更高,这也是导致碳排放量增加的原因)。
应用程序的 SCI 评分、成本和性能之间的这种关联对每个应用程序都独一无二,并且取决于许多因素。 通过收集这三个变量的数据,可以创建一种关联算法,以便预测这三个变量的任何变化,并对应用程序体系结构和模式做出明智的决策。
“新建命名集”
在此处所述的方案中,无法为所使用的代理形成离散计算。 而是首先处理从排放影响仪表板中收集的数据。 下面是 SCI 基线计算:
SCI = C*R
在此公式中:
C
是应用程序的碳排放量。 此值受应用程序在 Azure 上的部署方式的影响。 例如,如果所有应用程序资源都在一个资源组中,则C
是此资源组的碳排放量。注意
目前,应用程序的其他排放源将被忽略,因为它们依赖于体系结构和边缘/用户行为。 如果将代理用于数据,则可以在下一步中考虑这些源。
R
是应用程序的刻度因子。 此值可以是该时段的平均并发用户数,也可以是 API 请求数、Web 请求数或其他指标。 此值很重要,因为它会产生一个评分,考虑应用程序使用情况的总体影响,而不仅仅是其部署内存占用情况。
当然,时段是此计算的另一个重要方面:任何耗能设备或系统的碳排放量随时间而变化,因为能源网可能在某些时候有可再生能源或替代能源(例如太阳能),但在某些时候没有。 因此,必须从最短的时段开始提高精度。 例如,可以开始按每日或每小时计算。
碳排放 API 目前在资源组级别根据订阅中的服务提供每月碳排放信息。 通过使用提供的 REST API,可以将排放数据导出到数据湖,用于保存应用程序的所有可持续性数据。
数据存储
应存储可连接到仪表板或报表的解决方案中收集的碳和碳代理信息。 这样便可以在一段时间内显示碳排放评分并做出明智的选择。 为了提高可持续性并与 Azure 良好架构框架最佳做法保持一致,建议使用最小可行系统。 (有关详细信息,请参阅 Azure 上的可持续工作负荷的数据和存储设计注意事项,以及 Azure 上可持续工作负荷的应用程序平台注意事项。此体系结构中使用 Azure Data Lake Storage。
数据关联
开始收集有关应用程序的碳排放、性能和成本数据时,你将获得有价值的信息,以便创建特定于应用程序的关联算法,并在规划成本、性能和碳优化时提供指导。
有关详细信息,请参阅如何为 Azure 机器学习选择算法。
数据显示
可以通过各种方式显示数据和计算,包括自定义的 Azure Monitor 仪表板和简单的 Power BI 仪表板。
SCI 评分会触发什么?
知道可持续性评分后,你可能想知道如何改进它。
如果可以使用代理为应用程序的碳排放影响评分,下一步是专注于定义可由评分中的不利条件触发的操作。 不利条件示例如下:
- 能源生产和需求一直处于高位,因此生产成本高昂。
- 电力不可用。 这种情况可能由自然灾害或地缘政治冲突引起。
- 资源消耗过度或供应链问题导致边缘基础结构突然不可用。
确定可能影响应用程序的故障点后,可以决定采取哪些措施来使应用程序在碳排放达峰后降低碳排放。
可采取以下操作之一:
按照《良好架构框架》文档中所述,对应用的服务和功能进行正常降级。
创建应用程序的生态模式版本。 生态模式是一种更简单、更小、更便宜、更可持续的应用程序版本,可提供最少的功能。 可以在碳排放峰值期间还原到此版本。 还可以简单地根据选择培训最终用户使用生态版本。 可以提供一个“绿色按钮”,让用户能够使用更精简的界面、更少的图形和有限的功能,以换取减少碳排放量。
如果选择涉及你的用户,则可以创建一个机会来推动文化变革以及技术变革:-你可以指定选择的影响:“通过使用生态版本,你可以节省 x 个碳量”或“将我们的碳分数提高到 y 量”。- 你可以了解用户行为,并修改生态版本以反映他们的选择。 (也许他们使用 10% 的功能,是生态版的理想用户。- 由于完整版本已针对排放进行优化,因此最好最终合并这两个版本。
注意事项
这些注意事项实施 Azure 架构良好的框架的支柱原则,即一套可用于改善工作负荷质量的指导原则。 有关详细信息,请参阅 Microsoft Azure 架构良好的框架。
安全性
安全性针对蓄意攻击及滥用宝贵数据和系统提供保障措施。 有关详细信息,请参阅安全性支柱概述。
为了提高安全性,可以使用 Azure 虚拟网络服务终结点删除对 Azure 服务资源的公共 Internet 访问,仅允许来自虚拟网络的流量。
如果使用此方法,可以在 Azure 中创建虚拟网络,并为 Azure 服务创建专用服务终结点。 然后,将这些服务限制为来自该虚拟网络的流量。 也可以通过网关从本地网络访问这些资源。
请记住,若要将数据从本地移动到Azure 存储,需要允许来自本地或 Azure ExpressRoute 的公共 IP 地址。 有关详细信息,请参阅将专用 Azure 服务部署到虚拟网络。
有关设计安全解决方案的通用指导,请参阅 Azure 安全性文档。
成本优化
成本优化就是减少不必要的费用和提高运营效率。 有关详细信息,请参阅成本优化支柱概述。
可以使用多种替代 Azure 服务来部署此体系结构。 故意将其保持最低,以节省成本和减少碳排放量。
虽然我们鼓励你使用应用程序部署中已有的等效服务,但定价信息适用于每个体系结构组件:
排放影响仪表板、Azure 碳优化和 Microsoft 成本管理报表免费。
性能效率
性能效率是指工作负荷能够以高效的方式扩展以满足用户对它的需求。 有关详细信息,请参阅性能效率要素概述。
此体系结构主要通过对成本和碳排放影响最小的方式为应用程序提供可持续性评分。 大多数组件都是平台即服务 (PaaS) 和无服务器 Azure 服务,可根据使用情况和流量独立缩放。
此本例中,仪表板和存储界面不适用于大规模使用和查询。 如果计划将其提供给大量用户,可能需要考虑以下选项之一:
- 转换提取的数据并存储在不同的系统中,以将其解耦。
- 将 Data Lake Storage 或 Azure 表存储替换为更具可缩放性的数据结构替代方案,例如 Azure Cosmos DB。
作者
本文由 Microsoft 维护, 它最初是由以下贡献者撰写的。
主要作者:
- Paola Annis | 首席客户体验工程经理
- Davide Bedin | 高级云解决方案架构师,应用程序创新
其他参与者:
- Chad Kittel | 首席软件工程师
要查看非公开的 LinkedIn 个人资料,请登录到 LinkedIn。
后续步骤
本文符合绿色软件基金会的原则和方法。 创建更绿色的应用程序的下一步是将碳排放感知 SDK 嵌入应用程序,以便在满足特定碳排放条件时实时自动执行触发器。
有关优化 Azure 工作负载的建议,请参阅“可持续性云工作负载指南”。