Compartir a través de


API ecológicas en Azure API Management (versión preliminar)

SE APLICA A: Developer | Básico | Estándar | Premium

En este artículo se presentan características de Azure API Management que le ayudan a reducir la huella de carbono del tráfico de API. Use las características para ajustar el tráfico de API en función de las emisiones de carbono en diferentes regiones de Azure.

Nota:

  • Las características de sostenibilidad ambiental se encuentran actualmente en versión preliminar limitada. Para registrarse, complete el formulario.
  • Estas características están disponibles actualmente en regiones seleccionadas en los niveles clásicos de Azure API Management (Desarrollador, Básico, Estándar, Premium).

Acerca de las API sostenibles

Las organizaciones se centran cada vez más en reducir su impacto ambiental a través de su infraestructura digital.

API Management le permite lograr estos objetivos con características que ayudan a:

Mediante la optimización del modo en que las API controlan el tráfico en función de los factores del entorno, puede hacer lo siguiente:

  • Reducción de las emisiones de carbono del tráfico de API
  • Apoyo a iniciativas de sostenibilidad corporativa y compromisos medioambientales
  • Demostrar la responsabilidad ambiental a las partes interesadas

Cambio de tráfico

El cambio de tráfico requiere configurar un recurso de back-end en una región de Azure compatible que proporcione información de intensidad de carbono. A continuación, en un grupo de back-end de carga equilibrada, especifique el nivel máximo aceptable de emisión de carbono para el back-end regionalizado, utilizando una de las categorías de intensidad de carbono.

Esta funcionalidad, combinada con las estrategias de equilibrio de carga y enrutamiento existentes, le ayuda a excluir el tráfico a los back-end en regiones con emisiones de carbono relativamente mayores.

En tiempo de ejecución:

  • API Management realiza un mejor esfuerzo para enrutar el tráfico a back-end "verde" (en regiones con emisiones por debajo de los umbrales especificados) y excluye los back-end "sucios" (en regiones con emisiones por encima de los umbrales especificados).
  • API Management enruta el tráfico a back-end "sucios" en determinadas condiciones para garantizar la continuidad del servicio; por ejemplo, cuando todos los back-end regionalizados son "sucios" y otros back-end no están disponibles.

Diagrama de redirección del tráfico a un back-end con bajas emisiones en el grupo con de carga equilibrada.

Ejemplo de configuración

En primer lugar, configure un back-end en una región de Azure compatible estableciendo la propiedad 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",
        [...]
  }
}

A continuación, utilice el backend regionalizado dentro de un pool con balanceo de carga y defina mediante una preferredCarbonEmission propiedad el umbral de emisión.

En este ejemplo, si la intensidad del carbono en la región westeurope supera Medium, se excluye el tráfico a sustainable-backend en comparación con los demás back-ends del grupo.

{
    [...]
    "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
                }
            ]
        }
    }
} 

Modelado del tráfico

El modelado del tráfico le permite ajustar el comportamiento de la API en función de los niveles relativos de emisión de carbono en la región del servicio API Management (o regiones). API Management expone la context.Deployment.SustainabilityInfo.CurrentCarbonIntensityvariable de contexto, que indica la categoría de intensidad de carbono actual para la instancia de API Management.

En los despliegues multirregionales, el gateway proporciona la intensidad de carbono de la región correspondiente donde se ejecuta.

Use esta variable de contexto en sus políticas para permitir el procesamiento de tráfico más intensivo durante períodos de emisiones de carbono bajas o reducir el procesamiento durante las emisiones de carbono elevadas.

Ejemplo: Ajuste del comportamiento en períodos de emisiones de carbono elevadas

En el ejemplo siguiente, API Management amplía las duraciones de caché, implementa una limitación de velocidad más estricta y reduce los detalles del registro durante períodos de emisión de carbono elevados.

<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>

Ejemplo: Propagación de la información sobre la intensidad de carbono al backend o en los registros

En el ejemplo siguiente se muestra cómo acceder a la intensidad de carbono actual y propagarla al back-end o en los registros.

<policies>
    [...]
    <outbound>
        <base />
        <set-header name="X-Sustainability-CarbonEmission" exists-action="override">
            <value>@(context.Deployment.SustainabilityInfo.CurrentCarbonIntensity.ToString())</value>
        </set-header>
    </outbound>
    [...]
</policies>

Ejemplo: Ajustar el nivel de detalle del seguimiento en función de la intensidad del carbono

En el ejemplo siguiente se muestra cómo usar la información de intensidad de carbono actual para ajustar la cantidad de información propagada en un seguimiento 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>

Disponibilidad de regiones

En la tabla siguiente se indica lo siguiente:

  • Regiones en las que las instancias de los niveles clásicos de API Management (Desarrollador, Básico, Estándar y Premium) admiten características de sostenibilidad (después de registrarse para obtener una versión preliminar)
  • Regiones en las que está disponible información sobre la intensidad de las emisiones de carbono, por ejemplo, para crear infraestructuras regionalizadas para redirigir el tráfico de datos.
Región Compatibilidad con API Management Información de intensidad de carbono
Centro de Australia
Centro de Australia 2
Australia East
Australia Southeast
Sur de Brasil
Sudeste de Brasil
Canada Central
Este de Canadá
Centro de la India
Central US
Centro de Chile
Este de Asia
East US
Este de EE. UU. 2
Centro de Francia
Sur de Francia
Norte de Alemania
Centro-oeste de Alemania
Centro de Indonesia
Israel Central
Norte de Italia
Japón Oriental
Oeste de Japón
JIO de India central
Jio India Occidental
Centro de Corea del Sur
Corea del Sur
Sur de Malasia
Centro de México
Norte de Nueva Zelanda
Centro-norte de EE. UU.
Norte de Europa
Norway East
Oeste de Noruega
Centro de Polonia
Qatar Central
Norte de Sudáfrica
Oeste de Sudáfrica
Centro-sur de EE. UU.
South India
Sudeste Asiático
Centro de España
Centro de Suecia
Sur de Suecia
Norte de Suiza
Switzerland West
Norte de Taiwán
Noroeste de Taiwán
Oeste de Taiwán
Centro de Emiratos Árabes Unidos
Norte de Emiratos Árabes Unidos
UK South
UK West
Centro-oeste de EE. UU.
West Europe
West India
West US
Oeste de EE. UU. 2
Oeste de EE. UU. 3

Categorías de intensidad de carbono

En la tabla siguiente se explican las categorías de intensidad de carbono usadas en las características de cambio de tráfico y modelado del tráfico. Los valores se encuentran en gramos de CO₂e por KWh para las emisiones de alcance 2.

Categoría g CO₂e
No disponible N/A
Muy bajo ≤ 150
Low 151-300
Media 301-500
High 501-700
MuyAlto > 700