Realtime Database Faturalandırmayı Anlama

Firebase, veritabanınızda depoladığınız veriler ve OSI modelinin oturum katmanında (5. katman) tüm giden ağ trafiği için faturalandırır. Depolama alanı için aylık her GB başına 5 ABD doları ücret alınır. Bu ücret günlük olarak değerlendirilir. 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ı okumaları hem de 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 neden olur.

Faturalandırılan trafiğe örnek olarak aşağıdakiler verilebilir:

  • İ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 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'ın gerçek zamanlı protokol yükü, WebSocket yükü ve HTTP başlığı yükü. Her bağlantı kurulduğunda bu ek maliyet, SSL şifreleme ek maliyetiyle birlikte bağlantı maliyetlerine katkıda bulunur. Bu, tek bir istek için çok fazla bant genişliği olmasa da yükü küçükse veya sık sık kısa bağlantılar yapıyorsanız faturanızın önemli bir bölümünü oluşturabilir.
  • SSL şifreleme yükü: Güvenli bağlantılar için gerekli SSL şifreleme yüküyle ilişkili bir maliyet vardır. Bu maliyet, ilk el sıkışması için ortalama 3,5 KB, her giden mesajdaki TLS kaydı üstbilgileri için ise ortalama onlarca bayttır. Çoğu uygulama için bu, faturanızın küçük bir yüzdesidir. 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 konsol verileri: Bu genellikle Realtime Database maliyetlerinin önemli bir bölümünü oluşturmasa da Firebase, Firebase konsolundan okuduğunuz ve yazdığınız veriler için ücret alır.

Faturalandırılan kullanımınızı tahmin etme

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 metrikler için kullanım istatistiklerini gösterir:

  • Bağlantılar: Veritabanınıza yapılan eşzamanlı, şu anda açık olan gerçek zamanlı bağlantıların sayısı. Buna aşağıdaki gerçek zamanlı bağlantılar dahildir: WebSocket, uzun süreli sorgu ve sunucu tarafından gönderilen HTML etkinlikleri. RESTful istekleri dahil değildir.
  • Depolama alanı: Veritabanında depolanan veri miktarı. Firebase Hosting veya diğer Firebase ürünleri aracılığıyla depolanan veriler bu kapsamda değildir.
  • İndirilenler: Protokol ve şifreleme ek yükü dahil olmak üzere veritabanınızdan indirilen tüm baytlar.
  • 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ı %100'e yaklaştıkça 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ı korur ve genellikle REST API ile birlikte 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 oluşturma aracını kullanarak okuma işlemlerinizi ölçün ve Android, Objective-C ve Web SDK'larında hata ayıklama günlük kaydını etkinleştirin. 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 etmeye çalışın. Sık yapılan küçük REST istekleri, yerel SDK'yı kullanan tek bir sürekli bağlantıdan daha maliyetli olabilir. REST API'yi kullanıyorsanız SSL el sıkışmalarından kaynaklanan maliyetleri azaltabilecek bir HTTP keep-alive veya sunucu tarafından gönderilen etkinlikler kullanmayı düşünebilirsiniz.
  • TLS oturum biletlerini kullanın: TLS oturum biletleri yayınlayarak devam eden bağlantılardaki SSL şifreleme ek maliyetlerini azaltın. Bu, özellikle veritabanına sık sık güvenli bağlantılar kurmanız gerekiyorsa yararlıdır.
  • Sorguları dizine ekleme: Verilerinizi dizine eklemek, sorgular için kullandığınız toplam bant genişliğini azaltır. Bu da maliyetlerinizi düşürme ve veritabanınızın performansını artırma gibi iki avantaj sağlar. Veritabanınızdaki dizine eklenmemiş sorguları bulmak için profil aracı aracını kullanın.
  • Dinleyicilerinizi optimize edin: Dinleme işlemlerinizin döndürdüğü verileri sınırlamak için sorgu ekleyin ve yalnızca verilerdeki güncellemeleri indiren dinleyiciler kullanın (örneğin, once() yerine on()). Ayrıca, dinleyicilerinizin senkronize ettikleri veri miktarını sınırlamak için mümkün olduğunca yolun sonuna yerleştirin.
  • Depolama maliyetlerini azaltın: Düzenli temizleme işleri çalıştırın ve veritabanınızdaki kopya verileri azaltın.
  • Kuralları Kullanma: Veritabanında maliyetli olabilecek yetkisiz işlemleri önleyin. Örneğin, Firebase Realtime Database Security Rules kullanarak kötü amaçlı bir kullanıcının veritabanınızın tamamını tekrar tekrar indirdiği bir senaryoyu önleyebilirsiniz. Firebase Realtime Database kurallarını kullanma hakkında daha fazla bilgi edinin.

Uygulamanız için en iyi optimizasyon planı, kullanım alanınıza bağlıdır. Bu, en iyi uygulamaların kapsamlı bir listesi değildir. Slack kanalımızda veya Stack Overflow'da Firebase uzmanlarından daha fazla tavsiye ve ipucu alabilirsiniz.