Konfiqurasiya versiyalarına nəzarət
1) Niyə konfiqurasiya versiyası
Konfiqurasiya həyata keçirilən siyasətdir: marşrutlaşdırma, limitlər, fiç bayraqları, giriş, məlumat sxemləri müəyyən edir. Versiyalara nəzarət dəyişiklikləri təkrarlanabilir, nəzərəçarpacaq və geri döndürülebilir edir: MTTR və change-failure rate-i ixtisar edir, "prodda sehr 'i aradan qaldırır, təhlükəsizlik və uyğunluq üçün audit verir.
2) Konfiqurasiya taksonomiyası
Infrastruktur (IaC): klasterlər, şəbəkələr, LB, DB, növbələr.
Xidmət: proqram parametrləri, resurslar, limitlər, vaxtlar, retralar.
Məhsul/biznes məntiqi: tariflər, AB təcrübələri, məzmun qaydaları.
Data/DataOps: sxemlərin müqavilələri, təzəlik SLA, transformasiya.
Təhlükəsizlik: giriş siyasətləri, rollar, açarlar/sertifikatlar (özləri sirləri - repo xaricində).
Müşahidə: SLI/SLO, alertlər, daşbordlar.
Qayda: Sistemin davranışına təsir edən hər şey konfiqurasiyadır və versiyanın altında yaşamalıdır.
3) Versiyaların idarə edilməsi prinsipləri
1. GitOps: Həqiqətin yeganə mənbəyi anbardır; PR və avtomatik paylaynlar vasitəsilə dəyişikliklər.
2. Deklarativlik: addım skriptləri deyil, hədəf vəziyyətinin təsviri.
3. Artefaktların immutabilliyi: → mütləq materiallaşdırıla bilən snapshot.
4. Sxemlər və validasiya: JSON/YAML-sxema, ciddi tiplər, məcburi sahələr.
5. 'env' kimi mühit - qovluqlar/overlay (dev/stage/prod), fərqlər minimal və açıqdır.
6. İdempotentlik və geri dönüşlər: konfiqurasiya hər hansı bir release geri (revert/rollback).
7. Audit və izlənilebilirlik: müəllif, səbəb, bilet/RFC, dəyişiklik imzaları.
4) Versiyalaşdırma strategiyaları
Konfiqurasiya paketləri üçün SemVer ('MAJOR. MINOR. PATCH`):- MAJOR - sxemlərdə/siyasətlərdə uyğunsuz dəyişikliklər.
- MINOR - yeni sahələr/qaydalar, əks uyğunluq.
- PATCH - sxemləri dəyişdirmədən dəyərləri düzəltmək.
- Tag-relizlər və release notes: nə dəyişdirilir, necə geri, nəzarət nöqtələri.
- Pinning/lock faylları: asılılıq versiyalarını (modullar, çartlar) qeyd edirik.
- Matrix versiyası: X tətbiqinin artefaktı Y konfiqurasiyası ilə uyğundur (xidmət kataloqunda matris).
5) Repozitorun təşkili
config-repo/
policies/ # общие политики (RBAC, SLO, алерты)
services/
checkout/
schema/ # JSON/YAML схемы конфигов base/ # дефолтные значения overlays/
dev/
stage/
prod/
data-contracts/ # схемы данных, SLA свежести releases/ # теги, changelog, артефакты валидации tools/ # линтеры, генераторы, тесты
Filial: trunk-based (main) + qısa feature-filiallar. Merj - yalnız məcburi CI ilə PR vasitəsilə.
6) Validasiya və test
Sxem: Hər bir dəyişiklik sxem yoxlamasından keçir (required, enum, ranges).
Statik linterlər: format, açarlar, dubllar, qadağan olunmuş sahələr.
Uyğunluq testləri: servis/siyahı versiyası qum qutusunda qaldırılır.
Nəzarət run: dry-run applications, «what-if» hədəf vəziyyəti diff.
Siyasət-as-code: qəbul qaydaları (Rego/CEL) - kim və nə dəyişə bilər.
7) Konfiqurasiya yayılması və geri çəkilməsi
Progressive delivery: 1% → 5% → 25% SLO gardrails ilə kanarya.
Deploi qapısı: aktiv SEV-1 yoxdur, alertlər yaşıl, imzalar etibarlıdır, geri dönüş hazırdır.
Geri dönüş: 'revert tag vX. Y.Z 'və ya əvvəlki snapshot keçid; Geri qaytarma komandaları runbook sənədləşdirilmişdir.
Reliz şərhləri: konfiqin versiyası hadisələrlə tez bir zamanda əlaqələndirmək üçün metrik/loglarda dərc olunur.
8) Dinamik və uzaqdan konfiqurasiyası
Remote config/feature flags: parametrləri restarts olmadan dəyişdirin; bütün bayraqlar da GitOps altında.
Sərhədlər: hansı parametrlərin dinamik olaraq dəyişdirilməsinə icazə verilir (ağ siyahıların siyahısı).
Cache və tutarlılıq: TTL, versiyası, atomik dəsti əvəz (iki fazalı nəşr).
Təhlükəsiz məhəccərlər: SLO-dan çıxarkən runtime-dəyişikliklər, auto-rollback üçün limitlər və diapazonlar.
9) Sirlər və həssas məlumatlar
Heç vaxt repoda sirləri saxlamırıq. Konfiqurasiyalarda - yalnız link/playsholderlər.
Lazım olduqda konfiqurasiya fayllarının şifrələnməsi: gizli/açar meneceri ilə inteqrasiya.
Rotasiya və JIT: giriş əməliyyatlar zamanı verilir; hərəkət izi dəyişməz.
Sahə maskası: Validasiya PII/sirlərin PII-yə daxil olmasını qadağan edir.
10) Ətraf mühitin idarə edilməsi
Base + overlays: dev/stage/prod arasındakı fərqlər minimal və şəffafdır.
Artefaktlar üzrə promotion: stage-dən keçən eyni snapshot prod-da irəliləyir.
Müvəqqəti pəncərələr: növbə dəyişikliyi zamanı konfiqurasiya dəyişiklikləri baş vermir; risk-high - RFC və xidmət pəncərəsi.
11) Sürüklənmənin aşkarlanması və aradan qaldırılması
Controller faktiki və raportit diff ilə hədəf vəziyyəti müqayisə edir.
Drift-alert: Page yalnız kritik uyğunsuzluqlarda; qalanları - Ticket.
Avto-remediasiya: icazə verildikdə - hədəf vəziyyətə qayıtmaq.
Əl düzəlişlərinin auditi: hər hansı bir «kubectl edit/ssh» → proses hadisəsi və CAPA.
12) Konfiqurasiya kataloqu və sahiblik
Xidmət kataloqu: sahibi, SLO, bağlı siyasətlər, sxemlər, versiyalar, uyğunluq.
RACI: kim təklif edir, kim revuit edir, kim təsdiq edir; yüksək risk üçün CAB.
Şəffaflıq: Hər girişin PR/biletlərə/AAR versiyalarının tarixi və istinadları var.
13) Yetkinlik metrikası
Coverage:% GitOps altında xidmətlər/siyasətçilər (hədəf ≥ 95%).
Lead time-dəyişikliklər: PR-dən prod-a median.
Change failure rate: geri çəkilmə/hadisə ilə pay -relizlər.
Drift rate: uyğunsuzluqların sayı/həftə və aradan qaldırılması vaxt.
Rollback time: media əvvəlki versiyasına bərpa.
Audit completeness: tam evidence ilə dəyişikliklər payı (validatorlar, dry-run, rəylər).
14) Çek vərəqləri
Konfiqurasiya dəyişdirilməzdən əvvəl
- Bir bilet/RFC və dəyişiklik sahibi var.
- Sxemlər və linterlər təsdiqləndi.
- Runbook geri plan və komanda var.
- Qapı: testlər yaşıl, imzalar etibarlıdır, aktiv SEV-1 yoxdur.
- Yüksək risk - təyin edilmiş xidmət pəncərəsi.
Yayma zamanı
- Kanarya və SLO gardrails aktivdir.
- Versiyanın şərhləri dərc olunur.
- Kanalda əks-mesajlar var; MW qaydalarına görə alert səs-küy yatırılır.
Sonra
- Observation window keçdi, SLO yaşıl.
- Nəticələr və evidence (əvvəl/sonra cədvəllər, dry-run hesabatları) biletə əlavə edilmişdir.
- Lazım olduqda yenilənmiş sxemlər/sənədlər.
15) Mini şablonlar
15. 1 Konfiqurasiya sxemi (YAML-sxema, fraqment)
yaml type: object required: [service, timeouts, retries]
properties:
service: { type: string, pattern: "^[a-z0-9-]+$" }
timeouts:
type: object properties:
connect_ms: { type: integer, minimum: 50, maximum: 5000 }
request_ms: { type: integer, minimum: 100, maximum: 20000 }
retries:
type: object properties:
attempts: { type: integer, minimum: 0, maximum: 10 }
backoff_ms: { type: integer, minimum: 0, maximum: 5000 }
15. 2 Əsas + overley prod
yaml services/checkout/base/config.yaml service: checkout timeouts: { connect_ms: 200, request_ms: 1500 }
retries: { attempts: 2, backoff_ms: 200 }
limits: { rps: 500 }
features:
degrade_search: false psp_a_weight: 80 psp_b_weight: 20
yaml services/checkout/overlays/prod/config.yaml limits: { rps: 1200 }
features:
psp_a_weight: 70 psp_b_weight: 30
15. 3 Qəbul siyasəti (ideya)
yaml allow_change_when:
tests: passed schema_validation: passed active_incidents: none_of [SEV-0, SEV-1]
rollback_plan: present signed_by: ["owner:team-checkout","platform-sre"]
15. 4 Konfiqin buraxılış kartı
Release: checkout-config v2.3.1
Scope: prod EU
Changes: psp_b_weight 20→30, request_ms 1500→1300
Risk: Medium (маршрутизация платежей)
Canary: 1%→5%→25% (30/30/30 мин), guardrails: success_ratio, p95
Rollback: tag v2.3.0
16) Anti-nümunələr
GitOps keçmişdə düzəlişlər («tez bükülmüş»).
Konfiqurasiya anbarında sirləri/PII.
Sxemlərin və statik yoxlamaların olmaması.
Güclü mühit uyğunsuzluğu (base ≠ prod).
Versiyaları və tarixi olmayan «Canlı» Fich bayraqları.
Serverlərdə drift və əl düzəlişlərinə məhəl qoymayın.
release notes və geri plan olmadan Tags.
17) Tətbiqi yol xəritəsi (4-6 həftə)
1. Ned. 1: konfiqurasiyaların inventarlaşdırılması; ən yaxşı 10 xidmət üçün ayrı kataloqlar, sxemlər.
2. Ned. 2: CI linter/validasiya və dry-run daxil edin; yaşıl çeklər olmadan merjen qadağan.
3. Ned. 3: GitOps yayılır + kanaryalar; telemetriyada versiyaların şərhləri.
4. Ned. 4: Giriş tolerantlıq siyasəti (policy-as-code) və rollback şablonları; drift alerts.
5. Ned. 5-6: xidmətlərin 90% -ni əhatə etmək; env fərqlərini overlays-a endirmək; yetkinlik metrik və həftəlik review-dəyişikliklər əlavə edin.
18) Yekun
Konfiqurasiya versiyalarına nəzarət yalnız Git deyil, bir sistemdir. Sxemlər və validasiya, GitOps və giriş siyasətləri, kanaryalar və geri çəkilmələr, sürüklənmə aşkarlanması və tam audit idarə olunan bir artefakta çevirir. Nəticə - sürətli və təhlükəsiz dəyişikliklər, SLO-nun proqnozlaşdırılması və komandanın hər buraxılışa inamı.