Azure API Management'ta çevre dostu API'ler (önizleme)

ŞUNLAR IÇIN GEÇERLIDIR: Geliştirici | Temel | Standart | Premium

Bu makalede, Azure API Management'ta API trafiğinizin karbon ayak izini azaltmanıza yardımcı olan özellikler tanıtılır. Api trafiğini farklı Azure bölgelerindeki karbon emisyonlarına göre ayarlamak için bu özellikleri kullanın.

Uyarı

  • Çevresel sürdürülebilirlik özellikleri şu anda sınırlı önizleme aşamasındadır. Kaydolmak için formu doldurun.
  • Bu özellikler şu anda Azure API Management klasik katmanlarında (Geliştirici, Temel, Standart, Premium) belirli bölgelerde kullanılabilir.

Sürdürülebilir API'ler hakkında

Kuruluşlar, dijital altyapıları aracılığıyla çevre üzerindeki etkilerini azaltmaya giderek daha fazla odaklanmaktadır.

API Management, aşağıdakilere yardımcı olan özelliklerle bu hedeflere ulaşmanızı sağlar:

  • API trafiğini karbon yoğunluğuna göre arka uç bölgelerine yeniden yönlendirme ve yük dengelemesi yapma
  • API Management hizmetinizin bölgesindeki karbon emisyonlarına göre API trafiğini şekillendirme

API'lerinizin çevresel faktörlere göre trafiği işleme şeklini iyileştirerek şunları yapabilirsiniz:

  • API trafiğinizin karbon emisyonlarını azaltma
  • Kurumsal sürdürülebilirlik girişimlerini ve çevresel taahhütleri destekleme
  • Paydaşlara çevre sorumluluğunu gösterme

Trafik kaydırma

Trafik kaydırma, desteklenen bir Azure bölgesinde karbon yoğunluğu bilgileri sağlayan bir arka uç kaynağı yapılandırmayı gerektirir. Ardından yük dengeli arka uç havuzunda, karbon yoğunluğu kategorilerinden birini kullanarak bölgeselleştirilmiş arka uç için kabul edilebilir maksimum karbon emisyon düzeyini belirtin.

Bu özellik, mevcut yük dengeleme ve yönlendirme stratejilerinizle birlikte, görece daha yüksek karbon emisyonu olan bölgelerde arka uçlara gelen trafiği dışlamanıza yardımcı olur.

Çalışma zamanında:

  • API Management, trafiği "yeşil" arka uçlara yönlendirmek için en iyi çabayı gösterir (belirtilen eşiklerinizin altındaki emisyonlara sahip bölgelerde) ve "kirli" arka uçları (belirtilen eşiklerin üzerindeki emisyonlara sahip bölgelerde) dışlar.
  • API Management, hizmet sürekliliğini sağlamak için belirli koşullar altında trafiği "kirli" arka uçlara yönlendirir( örneğin, tüm bölgeselleştirilmiş arka uçlar "kirli" olduğunda ve diğer arka uçlar kullanılamaz olduğunda).

Yük dengeli havuzda trafiği daha düşük emisyona sahip bir arka uca kaydırma diyagramı.

Yapılandırma örneği

İlk olarak, isteğe bağlı özelliğini ayarlayarak azureRegion bir arka uç yapılandırın:

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

Ardından, yük dengeli bir havuzda bölgeselleştirilmiş arka ucu kullanın ve bir preferredCarbonEmission özelliği kullanarak emisyon eşiğini tanımlayın.

Eğer westeurope bölgesindeki karbon yoğunluğu Medium'i aşarsa, sustainable-backend'ye olan trafik, havuzdaki diğer arka uçlarla karşılaştırıldığında dışlanır.

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

Trafik şekillendirme

Trafik şekillendirme, API Management hizmetinizin bölgesindeki (veya bölgelerindeki) göreli karbon emisyon düzeylerine göre API davranışını ayarlamanıza olanak tanır. API Management, API Management örneğinin geçerli context.Deployment.SustainabilityInfo.CurrentCarbonIntensity gösteren bağlam değişkenini kullanıma sunar.

Çok bölgeli dağıtımlarda ağ geçidi, çalıştığı ilgili bölgenin karbon yoğunluğunu sağlar.

Düşük karbon emisyonu dönemlerinde daha yoğun trafik işlemeyi etkinleştirmek veya yüksek karbon emisyonları sırasında işlemeyi azaltmak için ilkelerinizde bu bağlam değişkenini kullanın.

Örnek: Yüksek karbon emisyon dönemlerinde davranışı ayarlama

Aşağıdaki örnekte API Management önbellek sürelerini uzatır, daha katı hız sınırlaması uygular ve yüksek karbon emisyon dönemlerinde günlüğe kaydetme ayrıntılarını azaltır.

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

Örnek: Karbon yoğunluğu bilgilerini arka uçtan veya günlüklere yayma

Aşağıdaki örnek, geçerli karbon yoğunluğuna nasıl erişilip arka uç sistemine ve günlüklerde nasıl yayılacağı gösterilmektedir.

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

Örnek: Karbon yoğunluğuna göre izleme detay seviyesini ayarlama

Aşağıdaki örnekte, özel bir izlemede yayılan bilgi miktarını ayarlamak için geçerli karbon yoğunluğu bilgilerinin nasıl kullanılacağı gösterilmektedir.

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

Bölgesel kullanılabilirlik

Aşağıdaki tablo şunu gösterir:

  • API Management Klasik katmanlarındaki (Geliştirici, Temel, Standart, Premium) örneklerin sürdürülebilirlik özelliklerini desteklediği bölgeler (önizleme için kaydoldıktan sonra)
  • Karbon emisyonlarının yoğunluğu hakkında bilgilerin kullanılabildiği bölgeler, örneğin trafik kaydırma için bölgeselleştirilmiş arka uçlar oluşturmak için
Bölge API Management desteği Karbon yoğunluğu bilgileri
Orta Avustralya
Orta Avustralya 2
Australia East
Australia Southeast
Güney Brezilya
Brezilya Güneydoğu
Canada Central
Canada East
Orta Hindistan
Central US
Şili Orta
Doğu Asya
East US
Doğu ABD 2
Orta Fransa
Güney Fransa
Almanya Kuzey
Almanya Batı Merkez
Orta Endonezya
Israel Central
Italy North
Japonya Doğu
Japonya Batısı
Jio Orta Hindistan
Jio Hindistan Batı
Korea Central
Güney Kore
Malezya Güney
Mexico Central
Yeni Zelanda Kuzey
ABD'nin Kuzey Orta Bölgesi
Kuzey Avrupa
Norway East
Batı Norveç
Orta Polonya
Qatar Central
Güney Afrika - Kuzey
Güney Afrika Batı
ABD'nin Güney Merkez Bölgesi
South India
Güneydoğu Asya
Spain Central
Orta İsveç
Güney İsveç
Switzerland North
Switzerland West
Tayvan Kuzey
Tayvan Kuzeybatı
Tayvan Batı
UAE Central
Birleşik Arap Emirlikleri Kuzey
UK South
UK West
Orta Batı ABD
West Europe
West India
West US
Batı ABD 2
Batı ABD 3

Karbon yoğunluğu kategorileri

Aşağıdaki tabloda trafik kaydırma ve trafik şekillendirme özelliklerinde kullanılan karbon yoğunluğu kategorileri açıklanmaktadır. Değerler, kapsam 2 emisyonları için KWh başına CO₂e gram olarak verilmektedir.

Kategori g CO₂e
Yok Mevcut Değil
Çok Düşük ≤ 150
Low 151-300
Orta 301-500
High 501-700
Çok Yüksek > 700