Realtime Database Faturalandırmayı Anlama

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

Faturalandırılan trafiğe ilişkin bazı yaygın örnekler şunlardır:

  • İndirilen veriler: İstemciler veritabanınızdan veri aldığında Firebase, indirilen veriler için ücret alır. Bu genellikle bant genişliği maliyetlerinizin büyük bir kısmını oluşturur ancak faturanızdaki tek faktör değildir.
  • Protokol ek yükü: Bir oturumun oluşturulması ve sürdürülmesi için sunucu ile istemciler arasında 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 başlığı ek yükü. Her bağlantı kurulduğunda bu ek yük, SSL şifreleme ek yüküyle birlikte bağlantı maliyetlerine katkıda bulunur. Bu, tek bir istek için çok fazla bant genişliği olmasa da yükleriniz 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 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, her giden mesajdaki TLS kaydı başlıkları için ise yaklaşık onlarca bayttır. Çoğu uygulama için bu, faturanızın küçük bir yüzdesidir. Ancak, belirli bir durumda çok sayıda SSL el sıkışması gerekiyorsa bu oran büyük bir yüzdeye ulaşabilir. Örneğin, TLS oturum biletlerini desteklemeyen cihazlar çok sayıda SSL bağlantı 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ılmış 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. Mevcut faturalandırma dönemi, son 30 gün veya son 24 saatteki kullanımı kontrol edebilirsiniz.

Firebase, aşağıdaki metriklerle ilgili 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ı sayısı. WebSocket, uzun anket ve HTML sunucu tarafından gönderilen etkinlikler gibi anlık bağlantılar bu kapsamdadır. RESTful istekleri içermez.
  • Depolama: Veritabanınızda ne kadar veri depolandığı. Firebase Hosting veya diğer Firebase ürünleri aracılığıyla depolanan veriler bu sınıra dahil değildir.
  • İndirmeler: Protokol ve şifreleme ek yükü dahil olmak üzere veritabanınızdan indirilen tüm baytlar.
  • Yük: Bu grafik, belirli bir 1 dakikalık aralıkta veritabanınızın ne kadarının kullanıldığını ve istekleri işlediğini gösterir. Veritabanınız %100'e yaklaştıkça performans sorunları yaşayabilirsiniz.

Kullanımı optimize etme

Veritabanı kullanımınızı ve bant genişliği maliyetlerinizi optimize etmek için uygulayabileceğ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 artan 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ğini veya daha sık senkronize etmediğini doğrulayın. Sorunları belirlemek için profiler 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. Uygulamanızdaki arka plan ve senkronizasyon işlemlerini kontrol ederek her şeyin istediğiniz gibi çalıştığından emin olun.
  • Bağlantı sayısını azaltın: Mümkünse bağlantı bant genişliğinizi optimize etmeyi deneyin. Sık yapılan küçük REST istekleri, yerel SDK kullanılarak yapılan tek ve 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 vererek devam ettirilen bağlantılarda SSL şifreleme ek yükü maliyetlerini azaltın. Bu özellik, özellikle veritabanına sık ve güvenli bağlantılar kurmanız gerekiyorsa yararlıdır.
  • Dizin sorguları: 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ızda dizinlenmemiş sorguları bulmak için Profiler aracını kullanın.
  • Dinleyicilerinizi optimize edin: Dinleme işlemlerinizin döndürdüğü verileri sınırlamak için sorgular ekleyin ve yalnızca verilerdeki güncellemeleri indiren dinleyicileri kullanın (ör. once() yerine on()). Ayrıca, dinleyicilerin senkronize ettiği veri miktarını sınırlamak için onları mümkün olduğunca aşağıya yerleştirin.
  • Depolama maliyetlerini azaltın: Düzenli olarak temizleme işleri çalıştırın ve veritabanınızdaki yinelenen verileri azaltın.
  • Kuralları kullanın: Veritabanınızda maliyetli olabilecek yetkisiz işlemleri önleyin. Örneğin, Firebase Realtime Database Security Rules kullanmak kötü niyetli bir kullanıcının veritabanınızın tamamını tekrar tekrar indirdiği bir senaryoyu önleyebilir. 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 olmasa da Slack kanalımızda veya Stack Overflow'da Firebase uzmanlarından daha fazla tavsiye ve ipucu bulabilirsiniz.