Əlçatanlıq zonaları və çarpaz bölgələr
1) Terminlər və məqsədlər
Əlçatanlıq zonası (AZ) - region daxilində təcrid olunmuş məlumat mərkəzi (öz gücü/şəbəkəsi).
Region - ümumi coğrafiyası və gecikmələri olan AZ qrupu.
- RTO (Recovery Time Objective) - nə qədər vaxt xidmət göstərə bilməzsiniz.
- RPO (Recovery Point Objective) - nə qədər məlumat itirmək olar.
Adətən: regionda 5-15 dəq ≤ RTO, RPO ~ 0-1 dəq, regionlararası - RTO ≤ 1 saat, RPO ≤ 5 dəq (məhsul və büdcədən asılıdır).
2) Memarlıq modelləri
2. 1 Regionda (multi-AZ)
Stateless qat: AZ üzrə paylanmış; balans - L4/L7-checks ilə.
Stateful-qat: AZ arasında sinxron replikasiya (və ya kvorum) olan klasterlər.
Cache/növbələr: AZ və avtomatik failover ilə şardlanmış klaster.
2. 2 Regionlararası (multi-region)
Active-Active: Hər iki bölgə trafiki qəbul edir.
istifadəçilər üçün minimal gizlilik, sürətli bərpa; − uyğunluq və münaqişələrin mürəkkəbliyi.
Active-Passive (hot/warm): əsas region xidmət, ikinci - isti/isti gözləmə.
daha asan məlumat, daha ucuz; − RTO yuxarıda.
Pilot-Light: minimum «işıq» (məlumatlar sinxronlaşdırılır, hesablamalar qəza zamanı açılır).
DR-backup: yalnız backaps və bərpa ssenarisi (ən ucuz və ən yavaş).
3) Məlumat və sabitlik
3. 1 Verilənlər bazası
Sinxron kvorum (RPO ≈ 0, ↑ latentlik): Region daxilində sinxron standbys ilə PostgreSQL; paylanmış DB (CockroachDB/Cassandra) yerli kvorumlar (Local Quorum) və AZ balansı ilə.
Asinxron regionlararası (RPO> 0, ↓ gizli): Postgres/MySQL məntiqi replikasiyası; «global tables» в KV/NoSQL; CDC → başqa bir bölgəyə axın.
Münaqişə qeydləri: active-active üçün CRDT/version və ya «həqiqət mənbəyi» strategiyasını (lider-region per key/tenant) istifadə edin.
3. 2 Event-sorsinq və növbələr
Növbələr/axınlar (Kafka/Pulsar/SQS-oxşar): mirror-topics və ya xaç-regional replikatorlar; açar - konsumerlərin idempotentliyi və açar dedupu.
Webhucks və xarici tərəfdaşlar: imza, replay var, hər iki zonada offset/kontrol nöqtələri saxlamaq.
3. 3 Cache
Yerli per-region caches (write-through/refresh-ahead); qlobal ümumi cache yalnız davamlı KV (əks halda split-brain) üçün. Hadisələrə görə əlil (pub/sub), TTL - mühafizəkar.
4) Qlobal trafik və şəbəkə konturu
GSLB/DNS: Geo-/Latency-based routing, health-checks, kanaryalar və qəzalar üçün «traffic-weights».
Anycast/Edge: giriş istifadəçiyə yaxınlaşır, sonra - ən yaxın sağlam bölgəyə.
Failover siyasətləri: Regional upstream hovuzları, kritik yollarda 0-RTT qadağası, regionlararası asılılıqlara az vaxt.
Retraj siyasətləri: eksponensial backoff + jitter, total-deadline məhdudiyyəti, idempotent PUT/POST ilə 'Idempotency-Key'.
5) Kubernetes və xidmət mesh
5. Bir klasterdə 1 Multi-AZ
topology spread constraints по `topology. kubernetes. io/zone`.
PodDisruptionBudget и priority classes.
NodeAffinity/Anti-Affinity - replikaların kod yerindən qaçın.
Saxlama zonaları: AZ replikasiyalı PV və ya paylanmış volume sistemləri.
5. 2 Multi-region (multi-cluster)
Deklarativ sinxronizasiya üçün ayrı per-region + GitOps (Argo CD/Flux) klasterləri.
Service Mesh (Istio/Linkerd): regionlar arasında locality-aware load-balancing və failover; mTLS, ümumi kimlik.
Traffic-shifting: mərhələli 1% → 10% → 50% yeni region; tutacaq «0%» dərhal.
6) RTO/RPO seçimi və nümunələrə bağlanması
7) Uğursuzluq testi (DR)
GameDays: rüblük tam miqyaslı ssenari «sönmüş region/AZ».
Chaos-injection: şəbəkə gecikmələri, paket itkiləri, broker/bazanın bir AZ-da bağlanması.
RTO/RPO faktiki: keçid vaxtını və məlumat itkisini ölçün, hesabatı dərc edin.
Runbooks: addım-addım təlimatlar və keçid üçün «qırmızı düymələr» (DNS weights, feature-flags, ağır feature off).
8) Müşahidə və idarəetmə
region/AZ/tenant üzrə metrik kəsiklər; p95/p99 marşrutlar üzrə gizli.
Bölgədə və qlobal hovuzda SLO və Error Budgets.
Alertlər: Bir bölgənin deqradasiyası, ikincisi normal trafik daşıyırsa, peycinqi «dayandırmamalıdır».
Трейсы: baggage `region`, `az`, `failover=true/false`; hesabatlar «failover nə qədər sorğu getdi».
9) Təhlükəsizlik və uyğunluq
Data residency: PII/ödəniş məlumatlarının müəyyən bölgələrə bağlanması (yurisdiksiya).
Secrets: cross-regional açarları və rotasiyası ilə KMS/smart-HSM; per-region açar materialları paylaşın.
mTLS və regionlar arasında qarşılıqlı etimad; ACL ilə cross-regional egress məhdudlaşdırın.
10) Dəyəri və qənaət
Edge cache + SWR - regionlararası egress azaldılması.
Müxtəlif saxlama sinifləri (hot/warm/cold) və downsampling metrik/log.
Regionlar üzrə avto-scale profilləri (gecə minimumu).
Şəkil kimliyi + mühit dəyişənləri/Helm values vasitəsilə fərqləndirilmiş konfiqurasiya.
11) Antipattern
Bütün sistem üçün bir Stateful Master; kvorum olmadan split-brain.
Bölgələrarası sinxron qeyd tək RDBMS (dözülməz gecikmə).
CRDT olmadan güclü sabitlik ilə qlobal cache → tıxaclar və «fantoms».
İdempotentlik olmadan retrajlar → əməliyyatların/ödənişlərin dublikatları.
Vahid «qlobal» SLO - bir bölgənin uğursuzluğunu gizlədir.
Heç bir müntəzəm DR təlimləri yoxdur - planlar döyüşdə işləmir.
12) iGaming/Maliyyə Xüsusiyyətləri
Ödəniş provayderləri/KOS regional olaraq seçilir; sağlamlıq siqnalları ilə PSP smart-routing edin, ehtiyat failover.
Yurisdiksiya: Ölkə/region daxilində PII və əməliyyat jurnallarının saxlanması; cross-region - yalnız aqreqatlar/anonim.
Limitlər/məsuliyyətli oyun: yerli qaydalar və saatlar - regionlar arasında «alnınıza» replikasiya etməyin, hadisə uyğunluğundan istifadə edin.
Bonuslar/balans: idempotent açarları və «həqiqət mənbəyi» per tenant/region; DR sonra reconcile jobs.
13) Mini reseptlər (psevdokonfiqlər)
13. 1 Envoy locality-aware + failover
yaml load_assignment:
endpoints:
- locality: { region: eu, zone: eu-a }
lb_endpoints: [{ endpoint: { address:... } }]
- locality: { region: eu, zone: eu-b }
lb_endpoints: [{ endpoint: { address:... } }]
- locality: { region: us, zone: us-a } # failover target lb_endpoints: [{ endpoint: { address:... } }]
common_lb_config:
zone_aware_lb_config: {}
locality_weighted_lb_config: {}
outlier_detection:
consecutive_5xx: 5 base_ejection_time: 30s
13. 2 Kubernetes topology spread
yaml spec:
topologySpreadConstraints:
- maxSkew: 1 topologyKey: topology. kubernetes. io/zone whenUnsatisfiable: DoNotSchedule labelSelector: { matchLabels: { app: api } }
13. 3 DNS çəkisi feylover (ideya)
'weight (eu) = 90', 'weight (us) = 10' → deqradasiya zamanı 'eu' avtomatik olaraq 'us' -a sürüşür. Health-checks və aşağı TTL (lakin çox aqressiv deyil, 30-120 s).
14) Prod hazırlıq yoxlama siyahısı
- RTO/RPO per xidmət müəyyən və biznes ilə razılaşdırılmışdır.
- Stateless AZ üzrə paylanır; stateful kvorum/replikasiya və başa düşülən sabitlik modelinə malikdir.
- Bölgələrarası replikasiya (asinxron/CDC), münaqişə/deduplikator testləri.
- GSLB/Anycast özelleştirilmiş, health-checks və weights avtomatlaşdırılır.
- Kubernetes: topology-spread, PDB, anti-affinity; multi-cluster GitOps.
- Jitter ilə retray, write idempotent; regionlararası qısa vaxt.
- DR-təlimlər, ölçülmüş faktiki RTO/RPO; aktual runbook.
- region/AZ, SLO və burn-rate üzrə müşahidə, alertlər normal işləməyi «əngəlləmir».
- Data residency/secrets/açarları tənzimləyiciyə uyğundur.
- İqtisadiyyat: egress, saxlama, avtoskeyl profilləri nəzarət altındadır.
15) TL; DR
Multi-AZ-ı baza təbəqəsi, multi-region-biznesin sığortası kimi qurun. RTO/RPO və dəyəri altında bir model (active-active/standby) seçin, məlumatlarınızı qəsdən təkrarlayın (kvorumlar/CDC/CRDT), GSLB/Anycast və locality-aware balans vasitəsilə qlobal trafiki idarə edin. Məcburi: idempotentlik, qısa vaxt, müntəzəm DR təlimləri, bölgə/AZ kəsiklərində SLO/metriklər. iGaming/maliyyə üçün regional PSP/KYC, məlumat tələbləri və yurisdiksiyalar üzrə ayrı SLO əlavə edin.