Son kilometre lojistik sektörü, her yıl yaklaşık %15 oranında başarısız ilk teslimatla karşı karşıya kalıyor. Sürücü evde kimseyi bulamadığı, güvenli bırakma noktası olmadığı ya da kapalı sitelerin girişinde takıldığında, yeniden deneme maliyeti ortalama 5-15 dolar arasında değişiyor. Bu rakam milyonlarca paket üzerinden düşünüldüğünde, yıllık milyarlarca dolarlık kayıplara denk geliyor. Peki, müşterilerin paketlerini kapılarına getirmek yerine, yerel bir teslimat merkezi ağı bu sorunu nasıl çözebilir?
Hold·My·Package adlı B2B platformu, bu problemi yerel işletmeleri (kuaförler, marketler, ortak çalışma alanları) mikro teslimat merkezleri olarak kullanarak çözüyor. Taşıyıcılar ilk teslimatta başarısız olduğunda, sistem paketi en yakın merkeze yönlendiriyor. Merkez paketi güvenle saklıyor ve müşterinin programına göre kapıya teslim ediyor. Proje, Vercel ve AWS veritabanlarıyla geliştirilmiş olup, dört farklı portal üzerinden yönetiliyor:
- Merkez Operatörleri: Paketleri kabul ediyor, coğrafi optimizasyonlu toplu teslimatlar oluşturuyor ve performans analizlerini takip ediyor.
- Müşteriler: Yeniden teslimat planlayabiliyor ve gerçek zamanlı bildirimler alıyor.
- Taşıyıcılar: Paketlerin yeniden yönlendirilme istatistiklerini ve maliyet tasarruflarını görüntülüyor.
- Ağ Yöneticileri: Şehir genelindeki merkezleri izleyerek operasyonel verimliliği sağlıyor.
Platformun teknoloji yığını, Next.js (Vercel), Aurora PostgreSQL Serverless v2, DynamoDB, Lambda ve Pusher’dan oluşuyor. PostGIS eklentisiyle coğrafi sorgulama yetenekleri kazanan Aurora, ilişkisel verilerin güvenliğini ve analitik hesaplamalarını yönetiyor. DynamoDB ise olay akışlarını işleyerek gerçek zamanlı bildirimleri tetikliyor.
İki Veritabanının Farklı Rollerini Anlamak
Hold·My·Package projesi, iki veritabanını birlikte kullanarak sistemin farklı ihtiyaçlarını karşılamayı hedefliyor. Aurora PostgreSQL, kullanıcı verilerinden teslimat planlarına kadar tüm ilişkisel verileri barındırırken, DynamoDB ise olay tabanlı işlemleri ve gerçek zamanlı senkronizasyonu yönetiyor. Bu ayrım, performans ve ölçeklenebilirlik açısından kritik bir avantaj sağlıyor.
Aurora PostgreSQL’in sunduğu PostGIS eklentisi, coğrafi sorgulamaları doğrudan veritabanı katmanında gerçekleştirmeyi mümkün kılıyor. Örneğin, bir paketin teslimat adresinden en yakın merkeze olan mesafesini hesaplamak için kullanılan SQL sorgusu şu şekilde:
SELECT id, name,
ST_Distance(location, ST_MakePoint(-104.99, 39.74)::geography) as distance_m
FROM hubs
WHERE ST_DWithin(location, ST_MakePoint(-104.99, 39.74)::geography, coverage_radius_m)
AND current_load < capacity
ORDER BY distance_m LIMIT 1;Bu sorguda, veritabanı hem mesafe hesaplamasını hem de kapasite kontrolünü aynı anda gerçekleştiriyor. Benzer şekilde, ST_ClusterDBSCAN fonksiyonu sayesinde yakın paketler coğrafi olarak gruplanabiliyor ve merkez operatörleri için optimize edilmiş toplu teslimatlar oluşturulabiliyor.
DynamoDB ise olay akışlarını yönetmek için kullanılıyor. Paketin durum değişiklikleri (teslimat denemesi, merkeze yönlendirme, yeniden planlama) her seferinde bir olay olarak kaydediliyor. Bu olaylar, dört farklı erişim modeli üzerinden sorgulanabiliyor:
- Müşteri Bildirim Akışı: Kullanıcının tüm paketlerine ait olayları listeleyen bir görünüm.
- Merkez Canlı Görünümü: Belirli bir merkezin anlık operasyonel durumu.
- Taşıyıcı Raporlama: Taşıyıcının günlük performans analizleri.
- Paket Zaman Çizelgesi: Belirli bir paketin tüm olay geçmişi.
DynamoDB’nin tek tablolu tasarımı, Global Secondary Index (GSI) kullanımı ve olay akışları (Streams) entegrasyonu, bu karmaşık sorgulamaları basitleştiriyor.
Gerçek Zamanlı Senkronizasyon ve Olay İşleme
Hold·My·Package’in en kritik bileşenlerinden biri, Aurora ve DynamoDB veritabanları arasındaki senkronizasyondur. Sistemde bir paketin durumu değiştiğinde, öncelikle Aurora’daki ilişkisel veriler güncelleniyor. Aynı anda, ilgili olay DynamoDB’ye kaydediliyor. Bu olay, otomatik olarak bir Lambda fonksiyonuna aktarılıyor ve ardından Pusher üzerinden gerçek zamanlı bildirimler gönderiliyor.
Lambda fonksiyonu, yalnızca 5KB boyutunda olup, herhangi bir dış bağımlılık gerektirmiyor. Doğal Node.js crypto modülüyle Pusher kimlik doğrulamasını gerçekleştiriyor. Fonksiyonun akışı şu şekilde işliyor:
- DynamoDB olay akışından gelen kayıtları (en fazla 10 adet) işliyor.
- Pusher’a gönderilecek bildirimleri oluşturuyor.
- Orijinal API çağrısını tamamlayarak müşterilere anında geri bildirim sağlıyor.
Bu mimari, olay tabanlı sistemlerde karşılaşılan senkronizasyon sorunlarını ortadan kaldırırken, aynı zamanda sistemin ölçeklenebilirliğini de artırıyor. Örneğin, birden fazla taşıyıcı aynı anda paket durumu güncelleyebilir ve sistem bu değişiklikleri çakışma olmadan yönetebilir.
Sonuç: Geleceğin Lojistik Altyapısı
Hold·My·Package projesi, son kilometre lojistikteki verimsizlikleri azaltmanın ötesinde, yerel ekonomilere de katkı sağlıyor. Küçük işletmeler, boş kalan alanlarını mikro teslimat merkezlerine dönüştürerek ek gelir elde edebiliyor. Müşteriler ise paketlerini güvenle almanın yanı sıra, gerçek zamanlı takip ve esnek teslimat seçeneklerine sahip oluyor. Taşıyıcılar ise yeniden deneme maliyetlerini düşürerek operasyonel verimliliklerini artırabiliyor.
Bu projenin başarısı, sadece teknolojinin değil, aynı zamanda yerel ekosistemlerin de bir araya gelmesiyle mümkün oldu. Gelecekte, bu tür mikro teslimat ağlarının daha da yaygınlaşmasıyla, lojistik sektöründe devrim niteliğinde değişiklikler yaşanması kaçınılmaz görünüyor.
Yapay zeka özeti
Son kilometre lojistiğinde başarısız teslimatları azaltmanın yolu: PostGIS’in coğrafi zekası ve DynamoDB’nin gerçek zamanlı olay akışlarıyla mikro teslimat merkezleri nasıl kurulur?