Mekânsal Hafıza İnşa Etmek

Fiziksel dünya için bir Pinterest inşa etmekle üç ayımı geçirdim.

Fikir basit. Belirli GPS koordinatlarına dijital notlar, fotoğraflar veya hikayeler bırakıyorsunuz. İnsanlar bunları ancak fiziksel olarak tam o noktada durduklarında görebiliyorlar. Bu, gerçek dünyayı dijital zaman kapsüllerinden oluşan bir koleksiyona dönüştürüyor.

Konum tabanlı bir uygulama inşa etmek göründüğünden daha zordur. Teknoloji yığını hakkında öğrendiklerim şunlar:

Mekânsal Veritabanı Ölçeklenmek istiyorsanız enlem ve boylamı sadece basit sayılar olarak saklayamazsınız. Mekânsal indekslere ihtiyacınız var. PostgreSQL ile birlikte PostGIS kullandım.

Şunları yönetir:

  • R-tree ile mekânsal indeksleme
  • Yerleşik mesafe hesaplamaları
  • Hızlı yakınlık sorguları

Bir kullanıcının 50 metre yakınındaki anıları bulmanız gerekiyorsa, ağır işi PostGIS yapar.

Önbelleğe Alma Stratejisi Popüler turistik yerler çok fazla istek alır. Her iki saniyede bir veritabanına gitmek performans için kötüdür. Yoğun bölgelerdeki anı kimliklerini (ID) önbelleğe almak için Redis GEO komutlarını kullandım.

Profesyonel bir ipucu: Nesnenin tamamını Redis'te önbelleğe almayın. Sadece ID'leri önbelleğe alın. Bu, bellek kullanımınızı düşük tutar ve sorgu süresini 20ms'den 2ms'ye düşürür.

Yükleme Deseni Eğer sunucunuz her fotoğraf yüklemesini işlerse, yük altında çökecektir. İki aşamalı bir yükleme deseni kullandım:

  • İstemci, sunucudan önceden imzalanmış (pre-signed) bir URL ister
  • İstemci, dosyayı doğrudan Cloudflare R2'ye yükler
  • İstemci, yükleme bittiğinde sunucuya haber verir

S3 yerine R2'yi seçtim çünkü çıkış ücreti (egress fees) yok. Bu, kullanıcılar medya indirdiğinde tasarruf sağlar.

Neler İşe Yaradı

  • PostGIS ve Redis GEO, mekânsal sorguları hızlandırır.
  • Doğrudan R2'ye yüklemeler, arka uç (backend) kısmının ölçeklenmesini sağlar.
  • Go ve Gin, düşük bellek kullanımıyla yüksek performans sağlar.
  • Kademeli gizlilik (Özel, Arkadaşlar veya Genel), kullanıcıları korur.

Neler Yanlış Gitti

  • Yüksek binaların olduğu şehirlerde GPS doğruluğu tutarsızdır.
  • "Soğuk başlangıç" (cold start) sorunu gerçektir. Uygulamanın canlı hissettirmesi için çok sayıda kullanıcıya ihtiyacı var.
  • İçerik moderasyonu sürekli dikkat gerektirir.

Bunu inşa etmek bana, fiziksel konumun sosyal uygulamalar için hafife alınan bir boyut olduğunu öğretti. Dijital içerik, gerçek bir yere bağlandığında daha anlamlı hissettiriyor.

Kaynak: https://dev.to/kevinten10/building-spatial-memory-why-i-built-a-pinterest-for-the-physical-world-and-what-i-learned-bpm

İsteğe bağlı öğrenme topluluğu: https://t.me/GyaanSetuAi