Partager via


API écologiquement durables dans Gestion des API Azure (préversion)

S’APPLIQUE À : Développeur | De base | Standard | Prime

Cet article présente les fonctionnalités de Gestion des API Azure qui vous aident à réduire l’empreinte carbone de votre trafic d’API. Utilisez les fonctionnalités pour ajuster le trafic d’API en fonction des émissions de carbone dans différentes régions Azure.

Note

  • Les fonctionnalités de durabilité environnementale sont actuellement en préversion limitée. Pour vous inscrire, remplissez le formulaire.
  • Ces fonctionnalités sont actuellement disponibles dans certaines régions dans les niveaux Classiques gestion des API Azure (Développeur, De base, Standard, Premium).

À propos des API durables

Les organisations se concentrent de plus en plus sur la réduction de leur impact environnemental par le biais de leur infrastructure numérique.

Gestion des API vous permet d’atteindre ces objectifs avec des fonctionnalités qui vous aident à :

En optimisant la façon dont vos API gèrent le trafic en fonction de facteurs environnementaux, vous pouvez :

  • Réduire les émissions de carbone de votre trafic d’API
  • Soutenir les initiatives de durabilité d’entreprise et les engagements environnementaux
  • Démontrer la responsabilité environnementale aux parties prenantes

Déplacement du trafic

Le déplacement du trafic nécessite la configuration d’une ressource back-end dans une région Azure prise en charge qui fournit des informations sur l’intensité carbone. Ensuite, dans un pool principal à charge équilibrée, spécifiez le niveau maximal d’émission de carbone acceptable pour le back-end régionalisé, à l’aide de l’une des catégories d’intensité carbone.

Cette fonctionnalité, combinée à vos stratégies d’équilibrage de charge et de routage existantes, vous permet d’exclure le trafic vers des back-ends dans des régions avec des émissions de carbone relativement plus élevées.

Au moment de l’exécution :

  • La gestion des API s'efforce d'acheminer le trafic vers les back-ends « verts » (dont les émissions sont inférieures à vos seuils spécifiés) et exclut les back-ends « sales » (dans les régions avec des émissions supérieures aux seuils spécifiés).
  • Gestion des API achemine le trafic vers des back-ends « sales » dans certaines conditions pour garantir la continuité du service , par exemple, lorsque tous les back-ends régionalisés sont « sales » et que d’autres back-ends ne sont pas disponibles.

Diagramme de redirection du trafic vers un back-end avec des émissions plus faibles dans un pool d'équilibrage de charge.

Exemple de configuration

Tout d’abord, configurez un back-end dans une région Azure prise en charge en définissant la propriété facultative azureRegion :

{
    "type": "Microsoft.ApiManagement/service/backends", 
    "apiVersion": "2024-10-01-preview", 
    "name": "sustainable-backend", 
    "properties": {
        "url": "https://mybackend.example.com",
        "protocol": "http",
        "azureRegion": "westeurope",
        [...]
  }
}

Ensuite, utilisez le back-end régionalisé dans un pool à charge équilibrée et définissez le seuil d’émission à l’aide d’une preferredCarbonEmission propriété.

Dans cet exemple, si l’intensité carbone de la westeurope région dépasse Medium, le trafic vers celui-ci sustainable-backend est exclu par rapport aux autres back-ends du 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
                }
            ]
        }
    }
} 

Mise en forme du trafic

La mise en forme du trafic vous permet d’ajuster le comportement de l’API en fonction des niveaux d’émission de carbone relatifs dans la région ou les régions de votre service Gestion des API. Gestion des API expose la context.Deployment.SustainabilityInfo.CurrentCarbonIntensityvariable de contexte, qui indique la catégorie d’intensité carbone actuelle pour votre instance Gestion des API.

Dans les déploiements multirégion, la passerelle fournit l’intensité carbone de la région dans laquelle elle s’exécute.

Utilisez cette variable de contexte dans vos stratégies pour permettre un traitement plus intensif du trafic pendant des périodes d’émissions de carbone faibles ou réduire le traitement pendant les émissions élevées de carbone.

Exemple : Ajuster le comportement dans les périodes d’émissions de carbone élevées

Dans l’exemple suivant, Gestion des API étend les durées de cache, implémente une limitation de débit plus stricte et réduit les détails de journalisation pendant les périodes d’émissions de carbone élevées.

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

Exemple : Propager des informations d’intensité de carbone vers le backend ou dans les logs système

L'exemple suivant montre comment accéder à l'intensité actuelle du carbone et la propager au backend ou dans les logs.

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

Exemple : Ajuster le niveau de verbosité de la traçabilité en fonction de l’intensité carbone

L’exemple suivant montre comment utiliser les informations actuelles sur l’intensité carbone pour ajuster la quantité d’informations propagées dans une trace personnalisée.

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

Disponibilité de la région

Le tableau suivant indique :

  • Régions où les instances des niveaux Classic de gestion des API (Développeur, De base, Standard, Premium) prennent en charge les fonctionnalités de durabilité (après inscription à la préversion)
  • Régions où des informations sur l’intensité des émissions de carbone sont disponibles, par exemple, pour créer des back-ends régionalisés pour le déplacement du trafic
Région Prise en charge de gestion des API Informations sur l’intensité carbone
Australie Centre
Australie Centre 2
Australia East
Australia Southeast
Brazil South
Brésil Sud-Est
Canada Central
Canada Est
Inde centrale
Central US
Chili Central
Asie de l’Est
East US
Est des États-Unis 2
France Centrale
France Sud
Allemagne Nord
Allemagne Centre-Ouest
Indonésie Centre
Israel Central
Italie Nord
Japon Est
Japon Ouest
Jio Inde Centre
Jio Inde Ouest
Korea Central
Sud de la Corée
Malaisie Sud
Mexique Centre
Nouvelle-Zélande Nord
Centre-Nord des États-Unis
Europe Nord
Norvège Est
Norvège Ouest
Pologne Centre
Qatar Central
Afrique du Sud Nord
Afrique du Sud Ouest
États-Unis - partie centrale méridionale
South India
Asie du Sud-Est
Espagne Centre
Suède Centre
Suède Sud
Suisse Nord
Suisse Ouest
Taïwan Nord
Taïwan Nord-Ouest
Taïwan Ouest
Émirats arabes unis Centre
Émirats arabes unis Nord
UK South
UK West
Ouest du centre des États-Unis
Europe Ouest
West India
West US
Ouest des États-Unis 2
Ouest des États-Unis 3

Catégories d’intensité carbone

Le tableau suivant explique les catégories d’intensité carbone utilisées dans les caractéristiques de déplacement du trafic et de mise en forme du trafic. Les valeurs sont en grammes de CO₂e par kWh pour les émissions de portée 2.

Catégorie g CO²e
Non disponible N/A
Très faible ≤ 150
Low 151-300
Moyen 301-500
High 501-700
Très élevé > 700