Maglumat hökmünde konfigurasiýa
(Bölüm: Binagärlik we teswirnamalar)
1) Pikir we "kod hökmünde konfigurasiýa" tapawudy
Data hökmünde konfigurasiýa (Configuration as Data, CaD), ýerine ýetirilýän koddan garaşsyz we iş maglumatlary: wersiýalar, shemalar, göçmeler, audit we synaglar bilen dolandyrylýan görnüşleşdirilen, deklaratiw, tassyklanan model hökmünde konfigurasiýany görkezmekdir.
Konweýt döretmek logikasy şablonlarda/skriptlerde ýaşaýan "kod ýaly konfigurasiýadan" tapawutlylykda, CaD hakykat çeşmesinden imperatiwligi aýyrýar: konweýtleriň içinde sikller, şertler we gizlin logika ýok. Hemme zat - arassa maglumatlar + berk shema + syýasat.
Esasy maksatlar: öňünden aýdyp bilmek, diff ukyplylygy, üýtgeşmeleriň howpsuzlygy, çalt yza gaýdyp gelmek, progressiw eltip bermek we laýyklygy awtomatiki gözegçilik etmek ukyby.
2) "Maglumat hökmünde" ýörelgeleri
1. Deklaratiw we birmeňzeş: gazanmagyň ädimlerini däl-de, islenýän ýagdaýy suratlandyrýarys.
2. Howpsuzlyk we shemalar: JSON Shema/Protobuf/Euro/Berk şertnamalar üçin OpenAPI.
3. Artefaktyň immuniteti: -suratlar wersiýa edilýär we gol çekilýär (provenance).
4. Tassyklama we syýasat: paýlaýjynda - sintaksis → semantika → policy-as-code (OPA, düzgünler).
5. Konfigurasiýalaryň syn edilişi: bloglarda/metriklerde/yzarlamalarda wersiýanyň yzy.
6. Jogapkärçiligiň bölünmegi: maglumatlar ( ), shema (şertnama), syýasat (çäklendirmeler), gözegçi (satuw).
7. Modullyk we gatlaklar: global, sebitleýin, tenant-, azyk, fiziki derejeler, öňünden aýdyp boljak merj we ileri tutulýan ugurlar bilen.
3) Konfigurasiýany modellemek: şertnama hökmünde shema
Tebigat maşgalalary: marşrutlaşdyryş, çäkler, fiziki baýlyklar, nyrhlar, AB-segmentler, kwotalar, töwekgelçilik düzgünleri, maliýe gurluşlary we ş.m.
Görnüşleri: açyk enum/oneOf, diapazonlar, regex, baglanyşyk bitewiligi (ref/ID).
Shemalaryň wersiýasy: 'v1 → v1beta2 → v2' (deprecation-plan, göçmek).
Defaulting/Mutation: tassyklama döwründe howpsuz dymmak; ulanmagyň kesgitlenen tertibi.
Constraint-ler: iş çäklendirmeleri (mysal üçin '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) Gapma-garşylyklary gatlaklar, miras almak we çözmek
Иерархия: `global → region → environment → tenant → product → cohort → user`.
Merj düzgünleri: deklaratiw - "soňky ýeňiş" (override) ýa-da strategiki (merge/patch/replace per field).
Çatryklarda tassyklama: gapma-garşy açarlary gadagan edýäris, aç-açan override talap edýäris.
Jemleýji effective-konfigiň wizualizasiýasy hökmanydyr (kesgitlenen diffler).
5) Konfigurasiýa ömri (GitOps-paradigma)
1. Hakykat çeşmesi: maglumatlar + shemalar + syýasatçylar bolan ammar.
2. Pipline:- sintaksis barlagy (lint),
- shema boýunça tassyklama,
- semantik barlaglar/synaglar,
- policy-as-code (mysal üçin OPA/Rego),
- howpsuz migrasiýa (§ 7 serediň),
- snapshotyň goly we çap edilmegi.
- 3. Mahabat: 'dev/qa/staging/prod' kataloglarynyň ýa-da 'ring-0/.../ring-N' halkalarynyň arasyndaky PR-lar.
- 4. Eltip bermek: Gözegçiler/operatorlar täze snapşotlary çekýärler, reconcile-sikl arkaly ulanýarlar.
- 5. Audit we öwrülişik: ähli üýtgeşmeler yzarlanýar; yza gaýdyp - revert commit/rollback snapshot.
6) Konwensiýalary eltip bermek we ýaýratmak
Statik (pull-on-start): başda snapshot ýüklemek, täzelenmek üçin täzeden başlamak.
Dinamiki (watch/stream): etcd/Consul/ZooKeeper, Kubernetes API/CRD, öz Config Service.
Protokollar: ETag/If-None-Match, long-poll/watch bilen gRPC/REST, snapshotlar + inkremental diffler.
Kesmek: TTL we goly bolan lokal snapshotlar; atom çalşygy (goşa bufer).
Yzygiderlilik: strong (lider/kworum) vs eventual (edge/IoT). Möhüm ulgamlar üçin - kworum RA.
Global aýlawlar: sebitler/halkalar boýunça (ring-deploy), bir wagtyň özünde zolaklaryň çäkleri bilen.
7) Konfigurasiýa maglumatlarynyň göçmegi
DB üçin bolşy ýaly, expand → migrate → contract:- Expand: sarp edijileri bozman, dymmak bilen täze meýdanlary girizýäris.
- Migrate: bekfiller/konwertorlar (migrasiýanyň skript-üpjün edijileri, idempotentlik).
- Contract: Ähli gözegçiler shemanyň täze wersiýasynda bolanda köne zatlary aýyrýarys.
- Gabat gelmek düzgüni: köne logika täze, täze - geçiş döwründe köne düşünýär.
8) Syýasat, laýyklyk we howpsuzlyk
Policy-as-code: Rego/Conftest/OPA Gatekeeper - howply bahalara gadaganlyklar (mysal üçin 'timeout = 0', TLS öçürmek, çäksiz kwotalar).
RBAC/ABAC: haýsy bölümleri we haýsy gatlaklary üýtgedip biler.
Duýgur segmentler üçin köptaraplaýyn tassyklama (four-eyes) (tölegler/çäkler).
Syrlar: Umumy konfigurasiýalardan (KMS, Vault, SOPS) daşarda saklaýarys, konfigada - diňe salgylanmalar/salgylanmalar.
Gollar we ynam: gowşuryşlary barlamak (attestations), gol çekilmedik snapshotlary gadagan etmek.
Arassalamak: şablonlarda we render edilende injection goragy.
9) Gözegçilik, SLO we töwekgelçiligi dolandyrmak
Telemetriýadaky bellikler: '{config _ digest, config_version, ring, scope}' loglarda/metriklerde/trekslerde.
Golden-metrika-toplar: ulanylyş wagty, üstünlik göterimi, yza gaýdyp geliş sany, yzygiderlilik wagty.
Konwensiýalar aýlananda geýtler: kod üçin bolşy ýaly - kanareýanyň ädimleri we SLO-nyň zaýalanmagy üçin awto-stop.
Dogfooding: ilki internal/beta-kohorta.
10) Hot-reload, amal ukyby we ulanmak howpsuzlygy
Atomic switch: täze konfigurasiýa ýatda taýýarlanýar → bir atom çalşygy.
Dry-run: ulanylyşy tassyklaýarys we simulýasiýa edýäris (meýdanlaryň/syýasatlaryň gapma-garşylygyny goşmak bilen).
Partial failure: Strategiýa - baglanyşykly komponentler üçin "hemme zat ýa-da hiç zat" ýa-da zaýalanmalaryň aýdyň beýany.
Backoff/Retry: nädogry ulanylsa - howpsuz yza çekilýär we eksponensial yza süýşürilýär.
11) Fiçeflaglar konfigurasiýalaryň kiçi toplumy hökmünde
Ficheflagy - bu ýörite syýasatlar: segmentler boýunça nyşana almak, açyş radiusyna çäklendirmeler, öldürmek-switch.
Talaplar: nyşanyň kesgitlenen semantikasy, audit, ygtybarly defoltlar, müşderiniň/serweriň wersiýalarynyň laýyklygy.
12) Gurallar we göterijiler
Göterijiler: JSON/YAML/TOML/Protobuf/Euro (tor eltip bermek üçin - köplenç Protobuf/JSON).
Render/Kompozisiýa: Kustomize/Helm/Jsonnet (generatorlar hökmünde, ýöne jemi - arassa maglumatlar).
Ammar/tekerler: Git, OCI-sanawlar (artefaktlar ýaly), S3-gabat gelýän ammar, etcd/Consul/KV.
Gözegçiler: öz operatorlary, GitOps-agentleri, Sidecar- -üpjün edijileri.
Syýasatlar: OPA/Rego, Kyverno-şuňa meňzeş mehanizmler.
13) Çek-listler
Dizaýn
- Shema birinji ýerde (JSON Schema/Proto), görnüşleri/çäklendirmeleri/defoltlary beýan edilýär.
- Shemalary wersiýalaşdyrmak we göçmek resminamalaşdyryldy.
- Gatlaklaryň iýerarhiýasy we merj strategiýasy kesgitlenildi we synagdan geçirildi.
Pipline
- Lint → schema-validate → semantic tests → policy-check → sign → publish.
- Dry-run we synçylar üçin effective-config wizualizasiýa.
- SLO-da awto-girtleri bolan konwensiýalaryň kanar aýlawy.
- Loglarda/metriklerde 'config _ digest' bar.
- Konfigurasiýany yzyna gaýtarmak - kody ibermek bilen birmeňzeş düwme.
- Konfigurasiýalaryň snapshotlary/bellikleri we audit taryhy elýeterlidir we barlanýar.
14) Ýygy-ýygydan anti-patternler
Konfigadaky imperiv: şertler/skriptlar/logika şablonlary - kadaly we öňünden aýdyp bolmajak.
Bir faýlda/repozitoriýada syrlary we umumy sazlamalary garyşdyrmak.
Aç-açan merj: jemleýji manynyň nireden gelendigi belli däl.
Shemanyň ýoklugy: "walidno hemme zat" ⇒ önümdäki bökdençlikler.
Halkasyz/kanareksiz global düzedişler: hemmeler üçin derrew pese gaçmak.
Daşky gurşawyň süýşmegi: hakykat çeşmesinden geçip barýarka el bilen düzedişler.
Mejbury maýyp mehanizmi bolmadyk -kesşde uzyn TTL.
15) Ssenariler (eskizler)
A. Sebitler boýunça traffigiň çäklerini inçe sazlamak
1. PR 'ring-0' -a 'RateLimitPolicy' üýtgetmeleri bilen (içerki müşderiler).
2. Awto-barlag: shema/syýasat (çäk ≤ 2k rps).
3. 'ring-1' -de mahabat (ulanyjylaryň 5%), p95/error rate gözegçiligi.
4. 'ring-N' -e çenli giňeltmek, snapshoty düzetmek, meseläni ýapmak.
B. Nyrh torunyň (maliýe gurluşlarynyň) aktuallaşdyrylmagy
güýçli semantika we işewürlik syýasaty: goşa syn, iki basgançakly mahabat, giriş wagty, audit we derrew yza gaýdyp gelmek mümkinçiligi.
C. Global töleg ficheflagy - öldürmek-switch bilen baýdak: nyşana almak "employees → beta → 10% → 100%", bosagadan aşak düşende awtomatiki durmak.
16) Zero-Downtime we progressiw eltip bermek bilen integrasiýa
Kanareýalar reliz halkalary bilen sinhronlaşdyryldy.
Wersiýalaryň laýyklygy: ilki giňeldýän meýdanlar, soň kod, soň berkitmek.
Shadow-konfigi: söweş bilen deňeşdirmek üçin çözgütleriň (mysal üçin, limiting) paralel hasaplamasy.
17) Gysgaça mazmuny
"Maglumat hökmünde konfigurasiýa" çemeleşmesi sazlamalary gowşak faýllardan anyk şertnamalar, tassyklamalar we syýasatlar bilen ygtybarly domen modellerine öwürýär. Bu öňünden aýdyp boljak ýaryşlaryň, howpsuz synaglaryň we hadysalara çalt reaksiýanyň esasyny düzýär. Shemalary resmileşdiriň, syrlary aýyryň, GitOps we kanar ýaraglaryny giriziň - konfigurasiýa platformanyň dolandyrylýan aktiwine öwrülip, töwekgelçiligi bes eder.