Realtime Database Faturalandırmasını Anlama

Firebase, veritabanınızda depoladığınız veriler ve OSI modelinin oturum katmanında (5. katman) tüm giden ağ trafiğini faturalandırır. Depolama alanı, günlük olarak değerlendirilen ayda her GB için 5 ABD doları üzerinden faturalandırılır. Faturalandırma, veritabanınızın konumundan etkilenmez. Giden trafik, tüm veritabanı işlemlerinden ve veritabanı okumaları aracılığıyla indirilen verilerden gelen bağlantı ve şifreleme ek yükünü içerir. Hem veritabanı okuma hem yazma işlemleri faturanızda bağlantı maliyetlerine neden olabilir. Güvenlik kuralları tarafından reddedilen işlemler dahil olmak üzere veritabanınıza gelen ve veritabanınızdan giden tüm trafik, faturalandırılabilir maliyetlere yol açar.

Faturalandırılmış trafikle ilgili bazı yaygın örnekler şunlardır:

  • İndirilen veriler: Müşteriler veritabanınızdan veri aldığında Firebase, indirilen veriler için ücret alır. Genellikle bant genişliği maliyetlerinizin büyük bir kısmını bu oluşturur, ancak faturanızdaki tek faktör bu değildir.
  • Protokol ek yükü: Oturum oluşturmak ve sürdürmek için sunucu ve istemciler arasında bir miktar ek trafik gerekir. Temel protokole bağlı olarak bu trafik şunları içerebilir: Firebase Realtime Database'in gerçek zamanlı protokol ek yükü, WebSocket ek yükü ve HTTP üst bilgisi. Bağlantı her kurulduğunda, SSL şifreleme ek yüküyle birlikte bu ek yük bağlantı maliyetlerine katkıda bulunur. Bu, tek bir istek için çok fazla bant genişliği olmasa da yükünüz azsa veya sık sık kısa bağlantılar kuruyorsanız faturanızda önemli bir bölüm olabilir.
  • SSL şifrelemesi ek yükü: Güvenli bağlantılar için gerekli olan SSL şifreleme ek yüküyle ilişkili bir maliyet vardır. Ortalama olarak bu maliyet, ilk el sıkışma için yaklaşık 3,5 KB, giden her iletideki TLS kayıt üstbilgileri için yaklaşık on bayttır. Çoğu uygulama için bu, faturanızın küçük bir yüzdesini oluşturur. Ancak sizin durumunuz çok sayıda SSL el sıkışması gerektiriyorsa bu durum büyük bir yüzdeye dönüşebilir. Örneğin, TLS oturum biletlerini desteklemeyen cihazlar, çok sayıda SSL bağlantısı el sıkışması gerektirebilir.
  • Firebase konsolu verileri: Bu genellikle Realtime Database maliyetlerinin önemli bir kısmını oluşturmasa da Firebase, Firebase konsolundan okuduğunuz ve yazdığınız verileri ücretlendirir.

Faturalandırılmış kullanımınızı tahmin edin

Mevcut Realtime Database bağlantılarınızı ve veri kullanımınızı görmek için Firebase konsolundaki Kullanım sekmesini kontrol edin. Geçerli fatura dönemi, son 30 gün veya son 24 saat içindeki kullanımı kontrol edebilirsiniz.

Firebase, aşağıdaki metriklerin kullanım istatistiklerini gösterir:

  • Bağlantılar: Veritabanınızla aynı anda açık olan, gerçek zamanlı bağlantıların sayısı. Buna şu gerçek zamanlı bağlantılar da dahildir: WebSocket, uzun yoklama ve HTML sunucusu tarafından gönderilen etkinlikler. RESTful istekleri dahil değildir.
  • Depolama alanı: Veritabanınızda depolanan veri miktarıdır. Firebase barındırma veya diğer Firebase ürünleri aracılığıyla depolanan veriler buna dahil değildir.
  • İndirmeler: Protokol ve şifreleme ek yükü dahil olmak üzere veritabanınızdan indirilen tüm baytlardır.
  • Yükleme: Bu grafik, belirli bir 1 dakikalık aralıkta veritabanınızın ne kadarının istekleri işlediğini ve bunların ne kadarının kullanıldığını gösterir. Veritabanınız %100'e yaklaşırken performans sorunlarıyla karşılaşabilirsiniz.

Kullanımı optimize et

Veritabanı kullanımınızı ve bant genişliği maliyetlerinizi optimize etmek için yararlanabileceğiniz birkaç en iyi uygulama vardır.

  • Yerel SDK'ları kullanın: Mümkün olduğunda REST API yerine uygulamanızın platformuna karşılık gelen SDK'ları kullanın. SDK'lar açık bağlantılar sağlayarak genellikle REST API'ye eklenen SSL şifreleme maliyetlerini azaltır.
  • Hataları kontrol edin: Bant genişliği maliyetleriniz beklenmedik şekilde yüksekse uygulamanızın başlangıçta amaçladığınızdan daha fazla veri senkronize etmediğinden veya daha sık senkronizasyon yapmadığından emin olun. Sorunları tespit etmek için profil aracı kullanarak okuma işlemlerinizi ölçün ve Android, Objective-C ve Web SDK'larında hata ayıklama günlük kaydını açın. Her şeyin istediğiniz gibi çalıştığından emin olmak için uygulamanızdaki arka plan ve senkronizasyon işlemlerini kontrol edin.
  • Bağlantıları azaltın: Mümkünse bağlantı bant genişliğinizi optimize etmeyi deneyin. Sık yapılan küçük REST istekleri, yerel SDK'yı kullanan tek bir sürekli bağlantıdan daha maliyetli olabilir. REST API kullanıyorsanız SSL el sıkışmalarının maliyetlerini azaltabilecek bir HTTP canlı tutma veya sunucu tarafından gönderilen etkinlikler kullanmayı düşünebilirsiniz.
  • TLS oturum biletlerini kullanın: TLS oturum biletleri yayınlayarak, devam ettirilen bağlantılarda SSL şifrelemesinin ek yük maliyetlerini azaltın. Bu, özellikle veritabanına sık sık güvenli bağlantı kurmanız gerekiyorsa faydalıdır.
  • Dizin sorguları: Verilerinizi dizine eklemek, sorgular için kullandığınız toplam bant genişliğini azaltır. Bu da maliyetlerinizi düşürüp veritabanınızın performansını artırmanızı sağlar. Veritabanınızdaki dizine eklenmemiş sorguları bulmak için profil aracı aracını kullanın.
  • İşleyicilerinizi optimize edin: Dinleme işlemlerinizin döndürdüğü verileri sınırlandırmak için sorgular ekleyin ve yalnızca veri güncellemelerini indiren işleyiciler kullanın (örneğin, once() yerine on()). Ayrıca, senkronize ettikleri veri miktarını sınırlamak için dinleyicilerinizi yolun mümkün olduğunca aşağısına yerleştirin.
  • Depolama maliyetlerini azaltın: Düzenli temizlik işleri çalıştırın ve veritabanınızdaki yinelenen verileri azaltın.
  • Kuralları Kullanın: Veritabanınızda potansiyel olarak maliyetli, yetkisiz işlemleri önleyin. Örneğin, Firebase Realtime Database Güvenlik Kuralları'nı kullanarak, kötü amaçlı bir kullanıcının veritabanınızın tamamını tekrar tekrar indirdiği bir senaryodan kaçınabilirsiniz. Firebase Realtime Database Kurallarını kullanma hakkında daha fazla bilgi edinin.

Uygulamanız için en iyi optimizasyon planı, kendi kullanım alanınıza bağlıdır. Bu, en iyi uygulamaları içeren kapsamlı bir liste olmasa da Slack kanalımızda veya Stack Overflow'da Firebase uzmanlarından daha fazla öneri ve ipucu bulabilirsiniz.