Verilənlər kimi konfiqurasiya
(Bölmə: Memarlıq və Protokollar)
1) Fikir və «kod kimi konfiqurasiya» fərqi
Data kimi konfiqurasiya (Configuration as Data, CaD) - konfiqurasiya versiyaları, sxemləri, miqrasiyaları, audit və testləri ilə işləyən koddan asılı olmayan və biznes məlumatları kimi idarə olunan tipləşdirilmiş, deklarativ, təsdiqlənən model kimi təqdim olunur.
Konfiqurasiya yaratmaq məntiqinin şablon/skriptlərdə yaşadığı "kod kimi konfiqurasiya 'dan fərqli olaraq, CaD həqiqət mənbəyindən imperativliyi istisna edir: konfiqurasiya daxilində heç bir dövr, şərait və gizli məntiq yoxdur. Bütün - təmiz məlumat + ciddi sxem + siyasət.
Əsas məqsədlər: proqnozlaşdırma, diff qabiliyyəti, dəyişiklik təhlükəsizliyi, sürətli geri dönüş, mütərəqqi çatdırılma qabiliyyəti və avtomatik uyğunluq nəzarəti.
2) «Məlumat kimi» prinsipləri
1. Deklarativlik və dəqiqlik: Biz istədiyimiz vəziyyəti təsvir edirik, nailiyyət addımlarını deyil.
2. Tipik təhlükəsizlik və sxemlər: JSON Schema/Protobuf/Avro/ciddi müqavilələr üçün OpenAPI.
3. Artefaktın immutabilliyi: -şəkillər versiyalaşdırılır və imzalanır (provenance).
4. Validasiya və siyasət: paylaynda - sintaksis → semantika → policy-as-code (OPA, qaydalar).
5. Konfiqurasiyaların müşahidə edilməsi: loglarda/metriklərdə/izlərdə versiyanın izi.
6. Məsuliyyətin bölünməsi: verilənlər ( ), sxem (müqavilə), siyasət (məhdudiyyətlər), nəzarətçi (icra).
7. Modulluq və laylar: qlobal, regional, tenant-, ərzaq, fic səviyyələri, proqnozlaşdırıla bilən merj və prioritetlərlə.
3) Konfiqurasiya modelləşdirilməsi: müqavilə kimi sxem
Mahiyyət ailələri: marşrutlaşdırma, limitlər, ficheflages, tariflər, AB seqmentləri, kvotalar, risk qaydaları, maliyyə tənzimləmələri və s.
Növləri: açıq enum/oneOf, diapazonlar, regex, istinad bütövlüyü (ref/ID).
Sxemlərin versiyası: 'v1 → v1beta2 → v2' (deprecation-plan, miqrasiya).
Defaulting/Mutation: validasiya mərhələsində təhlükəsiz sükutlar; determinik tətbiq qaydası.
Constraint: biznes məhdudiyyətləri (məsələn, 'rateLimit <= 2000 rps' tenant).
yaml apiVersion: config. example. io/v1 kind: RateLimitPolicy metadata:
scope: tenant:acme spec:
targets:
- service: checkout endpoint: /api/pay method: POST limit:
unit: second value: 500 burst: 200 strategy: tokenBucket
4) Laylar, vərəsəlik və münaqişələrin həlli
Иерархия: `global → region → environment → tenant → product → cohort → user`.
Merj qaydaları: deklarativ - «sonuncu qalib gəldi» (override) və ya strateji (merge/patch/replace per field).
Kəsişmələrdə validasiya: münaqişə açarlarını qadağan edirik, açıq override tələb edirik.
Yekun effective-konfiqin vizuallaşdırılması məcburidir (determinated diffs).
5) Konfiqurasiya həyat dövrü (GitOps-paradiqma)
1. Həqiqət mənbəyi: məlumat + sxemləri + siyasətçiləri olan anbar.
2. Paypline:- sintaktik yoxlama (lint),
- sxem üzrə validasiya,
- semantik yoxlamalar/testlər,
- policy-as-code (məsələn, OPA/Rego),
- təhlükəsiz miqrasiya (bax § 7),
- snapshot imzası və nəşri.
- 3. Promosyon: 'dev/qa/staging/prod' və ya 'ring-0/.../ring-N' halqaları arasında PR-lar.
- 4. Çatdırılma: Nəzarətçilər/operatorlar təzə snapshots çəkmək, reconcile-tsikl vasitəsilə tətbiq.
- 5. Audit və geri dönüş: bütün dəyişikliklər izlənilir; geri - revert commit/rollback snapshot.
6) Konfiqurasiyaların çatdırılması və yayılması
Statik (pull-on-start): başlanğıcda snapshot yükləyin, yeniləmə üçün yenidən başlayın.
Dinamik (watch/stream): etcd/Consul/ZooKeeper, Kubernetes API/CRD, öz Config Service.
Protokollar: ETag/If-None-Match, long-poll/watch ilə gRPC/REST, snapshots + inkremental diffs.
Caching: TTL və imza ilə yerli snapshots; atom növbəsi (ikiqat bufer).
ardıcıllığı: strong (lider/kvorum) vs eventual (edge/IoT). Kritik sistemlər üçün - kvorum + RA.
Qlobal yuvarlanma: bölgələr/üzüklər (ring-deploy), eyni vaxtda zonaların limiti ilə.
7) Konfiqurasiya məlumatlarının miqrasiyası
DB üçün olduğu kimi, expand → migrate → contract:- Expand: İstehlakçıları sındırmadan sükutla yeni sahələr təqdim edirik.
- Migrate: backfills/konvertorlar (miqrasiya, idempotentlik skript-provayderləri).
- Contract: Bütün nəzarətçilər sxemin yeni versiyasında olduqda köhnəlmiş silin.
- Uyğunluq qaydası: köhnə məntiq yeni anlayır, yeni - keçid dövründə köhnə.
8) Siyasət, uyğunluq və təhlükəsizlik
Policy-as-code: Rego/Conftest/OPA Gatekeeper - təhlükəli dəyərlərə qadağalar (məsələn, 'timeout = 0', TLS-in bağlanması, limitsiz kvotalar).
RBAC/ABAC: Kim hansı bölmələri və hansı təbəqələri dəyişdirə bilər.
Həssas seqmentlər üçün çoxtərəfli təsdiq (four-eyes) (ödənişlər/limitlər).
Sirlər: Ümumi konfiqurasiyalardan (KMS, Vault, SOPS) kənarda saxlayırıq, konfiqada - yalnız istinad/referanslar.
İmzalar və etimad: çatdırılmaların yoxlanılması (attestations), imzalanmamış snapshotların qadağan edilməsi.
Dezinfeksiya: şablon və render zamanı injection qorunması.
9) Müşahidə, SLO və Risk İdarəetmə
Telemetriya etiketləri: '{config _ digest, config_version, ring, scope}' loqlarda/metriklərdə/treklərdə.
Golden-metrik-top: tətbiq vaxtı, uğur faizi, geri çəkilmə sayı, tutarlılıq vaxtı.
Konveyerlərin yuvarlanmasında geytlar: kod üçün olduğu kimi - SLO-nun deqradasiyası üçün kanarya addımları və avtomatik dayanma.
Dogfooding: ilk internal/beta-kohort.
10) Hot-reload, əməliyyat və tətbiq təhlükəsizliyi
Atomic switch: yeni konfiqurasiya yaddaş hazırlanır → vahid atom keçid.
Dry-run: tətbiq (sahə/siyasət qarşıdurması daxil olmaqla) validasiya və simulyasiya.
Partial failure: strategiya - əlaqəli komponentlər və ya deqradasiyanın aydın təsviri üçün 'tüm və ya heç bir şey ".
Backoff/Retry: Tətbiq səhv olarsa - eksponensial gecikmə ilə təhlükəsiz geri dönüş və təkrarlama.
11) Fitness konfiqurasiya alt çoxluğu kimi
Ficheflages xüsusi siyasətləri olan -məlumatlardır: seqmentlər üzrə hədəfləmə, radius məhdudiyyətləri, kill-switch.
Tələblər: hədəfləmə semantikası, audit, təhlükəsiz defoltlar, müştəri/server versiyalarının uyğunluğu.
12) Alətlər və daşıyıcılar
Daşıyıcılar: JSON/YAML/TOML/Protobuf/Avro (şəbəkə çatdırılması üçün - daha çox Protobuf/JSON).
Render/kompozisiya: Kustomize/Helm/Jsonnet (generatorlar kimi, lakin nəticə - təmiz məlumatlar).
Saxlama/şinlər: Git, OCI reyestrləri (artefaktlar kimi), S3 uyğun saxlama, etcd/Consul/KV.
Nəzarətçilər: öz operatorları, GitOps agentləri, Sidecar- -provayderləri.
Siyasət: OPA/Rego, Kyverno kimi mexanizmlər.
13) Çek vərəqləri
Dizayn
- Sxem birinci yerdədir (JSON Schema/Proto), tipləri/məhdudiyyətləri/defoltları təsvir edilmişdir.
- Sxemlərin versiyası və miqrasiyası sənədləşdirilmişdir.
- Qat iyerarxiyası və merj strategiyası müəyyən edilmiş və sınaqdan keçirilmişdir.
Paypline
- Lint → schema-validate → semantic tests → policy-check → sign → publish.
- Dry-run və rəyçilər üçün effective-konfiq vizuallaşdırılması.
- SLO avto-gates ilə konveyerlərin kanar yayılması.
Prod
- Qeydlərdə/metriklərdə 'config _ digest' var.
- Konfiqurasiya geri qaytarılması - Deple kodu ilə eyni düymə.
- Snapshot/backup konfiqurasiya və audit tarixi mövcuddur və yoxlanılır.
14) Tez-tez anti-nümunələr
Konfiqada imperiv: şərtlər/skriptlər/məntiq şablonları - təxmini və gözlənilməzdir.
Sirləri və ümumi parametrləri bir fayl/anbarda qarışdırın.
Qeyri-şəffaf merj: yekun qiymətin haradan gəldiyi bəlli deyil.
Heç bir sxem: «validno bütün» ⇒ prodda yük.
Ring/Canary olmadan qlobal düzəlişlər: hamı üçün ani deqradasiya.
Mühit sürüklənməsi: həqiqət mənbəyinin yanından kirayədə əl ilə düzəlişlər.
Məcburi əlil mexanizmi olmadan -cache uzun TTL.
15) Ssenarilər (eskizlər)
A. Regionlar üzrə trafik limitlərinin incə tənzimlənməsi
1. 'RateLimitPolicy' -də 'ring-0' dəyişikliyi ilə PR (daxili müştərilər).
2. Avtomatik yoxlamalar: sxem/siyasət (limit ≤ 2k rps).
3. 'ring-1' promosyonu (istifadəçilərin 5% -i), p95/error rate monitorinqi.
4. 'ring-N' genişləndirilməsi, snapshot fiksasiya, tapşırığın bağlanması.
B. Tarif şəbəkəsinin aktuallaşdırılması
güclü semantika və biznes siyasəti: ikiqat baxış, iki mərhələli promosyon, vaxt-pəncərə giriş, audit və ani geri dönüş imkanı.
C. kill-switch ilə qlobal ödəniş ficheflag- bayraq: hədəfləmə «employees → beta → 10% → 100%», astanadan aşağı düşdükdə avtomatik dayanma.
16) Zero-Downtime və mütərəqqi çatdırılma ilə inteqrasiya
Kanaryalar buraxılış halqaları ilə sinxronlaşdırılmışdır.
Versiyaların uyğunluğu: əvvəlcə genişləndirici sahələr, sonra kod, sonra sərtləşdirmə.
Shadow-konfiqlər: döyüş ilə müqayisə üçün paralel həll hesablanması (məsələn, limitinq).
17) Xülasə
«Məlumat kimi konfiqurasiya» yanaşması kövrək fayllardan dəqiq müqavilələr, validasiya və siyasətlərlə etibarlı domen modellərinə çevrilir. Bu, proqnozlaşdırıla bilən yamacların, təhlükəsiz təcrübələrin və hadisələrə sürətli reaksiyanın əsasını təşkil edir. Sxemləri rəsmiləşdirin, sirləri ayırın, GitOps və kanarya silahlarını tətbiq edin - və konfiqurasiya platformanın idarə olunan aktivinə çevrilərək risk olmağı dayandıracaq.