Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
APLICA-SE A: Desenvolvedor | Básico | Padrão | Premium
Este artigo apresenta recursos no Gerenciamento de API do Azure que ajudam a reduzir o volume de carbono do tráfego de API. Use os recursos para ajustar o tráfego de API com base nas emissões de carbono em diferentes regiões do Azure.
Observação
- Atualmente, as funcionalidades de sustentabilidade ambiental estão em uma prévia limitada. Para se inscrever, preencha o formulário.
- Atualmente, esses recursos estão disponíveis em regiões selecionadas nas camadas clássicas do Gerenciamento de API do Azure (Desenvolvedor, Básico, Standard, Premium).
Sobre APIs sustentáveis
As organizações estão cada vez mais focadas em reduzir seu impacto ambiental por meio de sua infraestrutura digital.
O Gerenciamento de API permite que você alcance essas metas com recursos que ajudam:
- Redirecionar e balancear o tráfego da API para regiões de back-end com base na intensidade de carbono
- Moldar o tráfego de API com base nas emissões de carbono na região do serviço de Gerenciamento de API
Ao otimizar como suas APIs lidam com o tráfego com base em fatores ambientais, você pode:
- Reduzir as emissões de carbono do tráfego de API
- Apoiar iniciativas de sustentabilidade corporativa e compromissos ambientais
- Demonstrar responsabilidade ambiental às partes interessadas
Mudança de tráfego
A mudança de tráfego requer a configuração de um recurso de back-end em uma região do Azure com suporte que fornece informações de intensidade de carbono. Em seguida, em um pool de back-end com balanceamento de carga, especifique o nível máximo aceitável de emissão de carbono para o back-end regionalizado, usando uma das categorias de intensidade de carbono.
Essa funcionalidade, combinada com suas estratégias de balanceamento de carga e roteamento existentes, ajuda você a excluir o tráfego para back-ends em regiões com emissões de carbono relativamente maiores.
Durante o tempo de execução
- O Gerenciamento de API faz um melhor esforço para rotear o tráfego para back-ends "verdes" (em regiões com emissões abaixo dos limites especificados) e exclui back-ends "sujos" (em regiões com emissões acima dos limites especificados).
- O Gerenciamento de API roteia o tráfego para back-ends "sujos" em determinadas condições para garantir a continuidade do serviço - por exemplo, quando todos os back-ends regionalizados estão "sujos" e outros back-ends não estão disponíveis.
Exemplo de configuração
Primeiro, configure um back-end em uma região do Azure com suporte definindo a propriedade opcional azureRegion :
{
"type": "Microsoft.ApiManagement/service/backends",
"apiVersion": "2024-10-01-preview",
"name": "sustainable-backend",
"properties": {
"url": "https://mybackend.example.com",
"protocol": "http",
"azureRegion": "westeurope",
[...]
}
}
Em seguida, utilize o back-end regionalizado em um pool balanceado por carga e defina o limiar de emissão utilizando a propriedade preferredCarbonEmission.
Neste exemplo, se a intensidade de carbono na região westeurope exceder Medium, o tráfego para o sustainable-backend é excluído em comparação com os outros back-ends no pool.
{
[...]
"properties": {
"description": "Load balancer for multiple backends",
"type": "Pool",
"pool": {
"services": [
{
"id": "<sustainable-backend-id>",
"weight": 1,
"priority": 1,
"preferredCarbonEmission": "Medium"
}
{
"id": "<regular-backend-id>",
"weight": 1,
"priority": 1
}
{
"id": "<fallback-backend-id>",
"weight": 1,
"priority": 2
}
]
}
}
}
Modelagem de tráfego
A formatação de tráfego permite ajustar o comportamento da API com base nos níveis relativos de emissão de carbono na região (ou regiões) do serviço de Gerenciamento de API. O Gerenciamento de API expõe a context.Deployment.SustainabilityInfo.CurrentCarbonIntensityvariável de contexto, que indica a categoria de intensidade de carbono atual para sua instância de Gerenciamento de API.
Em implantações de várias regiões, o gateway fornece a intensidade de carbono da respectiva região em que ele é executado.
Use essa variável de contexto em suas políticas para permitir um processamento de tráfego mais intensivo durante períodos de baixas emissões de carbono ou reduzir o processamento durante altas emissões de carbono.
Exemplo: ajustar o comportamento em períodos de alta emissão de carbono
No exemplo a seguir, o Gerenciamento de API estende as durações de cache, implementa uma limitação de taxa mais rigorosa e reduz os detalhes de registro em log durante períodos de alta emissão de carbono.
<policies>
<inbound>
<base />
<choose>
<when condition="@(context.Deployment.SustainabilityInfo.CurrentCarbonIntensity == CarbonIntensityCategory.High)">
<!-- Policies for high carbon emission periods -->
<cache-store duration="3600" />
<rate-limit-by-key calls="100" renewal-period="60" counter-key="@(context.Request.IpAddress)" />
<set-variable name="enableDetailedLogging" value="false" />
</when>
<when condition="@(context.Deployment.SustainabilityInfo.CurrentCarbonIntensity == CarbonIntensityCategory.Medium)">
<!-- Policies for medium carbon emission periods -->
<cache-store duration="1800" />
<rate-limit-by-key calls="200" renewal-period="60" counter-key="@(context.Request.IpAddress)" />
<set-variable name="enableDetailedLogging" value="true" />
</when>
<otherwise>
<!-- Policies for low carbon emission periods -->
<cache-store duration="900" />
<rate-limit-by-key calls="300" renewal-period="60" counter-key="@(context.Request.IpAddress)" />
<set-variable name="enableDetailedLogging" value="true" />
</otherwise>
</choose>
<!-- Use the logging variable elsewhere -->
<choose>
<when condition="@(context.Variables.GetValueOrDefault<bool>("enableDetailedLogging"))">
<log-to-eventhub logger-id="detailed-logger">
@{
return JObject.FromObject(context).ToString();
}
</log-to-eventhub>
</when>
<otherwise>
<log-to-eventhub logger-id="basic-logger">
@{
var log = new JObject();
log["requestId"] = context.RequestId;
log["method"] = context.Request.Method;
log["url"] = context.Request.Url.ToString();
log["statusCode"] = context.Response.StatusCode;
return log.ToString();
}
</log-to-eventhub>
</otherwise>
</choose>
</inbound>
[...]
</policies>
Exemplo: Propagar informações de intensidade de carbono para back-end ou em logs
O exemplo a seguir mostra como acessar a intensidade de carbono atual e propagar para o back-end ou nos logs.
<policies>
[...]
<outbound>
<base />
<set-header name="X-Sustainability-CarbonEmission" exists-action="override">
<value>@(context.Deployment.SustainabilityInfo.CurrentCarbonIntensity.ToString())</value>
</set-header>
</outbound>
[...]
</policies>
Exemplo: ajustar o nível de detalhamento de rastreamento com base na intensidade de carbono
O exemplo a seguir mostra como usar as informações atuais de intensidade de carbono para ajustar a quantidade de informações propagadas em um rastreamento personalizado.
<policies>
[...]
<inbound>
<base />
<choose>
<when condition="@(context.Deployment.SustainabilityInfo.CurrentCarbonIntensity >= CarbonIntensityCategory.High)">
<trace source="Orders API" severity="verbose">
<message>Lead Created</message>
</trace>
</when>
<otherwise>
<trace source="Orders API" severity="information">
<message>Lead Created</message>
</trace>
</otherwise>
</choose>
</inbound>
[...]
</policies>
Disponibilidade de região
A tabela a seguir indica:
- Regiões em que as instâncias nas camadas Clássicas de Gerenciamento de API (Developer, Basic, Standard, Premium) dão suporte a recursos de sustentabilidade (após a inscrição para visualização)
- Regiões em que informações sobre a intensidade das emissões de carbono são disponibilizadas, por exemplo, para criação de back-ends regionalizados para redirecionamento de tráfego.
| Região | Suporte ao Gerenciamento de API | Informações de intensidade de carbono |
|---|---|---|
| Austrália Central | ✅ | |
| Austrália Central 2 | ✅ | |
| Leste da Austrália | ✅ | ✅ |
| Sudeste da Austrália | ✅ | ✅ |
| Sul do Brasil | ✅ | ✅ |
| Sudeste do Brasil | ✅ | |
| Canadá Central | ✅ | |
| Leste do Canadá | ✅ | ✅ |
| Índia Central | ✅ | ✅ |
| EUA Central | ✅ | ✅ |
| Chile Central | ✅ | |
| Ásia Oriental | ✅ | |
| Leste dos EUA | ✅ | ✅ |
| Leste dos EUA 2 | ✅ | ✅ |
| França Central | ✅ | |
| Sul da França | ✅ | ✅ |
| Norte da Alemanha | ✅ | |
| Centro-oeste da Alemanha | ✅ | ✅ |
| Indonésia Central | ✅ | |
| Israel Central | ✅ | ✅ |
| Norte da Itália | ✅ | ✅ |
| Leste do Japão | ✅ | ✅ |
| Oeste do Japão | ✅ | ✅ |
| Jio Índia Central | ✅ | |
| Jio Índia Ocidental | ✅ | ✅ |
| Coreia Central | ✅ | |
| Sul da Coreia | ✅ | |
| Sul da Malásia | ✅ | |
| México Central | ✅ | ✅ |
| Norte da Nova Zelândia | ✅ | ✅ |
| Centro-Norte dos EUA | ✅ | |
| Europa Setentrional | ✅ | ✅ |
| Leste da Noruega | ✅ | ✅ |
| Oeste da Noruega | ✅ | |
| Polônia Central | ✅ | ✅ |
| Catar Central | ✅ | ✅ |
| Norte da África do Sul | ✅ | ✅ |
| Oeste da África do Sul | ✅ | |
| Centro-Sul dos EUA | ✅ | |
| Sul da Índia | ✅ | ✅ |
| Sudeste Asiático | ✅ | |
| Espanha Central | ✅ | ✅ |
| Suécia Central | ✅ | ✅ |
| Sul da Suécia | ✅ | |
| Norte da Suíça | ✅ | ✅ |
| Oeste da Suíça | ✅ | ✅ |
| Norte de Taiwan | ✅ | ✅ |
| Noroeste de Taiwan | ✅ | |
| Oeste de Taiwan | ✅ | |
| EAU Central | ✅ | |
| Norte dos EAU | ✅ | ✅ |
| Sul do Reino Unido | ✅ | ✅ |
| Oeste do Reino Unido | ✅ | ✅ |
| Centro-oeste dos EUA | ✅ | ✅ |
| Oeste da Europa | ✅ | ✅ |
| Índia Ocidental | ✅ | |
| Oeste dos EUA | ✅ | ✅ |
| Oeste dos EUA 2 | ✅ | ✅ |
| Oeste dos EUA 3 | ✅ | ✅ |
Categorias de intensidade de carbono
A tabela a seguir explica as categorias de intensidade de carbono usadas nos recursos de mudança de tráfego e modelagem de tráfego. Os valores são expressos em gramas de CO₂e por KWh para emissões de escopo 2.
| Categoria | g CO₂e (gramas de CO₂ equivalente) |
|---|---|
| Não disponível | N/A |
| Muito Baixo | ≤ 150 |
| Low | 151-300 |
| Medium | 301-500 |
| High | 501-700 |
| VeryHigh | > 700 |