Firebase mi Supabase mi? Mobil Uygulamada Arka Uç Seçimi
İkisini de gerçek projelerde kullandım. Bu yazı hangisinin "daha iyi" olduğunu değil, hangisinin senin projene uygun olduğunu bulmana yarayacak.
Bir mobil uygulamaya başlarken en erken verdiğiniz ve en geç değiştirebildiğiniz karar, arka uç seçimi. Yanlış seçerseniz ilk üç ay hiçbir şey hissetmezsiniz; sorun altıncı ayda, veri modelinizi değiştirmek istediğinizde çıkar.
Ben ikisini de kullandım ve şunu söyleyebilirim: bu bir "hangisi daha iyi" sorusu değil, "verim nasıl bir şekle sahip" sorusu. Aşağıda önce ikisinin gerçekten farklı olduğu yerleri, sonra da seçim yaparken sorduğum beş soruyu anlatıyorum.
Temel fark: doküman mı, tablo mu?
Firebase'in veritabanı olan Firestore bir doküman veritabanı. Verileri iç içe geçmiş JSON nesneleri gibi saklıyorsunuz. Şeması yok — bugün bir alan ekleyip yarın kaldırabilirsiniz, kimse itiraz etmez.
Supabase ise PostgreSQL. Yani gerçek bir ilişkisel veritabanı: tablolar, sütunlar, tipler, yabancı anahtarlar ve SQL. Şema tanımlamak zorundasınız.
Bu tek fark, geri kalan her şeyi belirliyor:
| Konu | Firebase (Firestore) | Supabase (PostgreSQL) |
|---|---|---|
| Veri modeli | Doküman, şemasız | İlişkisel, şemalı |
| Sorgulama | Sınırlı — JOIN yok, çoğu şeyi veriyi kopyalayarak çözersiniz | Tam SQL — JOIN, alt sorgu, görünüm, fonksiyon |
| Gerçek zamanlı | Çekirdeğinde var, çok olgun | Var ve iyi çalışıyor, biraz daha kurulum ister |
| Çevrimdışı çalışma | Mobil SDK'da hazır geliyor — en güçlü tarafı | Kendiniz çözersiniz |
| Yetkilendirme | Security Rules (kendine özgü bir dil) | Row Level Security — SQL ile yazılır |
| Ekosistem | Analytics, Crashlytics, Push, Remote Config — hepsi bir arada | Daha dar; eksikleri başka araçlarla tamamlarsınız |
| Taşınabilirlik | Google'a bağlısınız | Açık kaynak, kendi sunucunuza taşıyabilirsiniz |
| Maliyet davranışı | Okuma/yazma sayısına göre — tahmin etmek zor | Sabit paket — tahmin etmek kolay |
Firebase'in gerçekten parladığı yer
Firebase'i bir "veritabanı" olarak değil, bir mobil uygulamanın ihtiyaç duyduğu her şeyin paketi olarak düşünmek lazım. Kimlik doğrulama, veritabanı, dosya depolama, bildirim, çökme raporu, analitik ve uzaktan yapılandırma — hepsi tek konsolda, hepsi birbiriyle konuşuyor.
Benim için üç şey öne çıkıyor:
- Çevrimdışı destek: Firestore mobil SDK'sı veriyi cihazda önbellekliyor. Kullanıcı metroda internetsiz kalsa bile uygulama çalışmaya devam ediyor, bağlantı gelince kendisi senkronize oluyor. Bunu elle yazmak haftalar sürer.
- Crashlytics: Uygulamanız kimin telefonunda, hangi ekranda, hangi satırda çöktü — hepsini görüyorsunuz. Yayın sonrası hayatta kalmanın yarısı bu.
- Push bildirim: Kurulum gerçekten 20 dakika sürüyor.
Hızlı çıkmanız gereken, verisi büyük ölçüde "kullanıcıya ait bir liste" şeklinde olan ve çevrimdışı çalışması gereken uygulamalar. Görev/alışkanlık takibi, not tutma, sohbet, oyun skorları.
Supabase'in gerçekten parladığı yer
Supabase'in cazibesi tek bir şeyde toplanıyor: arkada gerçek bir PostgreSQL var. Bu şu demek — verinizle ilgili karmaşık bir soru sormanız gerektiğinde sorabiliyorsunuz.
"Bu ay en çok satan 10 ürünü, kategorileriyle birlikte, iade edilmişleri hariç tutarak getir" gibi bir sorgu Firestore'da bir mimari problemidir; Supabase'de tek bir SQL cümlesidir.
- Row Level Security: Yetkilendirme kuralları veritabanının içinde yaşıyor. "Bir kullanıcı yalnızca kendi satırlarını görebilir" kuralını bir kez yazıyorsunuz ve hangi istemciden gelirse gelsin geçerli oluyor.
- Öngörülebilir fatura: Aylık sabit paket. Firestore'da bir listeleme ekranını kötü kurgularsanız her açılışta yüzlerce okuma yapabilirsiniz — bu doğrudan faturaya yansır.
- Kilitlenme yok: Açık kaynak. Yarın kendi sunucunuza taşımak isterseniz elinizde standart bir PostgreSQL veritabanı var.
Verisi ilişkisel olan projeler: e-ticaret, rezervasyon, sipariş, envanter, raporlama. Yani "şu tablo şununla ilişkili" cümlesini çok kurduğunuz her yer.
Seçmeden önce sorduğum 5 soru
Somut bir projede karar verirken şu beş soruyu sırayla soruyorum. Genelde üçüncüde cevap belli oluyor.
1. Verim ilişkisel mi?
Modeli kâğıda çizin. Aralarında ok olan üçten fazla varlık varsa (kullanıcı → sipariş → ürün → kategori gibi) PostgreSQL tarafına yönelin. Tek bir kullanıcının kendi kayıtlarından ibaretse Firestore rahat eder.
2. Uygulama internetsiz çalışmalı mı?
Cevap "evet" ise Firebase güçlü bir avantajla başlıyor. Bu özelliği Supabase ile elde etmek mümkün ama işi siz yaparsınız.
3. Bir yıl sonra hangi soruları soracağım?
Bugünkü ekranlarınız değil, gelecekteki raporlarınız belirleyici. "Hangi kullanıcı grubunun elde tutma oranı daha yüksek?" gibi sorular soracaksanız SQL'e ihtiyacınız olacak.
4. Bütçe ne kadar öngörülebilir olmalı?
Müşteri projesiyse ve sabit bir aylık maliyet vermeniz gerekiyorsa Supabase'in paket modeli işinizi kolaylaştırır. Kendi ürününüzse ve trafik belirsizse Firebase'in ücretsiz katmanı başlangıçta çok cömert.
5. Ekipte SQL bilen var mı?
Bu göz ardı edilen bir soru. Supabase'in gücü SQL'den geliyor; SQL yazmayacaksanız o gücün yarısını kullanamazsınız.
İkisinde de düştüğüm tuzaklar
Hangisini seçerseniz seçin, iki hata ortak:
Firestore Security Rules ve Supabase RLS geliştirme sırasında açık bırakılıp unutuluyor. Bu, veritabanınızı herkese açık bırakmak demek. Kuralları ilk tabloyu oluşturduğunuz gün yazın, sonra değil.
Ödeme doğrulama, kupon kontrolü, hesap silme gibi işleri istemci koduna koymayın — uygulamanız tersine mühendislikle açılabilir. Bunlar sunucu tarafında çalışmalı (Cloud Functions veya Supabase Edge Functions).
Peki ben ne kullanıyorum?
İkisini birden. Kendi mobil uygulamalarımda — kullanıcının kendi verisini tuttuğu, çevrimdışı çalışması gereken uygulamalar — Firebase'in paketi işimi görüyor; özellikle Crashlytics ve bildirim tarafı için ayrıca bir şey kurmak istemiyorum.
Üzerinde çalıştığım e-ticaret projesinde ise Supabase tarafındayım. Sipariş, ürün, varyant, stok ve iade ilişkilerini doküman veritabanında modellemek işkence olurdu.
Arka uç seçimi bir sadakat meselesi değil. Verinizin şekli neyse onu seçin — ve o kararı üç ay sonra değil, ilk gün verin.
- Firebase
- Supabase
- PostgreSQL
- Firestore
- Arka uç
- Mimari
Demir Taşdemir
Mobil Uygulama & Web Geliştirici
2018'den beri yazılım geliştiriyorum. App Store ve Google Play'de 11 uygulama yayınladım; şu an 6 mobil uygulama, 1 e-ticaret platformu ve 1 masaüstü oyun üzerinde çalışıyorum. Swift ve Java'da ileri, Firebase ve Supabase tarafında iyi seviyedeyim.
Bu tarz kararları veren birini arıyorsanız
Mimari kararları gerekçesiyle birlikte anlatabilmek, benim için kod yazmak kadar önemli. CV'me ve projelerime aşağıdan ulaşabilirsiniz.