Umweltschonende APIs in Azure API Management (Vorschau)

GILT FÜR: Entwickler | Basis | Standard | Premium

In diesem Artikel werden Features in Azure API Management vorgestellt, mit denen Sie den Co2-Fußabdruck Ihres API-Datenverkehrs reduzieren können. Nutzen Sie Funktionen, um den API-Datenverkehr basierend auf CO2-Emissionen in verschiedenen Azure-Regionen anzupassen.

Hinweis

  • Merkmale für nachhaltige Entwicklung befinden sich derzeit in einer limitierten Vorschau. Um sich anzumelden, füllen Sie das Formular aus.
  • Diese Features sind derzeit in ausgewählten Regionen in den klassischen Azure-API-Verwaltungsebenen (Entwickler, Basic, Standard, Premium) verfügbar.

Informationen zu nachhaltigen APIs

Organisationen konzentrieren sich zunehmend darauf, ihre Auswirkungen auf die Umwelt durch ihre digitale Infrastruktur zu reduzieren.

Mit der API-Verwaltung können Sie diese Ziele mit Features erreichen, die Ihnen helfen:

Indem Sie optimieren, wie Ihre APIs Datenverkehr basierend auf Umgebungsfaktoren verarbeiten, können Sie:

  • Reduzieren der Co2-Emissionen Ihres API-Datenverkehrs
  • Unterstützung von Initiativen zur Nachhaltigkeit von Unternehmen und Umweltverpflichtungen
  • Veranschaulichen der Umweltverantwortung für die Beteiligten

Verkehrsumleitung

Die Datenverkehrsverschiebung erfordert das Konfigurieren einer Back-End-Ressource in einer unterstützten Azure-Region, die Informationen zur Kohlenstoffintensität bereitstellt. Geben Sie dann in einem Lastenausgleichs-Back-End-Pool den maximal zulässigen Co2-Emissionswert für das regionalisierte Back-End unter Verwendung einer der Co2-Intensitätskategorien an.

Diese Funktion, kombiniert mit Ihren vorhandenen Lastenausgleichs- und Routingstrategien, hilft Ihnen, den Datenverkehr von Backend-Systemen in Regionen mit relativ höheren CO₂-Emissionen zu umgehen.

Zur Laufzeit:

  • Die API-Verwaltung bemüht sich am besten, Datenverkehr an "grüne" Back-Ends (in Regionen mit Emissionen unter den angegebenen Schwellenwerten) weiterzuleiten und "schmutzige" Back-Ends (in Regionen mit Emissionen über den angegebenen Schwellenwerten) auszuschließen.
  • Die API-Verwaltung leitet Datenverkehr unter bestimmten Bedingungen an "dirty"-Back-Ends weiter, um die Dienstkontinuität sicherzustellen – beispielsweise, wenn alle regionalisierten Back-Ends "dirty" sind und andere Back-Ends nicht verfügbar sind.

Diagramm zur Verlagerung des Datenverkehrs auf ein Back-End mit geringeren Emissionen in einem Pool mit Lastenausgleich.

Konfigurationsbeispiel

Konfigurieren Sie zunächst ein Back-End in einer unterstützten Azure-Region , indem Sie die optionale azureRegion Eigenschaft festlegen:

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

Verwenden Sie dann das regionalisierte Back-End in einem Lastenausgleichspool, und definieren Sie den Emissionsschwellenwert mithilfe einer preferredCarbonEmission Eigenschaft.

In diesem Beispiel wird der Datenverkehr zu westeurope ausgeschlossen, wenn die CO2-Intensität in der Region Mediumsustainable-backend überschreitet, im Vergleich zu den anderen Back-Ends im 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
                }
            ]
        }
    }
} 

Verkehrsgestaltung

Mit der Traffic-Steuerung können Sie das Verhalten Ihrer APIs basierend auf den relativen CO₂-Emissionswerten in der (den) Region(en) Ihres API-Verwaltungsdienstes anpassen. Die API-Verwaltung macht die context.Deployment.SustainabilityInfo.CurrentCarbonIntensityKontextvariable verfügbar, die die aktuelle Co2-Intensitätskategorie für Ihre API-Verwaltungsinstanz angibt.

Bei Bereitstellungen mit mehreren Regionen stellt das Gateway die Co2-Intensität der jeweiligen Region bereit, in der es ausgeführt wird.

Verwenden Sie diese Kontextvariable in Ihren Richtlinien, um eine intensivere Datenverkehrsverarbeitung in Zeiträumen mit geringen Co2-Emissionen zu ermöglichen oder die Verarbeitung bei hohen Co2-Emissionen zu reduzieren.

Beispiel: Anpassen des Verhaltens bei hohen Co2-Emissionsperioden

Im folgenden Beispiel erweitert API-Verwaltung Cachedauern, implementiert eine strengere Begrenzung der Rate und reduziert die Protokollierungsdetails während hoher Co2-Emissionsperioden.

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

Beispiel: Weiterleiten von Informationen zur CO2-Intensität an das Backend oder in Protokollen

Das folgende Beispiel zeigt, wie Sie auf die aktuelle Co2-Intensität zugreifen und sie in das Back-End oder in Protokollen weitergeben.

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

Beispiel: Anpassung der Ausführlichkeit der Nachverfolgung basierend auf der CO2-Intensität

Das folgende Beispiel zeigt, wie Sie die aktuellen Informationen zur CO2-Intensität verwenden, um die Menge der Informationen anzupassen, die in einer benutzerdefinierten Ablaufverfolgung weitergegeben werden.

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

Regionale Verfügbarkeit

Die folgende Tabelle gibt folgendes an:

  • Regionen, in denen Instanzen der klassischen API-Verwaltungsebenen (Developer, Basic, Standard, Premium) Nachhaltigkeitsfeatures unterstützen (nach der Registrierung für die Vorschau)
  • Regionen, in denen Informationen zur Intensität der Co2-Emissionen verfügbar sind, z. B. zum Erstellen regionalisierter Back-Ends für die Verkehrsverschiebung
Region API-Verwaltungsunterstützung Informationen zur Kohlenstoffintensität
Australia Central ✅
Australien Central 2 ✅
Australia East ✅ ✅
Australia Southeast ✅ ✅
Brasilien Süd ✅ ✅
Brasilien, Südosten ✅
Canada Central ✅
Canada East ✅ ✅
Zentralindien ✅ ✅
Central US ✅ ✅
Chile Zentral ✅
Ostasien ✅
East US ✅ ✅
Ost-USA 2 ✅ ✅
Frankreich, Mitte ✅
France South ✅ ✅
Germany North ✅
Deutschland West Central ✅ ✅
Indonesien Zentral ✅
Israel Central ✅ ✅
Italy North ✅ ✅
Japan, Osten ✅ ✅
Japan West ✅ ✅
Jio Indien Mitte ✅
Jio India West ✅ ✅
Korea Central ✅
Korea South ✅
Malaysia Süd ✅
Mexiko Zentral ✅ ✅
Neuseeland, Norden ✅ ✅
Nord-Mittel-USA ✅
Nordeuropa ✅ ✅
Norway East ✅ ✅
Westnorwegen ✅
Poland Central ✅ ✅
Qatar Central ✅ ✅
Südafrika Nord ✅ ✅
Südafrika, Westen ✅
Süd-Mittel-USA ✅
South India ✅ ✅
Südostasien ✅
Spain Central ✅ ✅
Schweden, Mitte ✅ ✅
Schweden Süd ✅
Switzerland North ✅ ✅
Switzerland West ✅ ✅
Taiwan North ✅ ✅
Taiwan Nordwest ✅
Taiwan, Westen ✅
UAE Central ✅
Vereinigte Arabische Emirate, Norden ✅ ✅
UK South ✅ ✅
UK West ✅ ✅
Zentraler Westen der USA ✅ ✅
West Europe ✅ ✅
West India ✅
West US ✅ ✅
Westliches USA 2 ✅ ✅
Westliches USA 3 ✅ ✅

Co2-Intensitätskategorien

In der folgenden Tabelle werden die Co2-Intensitätskategorien erläutert, die in den Merkmalen der Verkehrsverlagerung und der Verkehrsgestaltung verwendet werden. Die Werte liegen in Gramm CO² pro KWh für die Bereichsemissionen 2.

Kategorie g CO²e
Nicht verfügbar. N/A
SehrNiedrig ≤ 150
Low 151-300
Mittelstufe 301-500
High 501-700
Sehr hoch > 700