Skip to content

Uzaktan Yapılandırma

Uzaktan yapılandırma ve dinamik özellik yönetimi, uygulamanızın davranışını ve özelliklerini sunucu tarafından kontrol etmenizi sağlayan güçlü bir araçtır. Bu teknoloji, modern mobil uygulamaların vazgeçilmez bir parçası haline gelmiştir.

Hızlı Karar

İhtiyaçRemote Config KullanDikkat
Feature rolloutEvetDefault değer güvenli olmalı
Kill switchEvetOffline durumda da çalışmalı
Güvenlik kararıHayırClient config manipüle edilebilir
Sık değişen UI metniDikkatliCache ve localization karmaşıklaşır

Üretim Kontrol Listesi

  • Problem: Config app update beklemeden hangi riski azaltıyor?
  • Çözüm: Default, fetch interval, validation, targeting ve rollback net mi?
  • Trade-off: Esneklik sağlar; config drift ve beklenmeyen davranış riski ekler.
  • Hata durumu: Bad config, stale config, wrong segment ve offline default ele alınmalı.
  • Ölçüm: Fetch success, config version, activation rate, rollback count ve error delta izlenmeli.
  • Güvenlik/maliyet: Secret veya yetki kuralı remote config'e konmamalı; çok segment analiz maliyeti yaratır.

Temel Özellikler

  • Dinamik Özellik Yönetimi: Uygulama özelliklerini sunucu tarafından açıp kapatabilme
  • A/B Testi Desteği: Farklı kullanıcı gruplarına farklı deneyimler sunabilme
  • Hızlı Güncelleme: Uygulama mağazası güncellemesi olmadan değişiklik yapabilme
  • Koşullu Yapılandırma: Kullanıcı segmentasyonuna göre özelleştirilmiş deneyimler
  • Gerçek Zamanlı Değişiklik: Anlık güncelleme ve değişiklik yapabilme
  • Çoklu Platform Desteği: iOS, Android ve web platformları için tutarlı yapılandırma

Kullanım Senaryoları

1. Yeni Özellik Yayını

Senaryo: E-ticaret uygulamanıza yeni bir ödeme yöntemi eklemek istiyorsunuz.

  • Önce %5 kullanıcıya gösterilir
  • Hata oranları ve kullanıcı geri bildirimleri izlenir
  • Başarılı olursa kademeli olarak tüm kullanıcılara açılır
  • Sorun çıkarsa anında devre dışı bırakılabilir

2. Acil Durum Yönetimi

Senaryo: Uygulamanızda kritik bir güvenlik açığı tespit edildi.

  • İlgili özellik anında devre dışı bırakılır
  • Kullanıcılara bilgilendirme mesajı gösterilir
  • Düzeltme yapılana kadar alternatif akışlar sunulur

3. Bölgesel Özelleştirme

Senaryo: Farklı ülkelerde farklı ödeme yöntemleri sunmak.

  • Türkiye'de havale/EFT seçenekleri
  • ABD'de kredi kartı odaklı ödeme
  • Almanya'da banka transferi öncelikli

4. Performans Optimizasyonu

Senaryo: Uygulama performansını iyileştirmek.

  • Yüksek trafikli saatlerde önbellek süresini artırma
  • Düşük internet hızı olan bölgelerde görsel kalitesini düşürme
  • Sunucu yükünü dengelemek için istek sıklığını ayarlama

En İyi Uygulamalar

1. Yapılandırma Yönetimi

  • Yapılandırma değerlerini önbelleğe alma
  • Varsayılan değerlerin tanımlanması
  • Değişikliklerin izlenmesi ve loglanması
  • Güvenlik kontrollerinin uygulanması

2. Hata Yönetimi

  • Bağlantı kopması durumunda son bilinen iyi yapılandırmayı kullanma
  • Yapılandırma değerlerinin doğrulanması
  • Hata durumlarında kullanıcı deneyimini koruma

3. Performans Optimizasyonu

  • Yapılandırma güncellemelerini arka planda alma
  • Gereksiz güncellemeleri önleme
  • Önbellek stratejilerini optimize etme

Gerçek Dünya Örnekleri

Netflix

  • Farklı ülkelerde farklı içerik katalogları
  • Kullanıcı davranışına göre öneri algoritmalarını ayarlama
  • Yeni özelliklerin kademeli olarak yayınlanması

Spotify

  • Bölgesel fiyatlandırma stratejileri
  • Kullanıcı deneyimini kişiselleştirme
  • Yeni özelliklerin A/B testleri

Uber

  • Dinamik fiyatlandırma ayarları
  • Bölgesel özellik kısıtlamaları
  • Acil durum yönetimi ve servis kesintileri

Teknik Uygulama

Yapılandırma Anahtarları

json
{
  "feature_flags": {
    "new_payment_method": {
      "enabled": true,
      "rollout_percentage": 25,
      "target_countries": ["TR", "US", "DE"]
    },
    "dark_mode": {
      "enabled": true,
      "default": false
    }
  }
}

Örnek Kod

swift
// iOS örneği
RemoteConfig.shared.fetch { config in
    if config.isFeatureEnabled("new_payment_method") {
        // Yeni ödeme yöntemini göster
    }
}
kotlin
// Android örneği
FirebaseRemoteConfig.getInstance().fetchAndActivate()
    .addOnCompleteListener { task ->
        if (task.isSuccessful) {
            val isNewFeatureEnabled = remoteConfig.getBoolean("new_feature")
            // Özelliği yönet
        }
    }

Eren Demir tarafından oluşturulmuştur.