Şəbəkədə rabitə kanallarının optimallaşdırılması
1) Kanalların taksonomiyası və onların invariantları
Kanallar:- E-poçt - geniş miqyaslı və ucuz, lakin domen/IP nüfuzuna həssasdır.
- SMS/Voice - yüksək çatdırılma/təcili, yüksək qiymət, ölkələr üzrə incəliklər.
- Push (mobile/web) - anında və ucuz, icazələrdən/OS asılıdır.
- In-app/On-site - kontekstdə və «pulsuz», aktiv sessiya tələb edir.
- Messencerlər (WhatsApp/Telegram/Viber və s.) - ciddi şablonlar/siyasətlər, bəzən platforma-fees.
- Webhooks - tərəfdaşlar üçün «B2B-hadisələr» kanalı (texniki çatdırılma).
- Zəng mərkəzi/chat operatorları - mürəkkəb hallar üçün əl/yarım əl kanalları.
İnvariantlar: razılıq/məqsədlər, tezlik limitləri, vaxt pəncərələri (timezone/» sakit saat»), qiymət, SLA/SLO, məxfilik və« silinmə hüququ ».
2) Kommunikasiya qatının arxitekturası
mermaid flowchart LR
A [Producer: Product/Marketing/RCM] --> B [Orchestrator: Rules, Consents, SOR]
B --> C[Channel Adapters: email/sms/push/messenger/webhooks]
C --> D[Providers Pool: ESP/SMSC/FCM/APNs/Messenger APIs]
B --> E[Consent/Preference DB]
B --> F[Rate Limits/Queues/DLQ]
B --> G[Observability & SLO]
B --> H[Experiments (A/B, MAB)]
Əsas komponentlər:
- Orchestrator - kanal/marşrut seçimi, prioritetlər, bandling, dedup.
- Adapters - provayderlərə vahid API.
- Consent DB - qranulyar razılıq/» sakit saat «/kanal üstünlükləri.
- Queues - backpressure, eksponent ilə retralar, DLQ.
- Observability - telemetriya, korrelyasiya 'message _ id user_id campaign_id'.
3) «Kanal pasportu» və provayderlərin kataloqu
yaml channel_passport. v1:
channel: "sms"
purpose: ["security_otp","alerts","marketing_optin"]
jurisdictions: ["EU","TR","LATAM"]
consent_required: true quiet_hours: { start_local: "22:00", end_local: "08:00", except: ["security_otp"] }
slo:
delivery_within: { p95_ms: 30000 }
failure_rate: { max: "0. 8%" }
cost_targets:
max_cpd: "€0. 035" # cost per delivered providers:
- id: "twilio"
regions: ["EU","US"]
dlt: true price_map: { TR: "€0. 028", EU: "€0. 031" }
- id: "infobip"
regions: ["EU","TR","LATAM"]
price_map: { TR: "€0. 026", EU: "€0. 033" }
fallback_order: ["infobip","twilio"]
4) Kanal və marşrut seçimi (rabitə üçün SOR)
Meyarlar: razılıq və üstünlüklər, hadisənin kritikliyi, dəyəri, çatdırılma ehtimalı (deliverability score), latency SLO, «sakit saat», domen nüfuzu/IP, saturations.
Psevdokod:python def pick_route(ctx, channels):
allowed = [c for c in channels if has_consent(ctx. user, c) or c in ctx. legal_basis]
allowed = [c for c in allowed if not quiet_hours(ctx. localtime, c) or ctx. critical]
scored = []
for c in allowed:
p = provider_with_best_score(c, ctx. region, ctx. priority)
s = (w1deliverability(c,p,ctx. region) +
w2latency_score(c,p) +
w3cost_score(c,p) +
w4fatigue_penalty(ctx. user,c))
scored. append((s,c,p))
s,c,p = max(scored)
return (c,p)
5) Razılıq, üstünlüklər və «sakit saat»
Razılıq modeli:- Qranulyar: kanal × hədəf (security/alerts/marketing/transactional).
- Müvəqqəti pəncərələr (local TZ) və gündəlik kvotalar per kanal.
- DSAR: üstünlükləri əldə etmək/silmək/dəyişdirmək hüququ.
rego package comm. consent
deny["No consent for marketing"] {
input. purpose == "marketing"
not input. user. consent["marketing"][input. channel]
}
deny["Quiet hours violation"] {
input. channel in {"sms","push","call"}
t:= input. user. local_time is_between(t, "22:00", "08:00")
input. critical == false
}
6) Deliverability və kanalların gigiyenası
Email: SPF/DKIM/DMARC, BIMI, IP seqmentasiyası (əməliyyat vs promo), IP/Domain warming, abunə olmayan/şikayət siyahıları, adaptiv tezlik, məzmun bələdçiləri (tetik sözləri/URL-pharma olmadan).
SMS: DLR, alfanumerics/short codes, DLT/şablon qeydiyyatı (regional tələblər), LCR (Least-Cost Routing) keyfiyyəti nəzərə alınmaqla.
Push: açarlar/tokenlər, TTL, collapse-keys, bildiriş kateqoriyaları, «sakit rejim».
Messencerlər: şablonlar, dialoq pəncərələri (24h), əvvəlcədən razılaşmalar.
7) Davamlılıq: retray, idempotentlik, dedup
Idempotency-Key = `channel|provider|external_id`
Retrailer: eksponent + jitter, webhook/ESP API-də vaxt qutusu, «ədalətli deqradasiya» (fallback kanalı).
Dedup: 'message _ hash' və TTL-i pəncərədə saxlayın; konsumerlərdə - «seen-set».
DLQ: ayrı saxlama və əl/avtomatik re-drive, səbəblərin təhlili ilə.
Outbox/Inbox: prodüserdən orkestrə zəmanətli çatdırılma.
python def send(adapter, msg):
key = f"{adapter. name} {msg. external_id}"
if seen(key): return "OK"
try:
adapter. push(msg, timeout=3)
mark_seen(key); return "OK"
except Timeout:
if msg. can_fallback: return send(next_adapter(adapter), msg)
raise
8) Məhdudiyyətlər və qorunma (rate limiting, anti-spam/frod)
Limitlər: per user/day, per channel/day, per provider/rps, burst-kaps.
Fatigue score: şəxsi yorğunluq sayğacı (tezlik × mənfi siqnallar).
Anti-frod: OTP-nin «həddindən artıq» qorunması, device/ASN siqnalları, şablonlarda honey-tokens, «sms-bombing» qorunması.
Məzmun siyasətləri: şok məzmununun qadağan edilməsi, regional reklam normaları/yaş işarələri.
9) SLO, metrika və analitika
Tranzaksiya:- p95 latency до DLR/Open/Delivery, error-rate, DLR%, webhook ack%.
- OR/CTR, Unsubscribe/Complaint rate, Conversion/ARPU uplift, Incrementality (holdout).
- Cost per delivered (CPD), $/click, $/conversion, egress $/GB.
- Provider health score (DLR×latency×cost), fallback rate, quiet hours violations.
10) Təcrübələr: A/B və multiarm quldurlar
A/B: şablonlar, mövzular, göndərmə vaxtı, kanal.
MAB (UCB/Thompson): provayderlər/şablonlar arasında trafikin onlayn yenidən bölüşdürülməsi.
Gard: risk limiti, SLO/şikayətlərin pisləşməsi zamanı erkən dayanma.
11) Məzmun və personallaşdırma
Bandling: Bir neçə mesajın bir digest (kanal dostu) birləşdirilməsi.
Personalizasiya: seqmentlər/tövsiyələr, dinamik bloklar, lokalizasiya/valyuta.
Kontekst: an-trigger (behavioral), geo/vaxt faktorları, huninin «son addımı».
Şablon təhlükəsizliyi: enjeksiyon imkanı olmadan şablon render, dəyişənlərin məhdudlaşdırılması.
12) Webhooks inteqrasiyası (B2B kanalı)
Tələblər: imza (HMAC/Ed25519), anti-replay (timestamp + nonce), vaxt qutuları, idempotentlik və təkrar çatdırılma.
Playbook deqradasiya: ortaq kütləvi 5xx ilə - pauza/azalma RPS, növbə fallback, bildiriş.
POST /webhook
Headers:
X-Id: msg-uuid
X-Signature: ed25519:...
X-Timestamp: 1730388405
Body: { event_id, type, payload, version }
13) Maliyyə optimallaşdırılması (FinOps) və «yaşıl» təcrübələr
Keyfiyyət nəzərə alınmaqla SMS/Voice üçün LCR (yalnız qiymət deyil!).
Egress Control: webhooks üçün kompression/batching, yerli POP/edge.
Zaman yuvaları: marketinqi ucuz/yaşıl pəncərələrə göndərin, kompüter balansını saxlayın.
CI/CD-də Unit-iqtisadiyyat: «CPD-lər hədəfdən yuxarıda» - poçtları dayandırın.
rego package comm. finops deny["CPD budget exceeded"] {
input. forecast. cpd > input. targets. cpd_max input. campaign. type == "marketing"
}
14) Təhlükəsizlik və məxfilik
Hadisə/loqlarda PD-ni minimuma endirmək; e-mail/telefon əvəzinə təxəllüslər.
Tranzit və at rest şifrələmə; KMS/rotasiya.
Dəstək operatorları üçün Time Access (JIT).
DSAR/silmə: bütün kanallar və provayderlər tərəfindən hesabatları təsdiqləyən izləmə.
Abunələr/Opt-out: Bu məqsədin bütün kanalları üçün ani, keçici.
15) Pleybuklar (eskizlər)
15. 1 «Uğursuzluq deliverability email»
1. «Tranzaksiya» IP hovuzuna keçid;
2. aşağı engagement ilə seqmentlər üzrə tezlik/həcmi azaltmaq;
3. DNS/DMARC hesabatlarının yenidən generasiyası;
4. Məzmun/şikayətlərin auditi;
5. Post-mortem və IP warming plan.
15. 2 «Ölkədə SMS imtina Spayk»
1. LCR → alternativ provayder;
2. rps aşağı və eksponent ilə retry daxil;
3. Kritik mesajları voice fallback kimi qeyd edin;
4. Məhsulu gecikmələr barədə məlumatlandırın.
15. 3 «Webhook-alıcının uğursuzluğu»
1. Çevirmək DLQ;
2. Tərəfdaşı xəbərdar edin;
3. Test endpoint (health-probe);
4. Re-drive limit batches.
16) Anti-nümunələr
Razılıq/üstünlük olmadan kütləvi poçt → şikayətlər/bloklama.
Kritik kanal üçün vahid provayder → konsentrasiya riski.
DLQ/dedup → dublikat və təkrarlama uçqunu yoxdur.
Jitter/məhdudiyyətsiz «Kar» retrajlar → fırtına və rate limit ban.
Bir IP-də əməliyyat və marketinq e-poçtunu qarışdırın.
«Sakit saat» və yerli qaydalara məhəl qoymamaq → cərimələr/reputasiya itkiləri.
PII şablonlarda, loqlarda və vebhuklarda.
17) Memarın yoxlama siyahısı
1. Kanal pasportu/məqsədlər/yurisdiksiyalar və provayderlərin kataloqu varmı?
2. SOR kanal seçimi razılığı nəzərə alır, «sakit saat», dəyəri və SLO?
3. Idempotentlik/retray/dedup/DLQ və backpressure həyata keçirilmişdir?
4. Email: SPF/DKIM/DMARC/BIMI, ayrı IP hovuzlar?
5. SMS: Qiymət və keyfiyyətə görə LCR, DLT/şablonlara hazırlıq?
6. Push: kateqoriyalar, collapse-keys, TTL və «sakit rejimi»?
7. Webhooks: imza, anti-replay, vaxt qutuları, test qum qutusu?
8. Müşahidə müddəti: p95, DLR, OR/CTR, unsubscribe/complaints, CPD?
9. Təcrübələr: A/B/MAB orkestratorda, guardrails?
10. Gizlilik: PD-ni minimuma endirmək, DSAR-ı keçmək, ani opt-out?
11. FinOps/GreenOps: CPD/$/GB büdcə, ucuz pəncərələr, egress nəzarət?
12. Hadisə pleybukları və provayderlər üçün exit planları?
Nəticə
Rabitə kanallarının optimallaşdırılması kompromislərin orkestrləşməsidir: razılıq və keyfiyyət> sürət və dəyər, sabitlik və məxfilik> «hamıya göndərin». Vahid kanal pasportları, SOR marşrutlaşdırma, deliverability gigiyenası, davamlı çatdırılma nümunələri və iqtisadi metrlərlə müşahidə edin - və ünsiyyətiniz bütün ekosistem üçün proqnozlaşdırıla bilən, effektiv və təhlükəsiz olacaq.