Veri olarak yapılandırma
(Bölüm: Mimari ve Protokoller)
1) Fikir ve "kod olarak yapılandırma'dan farkı
Veri Olarak Yapılandırma (CaD), yapılandırmanın yazılı, bildirimsel, doğrulanmış bir model olarak, yürütülebilir koddan bağımsız ve iş verileri olarak yönetilen bir temsilidir: sürümler, şemalar, geçişler, denetimler ve testler.
Yapılandırma üretme mantığının şablonlarda/komut dosyalarında yaşadığı "kod olarak yapılandırma'nın aksine, CaD gerçeğin kaynağından zorunluluğu dışlar: yapılandırmalar içinde döngüler, koşullar ve gizli mantık yoktur. Tüm - temiz veri + katı şema + politikalar.
Temel hedefler: öngörülebilirlik, fark yeteneği, değişim güvenliği, hızlı geri dönüşler, aşamalı ve otomatik olarak uyum sağlama yeteneği.
2) "Veri olarak yapılandırma" ilkeleri
1. Deklarativite ve açıklık: Başarı adımlarını değil, istenen durumu tanımlıyoruz.
2. Tip güvenliği ve şemaları: Sıkı sözleşmeler için JSON Schema/Protobuf/Avro/OpenAPI.
3. Artifact değişmezliği: yapılandırma çekimleri sürüm ve imzalı (provenance).
4. Doğrulama ve politika: boru hattında - sözdizimi - semantik - kod olarak politika (OPA, kurallar).
5. Yapılandırmaların gözlemlenebilirliği: günlüklerde/metriklerde/izlerde sürüm parmak izi.
6. Sorumluluk paylaşımı: veri (yapılandırma), şema (sözleşme), politika (kısıtlamalar), denetleyici (uygulama).
7. Modülerlik ve katmanlar: küresel, bölgesel, tenant-, ürün, özellik seviyeleri, öngörülebilir birleşme ve önceliklerle.
3) Yapılandırma Simülasyonu: Sözleşme olarak Şema
İşletme aileleri: yönlendirme, limitler, phicheflags, tarifeler, AB segmentleri, kotalar, risk kuralları, finansal ayarlar vb.
Türleri: açık enum/oneOf, aralıklar, regex, referans bütünlüğü (ref/ID).
Şema sürüm oluşturma: 'v1 ^ v1beta2 ^ v2' (reddetme planı, göçler).
Varsayılan/Mutasyon: Doğrulama aşamasında güvenli varsayılanlar; deterministik uygulama sırası.
Kısıtlamalar: iş kısıtlamaları (örneğin, kiracıda 'rateLimit <= 2000 rps').
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) Katmanlar, miras ve çatışma çözümü
Иерархия: 'Küresel> Bölge> Çevre> Kiracı> Ürün> Kohort> Kullanıcı'.
Birleştirme kuralları: bildirimsel - "son won" (geçersiz kılma) veya stratejik (birleştirme/yama/alan başına değiştirme).
Kesişme noktalarında doğrulama: çakışan anahtarları yasaklar, açık geçersiz kılma gerektirir.
Son etkili yapılandırmanın görselleştirilmesi gereklidir (deterministik difüzyonlar).
5) Yapılandırma yaşam döngüsü (GitOps paradigması)
1. Gerçeğin kaynağı: veri + şemalar + politikalar içeren depo.
2. Boru hattı:- sözdizimi denetimi (tiftik),
- Şemaya göre doğrulama,
- Anlamsal kontroller/testler,
- Kod olarak politika (örn. OPA/Rego),
- Güvenli göçler (bakınız § 7),
- İmza ve anlık görüntünün yayınlanması.
- 3. Promosyon: 'Dev/qa/staging/prod' dizinleri veya 'ring-0/.../ring-N' halkaları arasındaki PR'ler.
- 4. Teslimat: Kontrolörler/operatörler yeni anlık görüntüleri çeker, bir uzlaştırma döngüsü boyunca uygular.
- 5. Denetim ve tersinirlik: tüm değişiklikler izlenir; Geri alma - commit/geri alma anlık görüntüsünü geri al.
6) Yapılandırmaların teslimi ve dağıtımı
Statik (pull-on-start): Başlangıçta anlık görüntüyü yükleyin, güncellemek için yeniden başlatın.
Dinamik (saat/akış): etcd/Consul/ZooKeeper, Kubernetes API/CRD, tescilli Yapılandırma Hizmeti.
Protokoller: ETag/If-None-Match ile gRPC/REST, uzun anket/saat, anlık görüntüler + artımlı difüzyonlar.
Önbelleğe alma: TTL ve imzalı yerel anlık görüntüler; Atomik değişim (çift tamponlama).
Dizi: güçlü (lider/çekirdek) vs nihai (kenar/IoT). Kritik sistemler için - quorum + RA.
Global haddeleme: Eşzamanlı bölge sınırı olan bölgelere/halkalara göre (halka dağıtma).
7) Yapılandırma veri geçişleri
Veritabanına gelince, genişlet - migrate - kontrat çalışır:- Genişletin: Tüketicileri kırmadan, varsayılanlarla yeni alanlar sunuyoruz.
- Migrate: arka dolgular/dönüştürücüler (migration provider scriptleri, idempotency).
- Sözleşme: tüm denetleyiciler şemanın yeni sürümünde olduğunda eskimiş kaldırın.
- Uyumluluk kuralı: eski mantık yeni anlar, yeni - geçişte eski.
8) Politika, Uyum ve Güvenlik
Kod olarak politika: Rego/Conftest/OPA Gatekeeper - tehlikeli değerlerin yasaklanması (örneğin, 'zaman aşımı = 0', TLS'yi devre dışı bırakma, sınırsız kotalar).
RBAC/ABAC: kim hangi bölümleri ve hangi katmanları değiştirebilir.
Hassas segmentler için dört göz (ödemeler/limitler).
Sırlar: Ortak yapılandırmalardan (KMS, Vault, SAPS) uzak duruyoruz, yapılandırmada - sadece bağlantılar/referanslar.
İmzalar ve güven: teslimatların doğrulanması (onaylar), imzasız anlık görüntülerin yasaklanması.
Sanitizing: Şablonlarda ve oluşturma sırasında enjeksiyona karşı koruma.
9) Gözlemlenebilirlik, SLO ve risk yönetimi
Telemetride yapılandırma etiketleri: Günlüklerde/metriklerde/izlerde '{config _ digest, config_version, ring, scope}'.
Yapılandırma silahlarının altın metrikleri: uygulama süresi, başarı oranı, geri dönüş sayısı, tutarlılık süresi.
Yapılandırmaları yuvarlarken kapılar: kod için olduğu gibi - kanarya adımları ve SLO bozulması için otomatik durdurma.
Dogfooting: Önce dahili/beta kohortu.
10) Sıcak yeniden yükleme, işlemsellik ve uygulamanın güvenliği
Atomik anahtar: Bellekte yeni bir konfigürasyon hazırlanıyor - tek bir atomik anahtar.
Kuru çalıştırma: Uygulamayı doğrular ve simüle ederiz (alan/politika çakışması dahil).
Kısmi başarısızlık: ilgili bileşenler için ya hep ya hiç stratejisi veya bozulmanın açık bir açıklaması.
Geri Alma/Yeniden Deneme: uygulama hatası - güvenli geri alma ve üstel gecikmeyle tekrarlama.
11) Yapılandırmaların bir alt kümesi olarak Ficheflags
Ficheflags, verileri özel politikalarla yapılandırır: segment hedefleme, dahil etme yarıçapı kısıtlamaları, kill-switch.
Gereksinimler: deterministik hedefleme semantiği, denetim, güvenli varsayılanlar, istemci/sunucu sürümü uyumluluğu.
12) Araçlar ve medya
Medya: JSON/YAML/TOML/Protobuf/Avro (ağ dağıtımı için - daha sık Protobuf/JSON).
Render/kompozisyon: Kustomize/Helm/Jsonnet (jeneratörler gibi, ancak sonuç temiz veridir).
Depolar/otobüsler: Git, OCI kayıtları (eserler olarak), S3-compatible depoları, etcd/Consul/KV.
Denetleyiciler: tescilli operatörler, GitOps aracıları, Sidecar yapılandırma sağlayıcıları.
Politika: OPA/Rego, Kyverno benzeri mekanizmalar.
13) Kontrol listeleri
Tasarım
- Şema önce gelir (JSON Şeması/Proto), türler/kısıtlamalar/varsayılanlar açıklanır.
- Şema sürümleri ve göçler belgelenmiştir.
- Katman hiyerarşisi ve birleştirme stratejisi tanımlanmış ve test edilmiştir.
Boru hattı
- Lint? Şema-validate? Anlamsal testler? policy-check? Sign? Yayınla.
- Hakemler için kuru çalışma ve efektif yapılandırma görselleştirme.
- SLO aracılığıyla otomatik kapılarla yapılandırmaların kanarya yuvarlanması.
Prod
- Günlüklerde/metriklerde bir 'config _ digest' var.
- Yapılandırma geri dönüşü - kod depozitosuyla aynı düğme.
- Anlık görüntüleri/yedekleri ve denetim geçmişini yapılandırır kullanılabilir ve doğrulanır.
14) Sık anti-desenler
Yapılandırmadaki zorunluluk: mantığa sahip koşullar/komut dosyaları/şablonlar doğrulanmış ve öngörülemez değildir.
Sırları ve paylaşılan ayarları bir dosya/bilgi havuzunda karıştırın.
Opak birleştirme: Alt satırın nereden geldiği belli değil.
Bir şema eksikliği:'her şey geçerli "⇒ satışta hatalar.
Küresel Halka/Kanarya Serbest Düzenlemeleri: Herkes İçin Anında Bozulma.
Çevrenin sürüklenmesi: Çalışma zamanında manuel düzenlemeler gerçeğin kaynağını aşar.
Zorla devre dışı bırakma mekanizması olmadan yapılandırma önbelleğinde uzun TTL'ler.
15) Senaryolar (eskizler)
A. Bölgeye göre trafik limitlerinin ince ayarlanması
1. 'RateLimitPolicy' değerini 'ring-0' (dahili istemciler) olarak değiştiren PR.
2. Şemayı/politikayı otomatik olarak denetler (2k rps ≤ limit).
3. 'Ring-1'de promosyon (kullanıcıların %5'i), p95/hata oranını izleme.
4. 'Ring-N'ye genişletme, anlık görüntüyü düzeltme, görevi kapatma.
B. Tarife çizelgesinin güncellenmesi (finansal ayarlar)
Güçlü semantik ve iş politikaları: çift inceleme, iki aşamalı tanıtım, zaman penceresi girişi, denetim ve anında geri alma yeteneği.
C. Kill-switch ile Global ödeme fifflag yapılandırma bayrağı: "çalışanları hedef alan - beta - %10 - %100", başarılı ödeme oranı eşiğin altına düştüğünde otomatik durdurma.
16) Sıfır Kesinti Süresi ve Aşamalı Teslimat ile Entegrasyon
Config kanaryaları serbest bırakma halkaları ile senkronize edilir.
Sürüm uyumluluğu: önce alanları genişletme, sonra kod, sonra sıkılaştırma.
Gölge yapılandırmalar: Savaşla karşılaştırmak için çözümlerin paralel hesaplanması (örneğin, sınırlama).
17) Özet
Veri olarak yapılandırma yaklaşımı, ayarları kırılgan dosyalardan net sözleşmeler, doğrulama ve ilkelerle sağlam etki alanı modellerine dönüştürür. Bu, öngörülebilir yuvarlanma, güvenli deneyler ve olaylara hızlı tepki vermenin temelidir. Şemaları resmileştirin, sırları ayırın, GitOps ve kanarya yapılandırmalarını uygulayın - ve yapılandırma bir risk olmaktan çıkacak, yönetilen bir platform varlığı haline gelecektir.