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.