← Blog'a Dön

Mobil Uygulamalar Neden Backend'e Bağımlı?

Mobil Uygulamalar Neden Backend'e Bağımlı?
Telefonun Yetmediği Yer
Bir akıllı telefon inanılmaz derecede güçlüdür. Milyarlarca işlem yapabilen bir işlemci, gigabaytlarca bellek, onlarca sensör. Ama tüm bu güce rağmen modern mobil uygulamaların büyük çoğunluğu bir sunucu olmadan işlevsiz kalır.
Neden? Telefon bu kadar güçlüyse neden her şeyi kendi başına yapamıyor?

Verinin Nerede Yaşaması Gerektiği Sorusu
Her uygulamanın bir veri sorunu vardır. Bu veri nerede tutulacak, kim erişebilecek, değiştiğinde ne olacak?
Veriyi yalnızca telefonda tutarsanız o veri yalnızca o telefona aittir. Kullanıcı telefonu değiştirdiğinde veri gider. Başka bir cihazdan aynı hesaba girilemez. Telefon çalındığında her şey kaybolur.
Ama daha da temel bir sorun var: Çoğu uygulamanın verisi birden fazla kullanıcıya aittir ya da birden fazla kullanıcı tarafından paylaşılır. Bir mesajlaşma uygulamasında Ahmet'in telefonundaki mesajın Mehmet'in telefonuna nasıl ulaşacağını düşünün. İki telefon doğrudan birbirine bağlı değildir. Aralarında ortak bir nokta olması gerekir. O ortak nokta backend'dir.
Backend, birden fazla cihaz ve kullanıcı için ortak hafıza görevi görür. Bu en temel ve en kaçınılmaz backend gereksinimidir.

Güvenlik: Telefona Güvenilemez
Uygulamanız para işlemi yapıyor olsun. Bir ürünün fiyatı nerede hesaplanmalı? Telefonda mı yoksa sunucuda mı?
Telefonda hesaplanırsa kullanıcı bu hesabı manipüle edebilir. Ağ trafiğini yakalayabilir, istekleri değiştirebilir, uygulamayı tersine mühendislikle analiz edebilir. Ne kadar iyi gizlenirse gizlensin, telefondaki kod nihayetinde kullanıcının eline teslim edilmiştir.
Sunucuda hesaplanırsa kullanıcı sonucu değiştiremez. Sunucu kendi kurallarına göre hesaplar ve yalnızca sonucu döndürür. Kritik iş mantığı fiziksel olarak kullanıcının erişemeyeceği bir yerdedir.
Bu prensip yalnızca finans uygulamaları için geçerli değildir. Kimlik doğrulama, yetkilendirme, veri doğrulama, iş kuralları — güvenlik gerektiren her şey sunucu tarafında olmalıdır. Telefon güvenilmez bir ortamdır. Bu gerçek değişmez.

Hesaplama Gücü ve Pil
Bazı işlemler telefon için çok ağırdır. Büyük veri setleri üzerinde analiz yapmak, karmaşık arama algoritmaları çalıştırmak, makine öğrenmesi modellerini eğitmek — bunlar sunucu tarafında yapılır ve sonuç telefona gönderilir.
Bunun iki nedeni vardır. Birincisi sunucular çok daha güçlüdür. Yüzlerce çekirdek, terabaytlarca bellek, özel donanım hızlandırıcılar. Telefon bu kapasiteyle rekabet edemez.
İkincisi pil. Telefonda yapılan her hesaplama pil tüketir. Kullanıcının elindeki cihazın bataryasını boşaltmak yerine ağır işi sunucuya devrederek telefonu hafif tutmak çok daha iyi bir kullanıcı deneyimi sunar.
Bir arama motorunu düşünün. Milyonlarca dökümanı telefonda indekslemek ve aramak imkânsızdır. Sunucu bu indeksi tutar, telefon yalnızca arama sorgusunu gönderir ve sonuçları alır.

Gerçek Zamanlı Senkronizasyon
Kullanıcı bir cihazda bir şey değiştirdiğinde diğer cihazlarda bu değişiklik nasıl görünür?
Bunu telefon-telefon arası doğrudan bağlantıyla yapmak teorik olarak mümkündür ama pratikte son derece karmaşıktır. Cihazlar her zaman açık değildir, IP adresleri değişir, ağ geçitleri doğrudan bağlantıları engeller.
Backend bu sorunu çözer. Her cihaz sunucuyla konuşur. Bir değişiklik olduğunda sunucu diğer cihazlara bildirir. Senkronizasyon yönetimi sunucunun sorumluluğundadır ve istemciler bu karmaşıklıkla uğraşmak zorunda kalmaz.

Güncelleme ve Kontrol
Uygulama mağazasına yeni bir sürüm yüklediniz. Kullanıcı henüz güncellemediyse ne olacak? Eski sürüm çalışmaya devam etmeli mi? Kritik bir güvenlik açığını kapattıysanız eski sürümü zorunlu olarak güncellemeye nasıl zorlayacaksınız?
Backend bu kontrolü sağlar. Sunucu hangi uygulama versiyonlarının desteklendiğini bilir. Eski bir sürümden istek geldiğinde sunucu güncelleme zorunluluğunu bildirebilir ya da belirli özellikleri devre dışı bırakabilir.
Aynı mantık özellik bayrakları için de geçerlidir. Yeni bir özelliği tüm kullanıcılara aynı anda açmak yerine belirli bir yüzde için açmak, A/B testi yapmak, coğrafi kısıtlama uygulamak — bunların hepsi backend kontrolüyle mümkün hale gelir. Uygulama mağazasına yeni bir sürüm göndermeden.

Bağımlılık Ne Zaman Sorun Olur?
Backend bağımlılığının bir bedeli vardır: İnternet bağlantısı olmadan uygulama işlevsiz kalır.
Bu sorunun çözümü offline-first mimaridir. Veriler yerel veritabanına kaydedilir, uygulama bu yerel veriyle çalışır, bağlantı geldiğinde sunucuyla senkronize edilir. Kullanıcı bağlantı durumundan bağımsız olarak uygulamayı kullanmaya devam eder.
Room veritabanı, WorkManager ve ağ durumu takibi bu mimarinin Android'deki temel araçlarıdır. Offline-first tasarım hem kullanıcı deneyimini güçlendirir hem de backend bağımlılığının getirdiği kırılganlığı azaltır.

Geliştirici Perspektifinden Bakış
Backend bağımlılığını tasarlarken en kritik karar şudur: Bu işlem telefonda mı yoksa sunucuda mı yapılmalı?
Güvenlik gerektiren her şey sunucuda. Kullanıcılar arası paylaşılan her veri sunucuda. Hesaplama açısından ağır olan her iş sunucuda. Ama hız ve çevrimdışı deneyim gerektiren her şey için yerel önbellekleme ve offline-first yaklaşım masaya yatırılmalıdır.
Bu dengeyi doğru kurmak, iyi bir mobil uygulamanın en temel tasarım kararlarından biridir.