2026-02-14DevOpsN Team

AWS AppConfig ile Özellik Bayrakları (Feature Toggles) Kullanımı

A

Özellik bayrakları (feature toggles veya feature flags), geliştiricilerin kod değişikliği yapmadan sistem davranışını değiştirmesine olanak tanıyan güçlü bir tekniktir. Dağıtımı (deployment) sürümden (release) ayırarak, ekipler kodu güvenli bir şekilde üretime birleştirebilir ve özellikleri dinamik olarak açıp kapatabilir. AWS Systems Manager'ın bir yeteneği olan AWS AppConfig, bu yapılandırmaları yönetmek için sağlam ve ölçeklenebilir bir yol sunar.

Bu rehberde, AWS AppConfig ile özellik bayraklarını nasıl kuracağımızı ve bunları bir TypeScript uygulamasında nasıl kullanacağımızı inceleyeceğiz.

<div class="toc"> <h3>İçindekiler</h3> <ul> <li><a href="#aws-appconfig-nedir">AWS AppConfig Nedir?</a></li> <li><a href="#ozellik-bayraklarini-kurma">Özellik Bayraklarını Kurma</a></li> <li><a href="#typescript-ile-bayraklari-alma">TypeScript ile Bayrakları Alma</a></li> <li><a href="#en-iyi-uygulamalar">En İyi Uygulamalar</a></li> <li><a href="#sss">Sıkça Sorulan Sorular</a></li> </ul> </div> <h2 id="aws-appconfig-nedir">AWS AppConfig Nedir?</h2>

AWS AppConfig, uygulama yapılandırmalarını çalışma zamanında yönetmek için tasarlanmıştır. Basit anahtar-değer depolarının (Parameter Store gibi) aksine, AppConfig şunları sunar:

  • Doğrulama (Validation): Dağıtımdan önce yapılandırmanızın sözdizimsel ve anlamsal olarak doğru olduğundan emin olun.
  • Dağıtım Stratejileri: Etki alanını en aza indirmek için değişiklikleri kademeli olarak (örn. doğrusal, üstel) yayınlayın.
  • İzleme (Monitoring): CloudWatch alarmları tetiklenirse değişiklikleri otomatik olarak geri alın.
<h2 id="ozellik-bayraklarini-kurma">Özellik Bayraklarını Kurma</h2>

AppConfig'i kullanmak için üç ana kaynağı tanımlamanız gerekir:

  1. Uygulama (Application): Yapılandırmalarınız için mantıksal bir kapsayıcı.
  2. Ortam (Environment): Dağıtım aşamasını temsil eder (örn. Gelistirme, Uretim).
  3. Yapılandırma Profili (Configuration Profile): Asıl veri kaynağı. Özellik bayrakları için "Feature Flag" profil türünü seçin.

Adım Adım Kurulum

  1. AWS AppConfig konsoluna gidin.
  2. Servisim adında bir Uygulama oluşturun.
  3. Uretim adında bir Ortam oluşturun.
  4. OzellikBayraklari adında bir Yapılandırma Profili oluşturun ve tür olarak "Feature Flag" seçin.
  5. Bir bayrak ekleyin (örn. yeni_odeme_akisi) ve etkinleştirin.
  6. Bu yapılandırmayı Uretim ortamına göndermek için bir dağıtım başlatın.
<h2 id="typescript-ile-bayraklari-alma">TypeScript ile Bayrakları Alma</h2>

Bu bayrakları uygulamanızda almak için JavaScript v3 için AWS SDK'yı kullanın. Özellikle, @aws-sdk/client-appconfigdata paketini kullanıyoruz.

Öncelikle istemciyi yükleyin:

npm install @aws-sdk/client-appconfigdata

Yapılandırmayı almak ve kodunu çözmek için sağlam bir desen aşağıdadır:

import { 
  AppConfigDataClient, 
  StartConfigurationSessionCommand, 
  GetLatestConfigurationCommand 
} from "@aws-sdk/client-appconfigdata";

const client = new AppConfigDataClient({ region: "us-east-1" });

// Token'ı bellekte saklayın
let nextPollToken: string | undefined;

async function getFeatureFlag() {
  // 1. Eğer token yoksa bir oturum başlatın
  if (!nextPollToken) {
    const startCommand = new StartConfigurationSessionCommand({
      ApplicationIdentifier: "Servisim",
      EnvironmentIdentifier: "Uretim",
      ConfigurationProfileIdentifier: "OzellikBayraklari",
      RequiredMinimumPollIntervalInSeconds: 60, // Önbelleğe almayı zorla
    });
    
    const startResponse = await client.send(startCommand);
    nextPollToken = startResponse.InitialConfigurationToken;
  }

  // 2. En son yapılandırma için sorgu yapın (Poll)
  const getCommand = new GetLatestConfigurationCommand({
    ConfigurationToken: nextPollToken,
  });

  const response = await client.send(getCommand);
  
  // Bir sonraki çağrı için token'ı güncelleyin
  nextPollToken = response.NextPollConfigurationToken;

  // 3. Eğer mevcutsa yapılandırmayı işleyin
  if (response.Configuration) {
    const strConfig = new TextDecoder("utf-8").decode(response.Configuration);
    const config = JSON.parse(strConfig);
    console.log("Mevcut Bayraklar:", config);
    return config;
  }
  
  console.log("Değişiklik yok.");
  return null; 
}

// Kullanım
getFeatureFlag().then(flags => {
    if (flags && flags.yeni_odeme_akisi?.enabled) {
        console.log("Yeni ödeme akışı aktif!");
    } else {
        console.log("Eski ödeme akışı kullanılıyor.");
    }
});
<h2 id="en-iyi-uygulamalar">En İyi Uygulamalar</h2>
  • Token'ı Önbelleğe Alın: Her zaman NextPollConfigurationToken değerini saklayın. Her istekte StartConfigurationSession çağırmayın.
  • Sorgu Aralığına Uyun: AppConfig, istemciler her kullanıcı isteğinde değil, belirli aralıklarla (örn. her 30-60 saniyede bir) sorgu yaptığında en iyi sonucu verir.
  • Yerel Yedekler (Fallbacks): AppConfig erişilemez durumdaysa uygulamanızın varsayılan değerlere sahip olduğundan emin olun.
<h2 id="sss">Sıkça Sorulan Sorular</h2>

S: Değişiklikler ne kadar hızlı yayılır? C: Değişiklikler genellikle dağıtım stratejisi tamamlandıktan sonra saniyeler içinde yayılır.

S: AppConfig ücretli mi? C: Evet, API çağrıları ve alınan veri için ödeme yaparsınız. Doğru sorgu aralıklarını kullanmak maliyetleri düşük tutar.

S: Bayrakları doğrulayabilir miyim? C: Evet, AppConfig, bayrak yüklerinin gereksinimlerinizi karşıladığından emin olmak için JSON Şema doğrulayıcılarını destekler.

<br> <p>Kaynak / Source: https://awsfundamentals.com/blog/feature-toggles-with-appconfig</p>