Loading...

Öğren / Mobil & dağıtım

Mobil Uygulama İçeriğini ve API'sini CDN ile Hızlandırma

Bir mobil uygulama, içerik indiren ve bir backend ile konuşan bir istemcidir: görseller ve medya, indirilebilir asset paketleri, remote config ve API yanıtları. Tek origin'den servis edildiğinde bunların hepsi uzaktaki kullanıcılar için yavaş, çıkış günü ani-yüklü ve sunucularına ağırdır. Önüne bir CDN koy; uygulama dünya genelinde anında hissettirir — asset'ler en yakın edge'den, güvenli API yanıtları önbellekli, config hızlı, origin korumalı. İşte nasıl.

9 dk okuma Orta Güncellendi

Mobil Uygulama İçeriğini ve API'sini CDN ile Hızlandırma

Neye ihtiyacın var (ve CDN bir uygulama için ne yapar)

Elinde bir mobil uygulama var — iOS, Android ya da ikisi — çalışma anında görseller ve medya, belki indirilebilir asset paketleri indiriyor ve verisi için bir HTTP API ile konuşuyor. Bir de cdn.com.tr hesabın. Kurulum bu kadar. CDN, uygulamanın HTTP üzerinden çektiği her şeyin önüne oturur ve kullanıcıya yakın bir edge'den, HTTPS üzerinden servis eder, yükü masseder.

Baştan bir dürüst sınır: uygulama ikilisinin kendisi — yayınladığın .ipa ya da .apk — App Store ve Play Store tarafından kendi ağlarında dağıtılır, yani CDN bunun yerine geçmez. CDN'in hızlandırdığı şey, uygulamanın çalışma anında çektiği her şeydir: görseller, medya, asset paketleri, remote config ve API'n. (Eğer build'leri doğrudan da dağıtıyorsan — kurumsal ya da sideload bir APK — onları da CDN depolamasından servis edebilirsin; oyun dağıtımı rehberine bak.)

Görselleri, medyayı ve asset paketlerini edge'den sun

Bir uygulamanın indirdiği en hacimli şey içeriktir: profil ve ürün görselleri, küçük resimler, ses ve video, indirilebilir asset paketleri veya seviyeler. Bu içeriği CDN depolamasına (ya da mevcut medya sunucunun önündeki bir pull CDN'in arkasına) koy; uygulama her dosyayı bir kıta ötedeki tek bir origin yerine en yakın edge'den çeker. İlk açılış ve içerik-yoğun ekranlar her yerde hızlı yüklenir, origin'in aynı görseli on bin kez servis etmeyi bırakır.

Her edge önbelleklemesinde olduğu gibi, değişebilecek her şeyin yolunu versiyonla — /assets/v42/pack.bin ya da URL'de bir build hash'i — ki yeni versiyon asla bayat olmayan yeni bir URL olsun, ve versiyonlu dosyaları sıkıca önbellekle. Gerçekten hiç değişmeyen içerik edge'de fiilen sonsuza dek önbelleğe alınabilir.

API yanıtlarını edge'de önbelleğe al (güvenli olan yerde)

Bir mobil API'nin döndürdüğünün çoğu her kullanıcı için aynıdır ve yavaş değişir: katalog, ana feed, bir lider tablosu, herkese açık config. Bu yanıtlar edge'de kısa bir TTL ile önbelleğe alınabilir; böylece bir dakikada on bin uygulama açılışı bir avuç origin isteğine çöker, ama her kullanıcı yine yakın bir edge'den yanıt alır. Kural basit: paylaşımlı ve yavaş değişeni önbellekle, kişisel olanı asla önbellekleme.

Paylaşımlı, önbelleklenebilir yanıtları public bir Cache-Control ve makul bir max-age (ya da edge için s-maxage) ile işaretle, kullanıcıya özel veya kimlik-doğrulamalı her şeyi ise private / no-store yap ki asla önbelleklenmesin veya yanlış kişiye servis edilmesin. Alttaki veri değiştiğinde önbelleklenmiş yolu purge et ki bir sonraki istek tazelesin. Bu bileşim, bir kullanıcının verisini bir diğerine asla sızdırmadan, sıcak paylaşımlı uç noktalarda sana edge hızı verir.

Cache-Control: paylaşımlı vs kullanıcıya özel yanıt

# paylasimli, yavas degisen yanit (katalog, herkese acik config, feed)
Cache-Control: public, s-maxage=60, stale-while-revalidate=30

# kullaniciya ozel veya kimlik-dogrulamali yanit — bunu asla onbellekleme
Cache-Control: private, no-store

Remote config ve feature flag'leri hızlı ilet

Çoğu uygulama açılışta küçük bir yapılandırma veya feature-flag belgesi çeker — ne gösterileceği, bir kullanıcının hangi deneyde olduğu, bozuk özellikler için kill-switch'ler. O JSON'ı CDN'de kısa bir önbellekle barındır. Edge'den servis edildiği için her uygulama başlangıçta onu hızlıca alır; ve purge edebildiğin için, bir flag'i çevirmek ya da bozuk bir özelliği kapatmak bir uygulama güncellemesi göndermeden tüm kullanıcı tabanında anında olur.

Onu küçük tut ve kısa önbellekle (on saniyeler ile birkaç dakika) ki bir değişiklik hızla yayılsın, ve hemen canlı olması gerektiğinde yayınlarken purge et. Bu, canlı bir uygulama için sahip olduğun en güvenli kaldıraçtır: mağaza incelemesi yok, zorunlu güncelleme yok — sadece istediğinde değiştirebileceğin, edge'den servis edilen bir belge.

CDN'den servis edilen remote-config.json

{
  "min_supported_version": "3.2.0",
  "features": {
    "new_checkout": true,
    "live_events": false
  },
  "banner": { "enabled": true, "url": "https://cdn.uygulaman.com/img/promo-v7.webp" }
}

Görselleri telefon ekranı ve mobil şebeke için optimize et

Telefonların ekranları küçük ve bağlantıları çoğu zaman yavaş ve kotalıdır; bu yüzden onlara masaüstü boyutunda görseller göndermek bant genişliği ve zaman israfıdır. Modern formatlar sun — WebP ya da AVIF — ve görselleri 400px'lik bir alana 3000px'lik bir fotoğraf göndermek yerine cihaza göre boyutlandır. Daha küçük, doğru-boyutlu görseller ekranların daha hızlı boyanması ve mobil şebekedeki kullanıcıların daha az veri harcaması demektir; ki bu, uygulamanın ne kadar akıcı hissettirdiğini doğrudan iyileştirir.

Edge bunu senin için yapabilir: görsel optimizasyonu ve anlık yeniden boyutlandırma, tek bir yüksek çözünürlüklü aslı istek başına doğru format ve boyuta çevirir, edge'de önbelleğe alınır ki iş bir kez yapılsın. Bunu yukarıdaki asset dağıtımıyla eşle; uygulamanın görselleri hem kullanıcıya yakın hem de gerektiğinden büyük olmayan boyutta olsun.

API'ni koru ve ani yükleri karşıla

Bir mobil backend patlamalar halinde vurulur: bir çıkış, bir push bildirimi, bir kampanya ya da viral bir an her uygulamayı aynı anda API'ne gönderir — ve mobil istemciler bir istek başarısız olur olmaz agresifçe yeniden deneyerek durumu kötüleştirir, küçük bir aksaklığı fırtınaya çevirir. Edge önbellekleme, paylaşımlı uç noktalarındaki okuma ani yükünü zaten masseder; böylece aynı isteklerden oluşan sel origin'in yerine ağ tarafından yanıtlanır.

Bunun üstüne, CDN WAF ve DDoS korumasını API'nin önüne koy ve rate limiting ekle ki tek bir istemci ya da IP giriş, kayıt veya masraflı bir uç noktayı dövemesin. Gerçek origin'in edge'in arkasında gizli kalır; böylece hem meşru dalgalanma hem de düpedüz saldırılar, onları massetmek için kurulmuş ağa iner. Sonuç: en çok ihtiyaç duyduğun gün akıcı kalan bir uygulama.

Buna yaslanan uygulamalar

İçerik-yoğun uygulamalar

Haber, sosyal ve medya uygulamaları görselleri, videoyu ve feed'leri edge'den sunar; böylece kaydırma dünyanın her yerindeki kullanıcı için hızlı kalır.

Oyunlar & asset paketleri

Mobil oyunlar asset paketlerini, seviyeleri ve remote config'i yakın bir edge'den çeker; böylece ilk açılış ve güncellemeler dünya genelinde hızlıdır.

API-tabanlı uygulamalar

API'nin paylaşımlı, yavaş değişen kısımlarını edge'de önbelleğe al, kullanıcıya özel veriyi private tut — kimsenin verisini sızdırmadan hızlı okuma.

Mobil uygulamalar için CDN — sık sorulanlar

CDN uygulamamı App Store veya Play Store'dan mı dağıtır?

Hayır, ve dürüst sınır bu. Mağazalar uygulama ikilisini kendi ağlarında dağıtır. CDN, uygulamanın çalışma anında indirdiği her şeyi — görseller, medya, asset paketleri, remote config — ve HTTP API'ni hızlandırır. Eğer build'leri doğrudan da dağıtıyorsan (kurumsal ya da sideload bir APK), onları da CDN depolamasından servis edebilirsin.

API yanıtlarımı güvenle önbelleğe alabilir miyim?

Herkes için aynı olan ve yavaş değişen yanıtlar için evet — katalog, herkese açık config, feed, lider tabloları. Bunları edge'de kısa bir TTL ile önbelleğe al ve veri değiştiğinde purge et. Kullanıcıya özel veya kimlik-doğrulamalı her şeyi private / no-store işaretle ki asla önbelleklenmesin veya yanlış kullanıcıya servis edilmesin.

Bu ilk açılışı nasıl hızlandırır?

İlk açılış en çok içeriği indirir — görseller, medya ve asset paketleri. Tek bir origin yerine en yakın edge'den servis edildiğinde bu içerik her yerdeki kullanıcıya daha hızlı ulaşır, ve versiyonlu yollar onu sıkıca önbelleğe almana izin verir ki tekrar açılışlar anında olsun.

Bir config veya feature-flag değişikliğini anında nasıl iterim?

Config JSON'ını CDN'de kısa bir önbellekle barındır ve yayınlarken purge et. Her uygulama bir sonraki açılışında ya da yenilemesinde taze belgeyi edge'den çeker — bir flag'i veya kill-switch'i çevirmek için mağaza incelemesi ve zorunlu uygulama güncellemesi yok.

CDN görselleri telefonlar için optimize edebilir mi?

Evet. WebP ya da AVIF sun ve büyük fotoğraflar göndermek yerine görselleri cihaza göre boyutlandır. Edge anlık olarak dönüştürüp yeniden boyutlandırabilir ve sonucu önbelleğe alabilir; böylece mobil şebekedeki telefonlar daha küçük, doğru-boyutlu görseller indirir ve ekranlar daha hızlı boyanır.