Server-side Pub/Sub Mesajlaşma Nedir?

Pub/Sub modeli, sunucu taraflı ve first-party veri iletimini optimize eden, dağıtık sistemler için ideal bir mesajlaşma çözümüdür.

Hardal
16.09.2024

Pub/Sub (Publish/Subscribe), bir mesajlaşma modelidir ve özellikle dağıtık sistemlerde veri iletimi ve iletişimi kolaylaştırmak için kullanılır. Aslında modelde, iki temel rol vardır: yayıncı (publisher) ve abone (subscriber).

Hardal ile de bu sistemi, %100 sunucu taraflı (server-side) ve birincil-taraflı (first-party) çalıştırabilirisiniz.

Hardal pub-sub

Pub/Sub Nasıl Çalışır?

  • Publisher: Yayıncılar mesaj üretir ve bu mesajları belirli konulara (topics) yayınlar. Yayıncılar mesajın kimler tarafından alındığını bilmez.

  • Subscriber: Aboneler, ilgilendikleri konulara abone olurlar. Aboneler, yalnızca abone oldukları konularda yayınlanan mesajları alırlar. Bir abone, bir veya birden fazla konuya abone olabilir.

  • Mesaj Aracısı (Broker): Yayıncı ile abone arasında bir mesaj aracı (broker) bulunur. Yayıncı mesajları aracılara gönderir ve aracı bu mesajları doğru abonelere iletir. - Bu kismi Hardal olarak dusunun.

Şirketlerin Neden Pub/Sub'a İhtiyacı var?

Son kullanıcı uygulamalarından gelen event bazlı analitik verilerini veya mevcut sisteminizdeki (Bu şirketinize ait bir CRM ya da first-party bir veri kaynağınız da olabilir.) sunucu verilerini kullanmak için bu verileri Pub/Sub'a yönlendirebilirsiniz. Daha sonra bu verileri, veritabanlarına DataFlow gibi akış işleme aracı ile kullanabilirsiniz.

Bu veritabanlarına örnek olarak da BigQuery ya da Cloud Storage verilebilir.

Kısaca Pub/Sub, birçok istemciden aynı anda olay toplamanızı sağlar.

Boylelikle Pub/Sub modelini server-side uzerinden kullanmak, şu avantajları sağlayabilir:

1. Gerçek Zamanlı Veri İşleme

Pub/Sub ile kullanıcıların sitede yaptığı işlemler (sepete ürün ekleme, satın alma, ürün inceleme, vb.) gerçek zamanlı olarak toplanabilir. Bu, anlık bildirimler ve pazarlama kampanyaları gibi fırsatların anında değerlendirilmesini sağlar. Örneğin:

  • Anlık Kampanyalar: Belirli bir ürünü çok sayıda kişi sepete eklerse, o üründe kısa süreli indirimler başlatılabilir.
  • Kişiselleştirilmiş Tavsiyeler: Gerçek zamanlı verilerle müşterilere daha iyi ürün önerileri sunabilirsiniz.

2. Ölçeklenebilirlik

E-ticaret siteleri genellikle yüksek trafik alır, özellikle indirim dönemlerinde veya özel günlerde. Pub/Sub, aynı anda binlerce veya milyonlarca kullanıcıdan gelen olayları yönetebilir, böylece sisteminize fazla yük binmez. Bu sayede:

  • Yüksek Trafikte Stabilite: Yoğun dönemlerde sistem performansını düşürmeden sorunsuz veri aktarımı sağlanır.
  • Genişletilebilir Sistem: Müşteri sayınız arttıkça altyapınızı kolayca genişletebilirsiniz.

3. Asenkron İşlemler

Sipariş, ödeme veya ürün sorgulama gibi işlemler asenkron bir şekilde yapılabilir. Bu, müşterilerin bekleme sürelerini azaltır ve işlerin arka planda gerçekleşmesine olanak tanır:

  • Hızlı Kullanıcı Deneyimi: Müşteriler bir sipariş verdikten sonra bu işlemin arka planda işlenmesini beklemek zorunda kalmazlar.
  • Sorunsuz Süreçler: Sipariş işleme, fatura kesme veya stok güncellemeleri gibi işlemler sırasıyla ve sorunsuz yapılır.

4. Veri Kaybını Önleme

Pub/Sub ile gelen veriler bir kuyruk sistemine alınır ve işlenmeden önce kaydedilir. Bu, olası sunucu kesintileri ya da hata durumlarında veri kaybını önler. Özellikle kritik e-ticaret olayları (satın alma, ödeme bilgileri, vs.) için bu oldukça önemlidir:

  • Veri Güvenliği: Kullanıcıların satın alma geçmişi, ödeme bilgileri veya ürün siparişleri kaybolmaz.
  • Hata Toleransı: Sunucunuz geçici olarak devre dışı kalsa bile, sistem toparlandığında veri kaldığı yerden işlenmeye devam eder.

5. Segmentasyon ve Hedefleme

Pub/Sub ile topladığınız kullanıcı etkileşim verilerini analiz ederek müşteri segmentleri oluşturabilirsiniz. Bu sayede daha hedefli pazarlama kampanyaları ve kişiselleştirilmiş deneyimler sunabilirsiniz:

  • Kişiselleştirilmiş E-postalar: Örneğin, sepette ürün bırakan kullanıcılara hatırlatma e-postaları gönderebilirsiniz.
  • Dinamik Reklamlar: Farklı segmentlere özel ürün kampanyaları ve reklamlar oluşturabilirsiniz.

Nasıl Kullanılır?

Hardal Custom Endpoint API'sini iki farklı istek metoduyla kullanabilirsiniz.

POST

/pubsub

İstek Formatı

Parametre Tip Zorunlu Açıklama
messages Message[] Evet Gönderilecek mesajların listesi
pubsub "gcp" Evet Pub/Sub bulut sağlayıcısı, AWS, GCP vb.
Ekstra Parametreler "string" Hayır Ekstra query parametreler attribute olarak kabul edilir

Mesaj Tipi

Alan Tip Açıklama
value string Mesajın içeriği
attributes {"key": "value"} Mesaj ile ilgili ek özellikler
messageId string Mesajın benzersiz ID'si
publishTime DateTime String Mesajın gönderilme zamanı (ISO 8601)

Örnek POST İsteği

curl -X POST https://s2s.yourcustomdomain.com/pubsub \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR-HARDAL-SUPER-SECRET-TOKEN" \
  -d '{    
    "messages": [
      {
        "value": "Test",
        "attributes": {
          "language": "English",
          "greeting": "formal"
        },
        "messageId": "c1d7e88a-4e35-4e8e-9a0f-8c9fbd9d1123",
        "publishTime": "2024-09-09T12:30:45.123Z"
      }
    ],
    "pubsub": "gcp"
  }'

GET

/pubsub

İstek Formatı

Parametre Tip Zorunlu Açıklama
messages Message[] Evet Gönderilecek mesajların listesi
pubsub "gcp" Evet Pub/Sub bulut sağlayıcısı, AWS, GCP vb.
Ekstra Parametreler "string" Hayır Ekstra query parametreler attribute olarak kabul edilir

Örnek GET İsteği

curl "https://s2s.yourcustomdomain.com/pubsub?CLICK_ID=112233&PUBSUB=gcp&param1=value1" -H "Authorization: Bearer YOUR-HARDAL-SUPER-SECRET-TOKEN"

Sources