Tenantların izolyasiyası və limitləri
Tenantların və limitlərin izolyasiyası çox tenant memarlığın təməlidir. Məqsəd: bir kirayəçinin hərəkətlərinin digərinin məlumatlarına, təhlükəsizliyinə və SLO-larına heç vaxt təsir etməməsi və resursların ədalətli və proqnozlaşdırıla bilən şəkildə paylanması. Aşağıda - məlumat səviyyəsindən hesablama planlaşdırmasına və insident menecmentinə qədər praktik həllər xəritəsi.
1) Təhdidlər və məqsədlər modeli
Təhdidlər
Kirayəçilər arasında məlumat sızması (məntiqi/cash/log vasitəsilə).
«Noisy neighbor»: Bir müştərinin sıçrayışları səbəbindən performansın deqradasiyası.
Imtiyazların artması (giriş siyasətində səhv).
Billing drift (istifadə və hesablama uyğunsuzluğu).
Kaskad uğursuzluğa davamlı ssenarilər (bir hadisə bir çoxlarının düşməsinə səbəb olur).
Məqsədlər
Məlumatların və sirlərin ciddi izolyasiyası.
Per-tenant limitlər/kvotalar və ədalətli planlaşdırma.
Şəffaf audit, müşahidə və billing.
Hadisələrin lokallaşdırılması və per tenant sürətli bərpası.
2) İzolyasiya səviyyələri (keçən model)
1. Məlumatlar
Açar və indekslərdə 'tenant _ id', Row-Level Security (RLS).
Şifrələmə: KMS iyerarxiyası → kirayəçi açarı (KEK) → məlumat açarları (DEK).
Yüksək tələblər altında ayrı sxemlər/BD (Silo), effektivlik üçün RLS ilə ümumi klaster (Pool).
Retenshn siyasəti və «unutmaq hüququ» per tenant, crypto-shredding açarları.
2. Hesablamalar
CPU/RAM/IO kvotaları, tenant üçün hovuzlar, «balanslı» növbələr.
GC/heap izolyasiyası (konteynerlər/JVM/Runtime parametrləri), parallelism limitləri.
Per-tenant autoscaling + backpressure.
3. Şəbəkə
Seqmentasiya: private endpoints/VPC, ACL 'tenant _ id'.
Sərhəddə rate limiting və per-tenant connection caps.
Plan/prioritet nəzərə alınmaqla DDoS/bot qorunması.
4. Əməliyyatlar və proseslər
Kirayə miqrasiyası, backup, DR, feature-flags.
Hadisələr - «mikro-blast radius»: 'tenant _ id' tərəfindən fusinq.
3) Giriş nəzarəti və icarəçi konteksti
AuthN: OIDC/SAML; tokenlər 'tenant _ id', 'org _ id', 'plan', 'scopes' daşıyır.
AuthZ: RBAC/ABAC (rollar + layihə, şöbə, region atributları).
Sərhəddəki kontekst: API-şluz tenant kontekstini çıxarır və validasiya edir, limitlərlə/kvotalarla tamamlayır, treyslərə yazır.
«Qoşa kilid» prinsipi: + RLS/DB siyasətində yoxlama.
4) Məlumatlar: sxemlər, cache, log
Sxemlər:- Shared-schema (row-level): maksimum effektivlik, ciddi RLS tələb olunur.
- Per-schema: izolyasiya/əməliyyat kompromis.
- Per-DB/cluster (Silo): VIP/tənzimlənən üçün.
Cache: açar prefiksləri 'tenant: {id}:...', planlara görə TTL, cache-stampede (lock/early refresh) qarşı müdafiə.
Qeydlər/meta-məlumatlar: PII-nin tam təxəllüsü, 'tenant _ id' filtrləri, müxtəlif kirayəçilərin qeydlərinin «yapışdırılmasının» qadağan edilməsi.
5) Trafik və əməliyyatların məhdudlaşdırılması
Əsas mexaniklər
Token Bucket: yumşaldılmış sıçrayışlar, parametrləşdirmə 'rate '/' burst'.
Leaky Bucket: throughput sabitləşdirilməsi.
Fixed Window/Sliding Window: zaman pəncərəsi ilə sadə/dəqiq kvotalar.
Concurrency limits: caps eyni zamanda sorğular/jobs.
Harada tətbiq olunur
Sərhəddə (L7/API-şlyuz) - əsas müdafiə və «sürətli imtina».
Mərkəzdə (xidmətlərdə/növbələrdə) - ikinci kontur və «fair share» üçün.
Siyasət
Tenant/plan/end-point/əməliyyat növü (ictimai API, ağır ixrac, inzibati fəaliyyət).
Priority-aware: VIP arbitraj böyük 'burst' və ağırlığı alır.
Idempotency-keys təhlükəsiz retras üçün.
Profil nümunəsi (anlayışlar)
Starter: 50 req/s, burst 100, 2 paralel ixrac.
Business: 200 req/s, burst 400, 5 ixrac.
Enterprise/VIP: 1000 req/s, burst 2000, xüsusi işçilər.
6) Kvotalar və ədalətli planlaşdırma (fairness)
Resurslar üzrə kvotalar: anbar, obyektlər, mesajlar/dəq, tapşırıqlar/saat, növbələrin ölçüsü.
Weighted Fair Queuing/Deficit Round Robin: ümumi oxuculara «balanslı» giriş.
Per-tenant worker pools: səs-küylü/kritik müştərilər üçün sərt izolyasiya.
Admission control: Kvotalar tükəndikdə yerinə yetirilmədən əvvəl uğursuzluq/deqradasiya.
Backoff + jitter: partlayışları sinxronlaşdırmamaq üçün eksponensial gecikmələr.
7) Müşahidə və billing per tenant
Məcburi etiketlər: 'tenant _ id', 'plan', 'region', 'endpoint', 'status'.
SLI/SLO per tenant: p95/p99 latency, error rate, availability, utilization, saturation.
Usage Metrics: CPU → aqreqator → invoys əməliyyatları/bayt/saniyə sayğacları.
Billing idempotentliyi: sərhəddə snapshotlar, ikiqat silinmələrdən/hadisələrin itkisindən qorunma.
Dashbord seqmentləri: VIP/tənzimlənən/yeni kirayəçilər.
8) Insidentlər, deqradasiya və DR «icarəçilər haqqında»
Fusinq 'tenant _ id': digərlərinə təsir etmədən xüsusi kirayəçinin təcili bağlanması/trottling.
Graceful Degradation: read-only rejimi, «qum qutusu» növbələr, gecikmiş vəzifələr.
RTO/RPO per tenant: hər plan üçün hədəf bərpa və itki dəyərləri.
Təlimlər: səs-küylü kirayəçi və DR yoxlaması ilə müntəzəm «oyun günləri».
9) Tələblərə uyğunluq (residency, gizlilik)
Bölgəyə tenanta pinning; cross-regional axınların aydın qaydaları.
Açarlara/məlumatlara giriş auditi, inzibati əməliyyatların jurnallaşdırılması.
per tenant məlumat retenshn və ixrac nəzarət.
10) Mini referans: bir araya necə
Sorğu axını
1. Edge (API-şlyuz): TLS → çıxarmaq 'tenant _ id' → token validation → rate/quotas tətbiq → treys qoymaq.
2. Polis mühərriki: kontekst 'tenant _ id/plan/features' → marşrut və limitlər haqqında qərar.
3. Xidmət: hüquqların yoxlanılması + 'tenant _ id' → RLS altında DB ilə işləmək → prefiksli cache.
4. Usage-yığım: əməliyyat/bayt sayğacları → aqreqator → billing.
Məlumatlar
Strategiya sxemi/DB (row-level/per-schema/per-DB).
KMS: kirayəçi açarları, rotasiya, çıxarıldığında crypto-shredding.
Hesablamalar
Tartı ilə növbələr, per tenant, concurrency ilə caps.
Per-tenant metriklərə görə autoscaling.
11) Psevdo-siyasət (oriyentasiya üçün)
yaml limits:
starter:
req_per_sec: 50 burst: 100 concurrency: 20 exports_parallel: 2 business:
req_per_sec: 200 burst: 400 concurrency: 100 exports_parallel: 5 enterprise:
req_per_sec: 1000 burst: 2000 concurrency: 500 exports_parallel: 20
quotas:
objects_max: { starter: 1_000_000, business: 20_000_000, enterprise: 100_000_000 }
storage_gb: { starter: 100, business: 1000, enterprise: 10000 }
12) Satış öncəsi yoxlama siyahısı
- Vahid həqiqət mənbəyi 'tenant _ id'; Hər yerdə atılır və loqo edilir.
- RLS/ACL DB + Service Check (Double Lock) səviyyəsində aktiv.
- Şifrələmə açarları per tenant, sənədləşdirilmiş rotasiya/silmə (crypto-shredding).
- Sərhəddə və daxildə limitlər/kvotalar; sınaqdan keçirilmiş sıçrayışlar və «burst».
- Fair-queuing və/və ya VIP üçün xüsusi işçilər; caps на concurrency.
- Per-tenant SLO və alertlər; seqmentlər üzrə daşbordlar.
- Usage-toplama idempotenten; billing ilə məlumat yoxlanılır.
- DR/hadisələr kirayəçi üçün lokallaşdırılır; 'tenant _ id' üçün fusinq işləyir.
- Cash/Log kirayəçilər tərəfindən bölünür; PII maskalı.
- Miqrasiya/backup/ixrac prosedurları - kirayə verilir.
13) Tipik səhvlər
RLS «xidməti» istifadəçi tərəfindən söndürülür/əhatə olunur - sızma riski.
Vahid qlobal limiter → «noisy neighbor» və SLO pozulması.
Prefikssiz ümumi caches/növbələr → məlumatların kəsişməsi.
Billing zirvə zamanı itirilən log sayır.
Kirayə fusinqin olmaması kaskad enişləridir.
Problemli 'tenant _ id' tapmaq imkanı olmadan «bir dalğa» miqrasiyası.
14) Sürətli strategiya seçimi
Tənzimlənən/VIP: Silo-data (per-DB), xüsusi işçilər, ciddi kvotalar və residency.
Kütləvi SaaS: Shared-schema + RLS, sərhəddə güclü limitlər, daxili fair-queuing.
Yük «səs-küylü/pulsativ»: böyük 'burst' + sərt concurrency-caps, backpressure və prioritet planları.
Nəticə
Tenantların və limitlərin təcrid olunması sərhədlər və ədalət haqqındadır. Aydın 'tenant _ id' yığını vasitəsilə, RLS və məlumat şifrələmə, sərhəddə və nüvədə limitləşdirmə və kvotalar, ədalətli planlaşdırıcı, hadisələrin müşahidə edilməsi və lokallaşdırılması - bütün bunlar birlikdə hər bir kirayəçi üçün təhlükəsizlik, proqnozlaşdırıla bilən keyfiyyət və şəffaf billing verir, hətta platformanın aqressiv böyüməsi ilə.