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.
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.
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¶m1=value1" -H "Authorization: Bearer YOUR-HARDAL-SUPER-SECRET-TOKEN"