GH GambleHub

Kölegeli trafik we deňeşdirme

1) Şadow-traffigi näme we näme üçin zerur?

"Shadow-traffic" (şeýle hem traffic mirroring/dark launch) - hakyky haýyşlaryň/wakalaryň ulanyjylara täsir etmezden önümçilik wersiýasy bilen paralel hyzmatyň täze wersiýasyna howpsuz "geçmegi". Täze wersiýanyň netijeleri müşderä gaýtarylmaýar we daşarky saýd-effektleri öndürmeýär, ýöne deňeşdirme ulgamyna ýygnalýar.

Esasy maksatlar:
  • Şemalaryň, şertnamalaryň, işewürlik logikasynyň laýyklygyny barlamak.
  • Öndürijilige baha bermek: gizlinlik, hakyky ýük astynda durnuklylyk.
  • Dreýfiň detekasiýasy: jogaplardaky, paýlanyşdaky, ýalňyşlyklaryň ýygylygyndaky tapawutlar.
  • Kanareýanyň çykmagyna taýýarlyk: traffigiň hakyky üýtgemeginden öň töwekgelçiligi azaltmak.
Haçan ulanmaly:
  • Ýadro/algoritmleri täzeden ýazmak, DB/nagt göçmek, başga bir rantaime/SDK geçmek, daşarky API üpjün edijisini üýtgetmek.

2) Şadow-traffigiň binagärlik nusgalary

2. 1 L7-proxy/şlýuz (HTTP/gRPC)

Proxy soragy kabul edýär → köne wersiýadan söweş jogabyny berýär → "kölege" haýyşyň göçürmesini asinhron görnüşde görkezýär.

Sinhron API üçin amatly.
Aýna paýyny/süzgüçini dolandyrmak: ýolda, giderde, ulanyjyda, tenantda.

Mysal (Envoy):
yaml route:
route:
cluster: prod-v1 request_mirror_policies:
- cluster: shadow-v2 runtime_fraction:
default_value:
numerator: 10 # 10% denominator: HUNDRED trace_sampled: true
Mysal (Nginx):
nginx location /api/ {
proxy_pass http://prod_v1;
mirror/shadow; # request copy
}
location = /shadow {
internal;
proxy_pass http://shadow_v2; # answer ignored
}

2. 2 Waka tekerleri (Kafka/Akymlar)

Topik derejesinde tee:
  • Prodýuser adatdakysy ýaly ýazýar → prod konsumerleri okaýarlar.
  • Şol bir wagtyň özünde "kölege" (shadow-pipeline) aýratyn sandyk gutusyna şol bir akymy okaýar.

Saýlawlar: MirrorMaker/Replicator, dual-write (seresap), "source → prod + shadow".

2. 3 Replayer (ýazgy/çalmak)

Hakyky haýyşlaryň/söwdalaryň suraty (PCAP/NGINX access, gRPC taps) → gözegçilik edilýän tizlikde "kölege" oýnamak.

2. 4 "Sintetiki kölege"

Prod-loglardan ýükleýiş profiliniň döredilmegi, gizlinlik çäklendirmelerinde peýdalydyr.

3) Ýagdaýy we saýd täsirlerini izolirlemek

Altyn düzgün: kölege daşky dünýäni üýtgetmeýär.

Reid-onli DB/keshe ýa-da aýratyn sandyk gutusyna girmek (snapshot/replika).
Çykýan täsirleri gadagan etmek: tölegler, hatlar, toplar, webhooks → stub/blackhole/record-only.
Toparlaryň/POST: Şadow derejesindäki görelde asyl nusgasynyň gaýtalanmagy hökmünde hasaba alynmaly däldir.
PII/syrlary gizlemek, synag üpjün edijileriniň bellikleri.

Mysal: aýnada gizlemek

yaml shadowFilter:
headers:
redact:
- Authorization
- X-Api-Key body:
jsonPaths:
- replace "$ .email" # with token
- "$.card. number"

4) Semplemek strategiýalary we howpsuz ýük

Traffigiň paýy: başda 1-10%; eger v2 býujete laýyk gelýän bolsa, ony artdyrmak.
Saýlama ölçegleri: ugur, ulanyjy, haýyşnamanyň ululygy, amalyň görnüşi boýunça (GET-ler has ygtybarly).
Perf-býudjet: aýna şöhlelendirmek p95/p99 söweş hyzmatyny artdyrmaly däldir. Kölegeler hemişe asinkron.
Back-pressure: shadow-zynjyry gyzdyrylanda - söweş haýyşlary däl-de, kölegeleri süpürmek.
Wagt: gündelik we iň ýokary nagyşlary ýapmak üçin azyndan 24-72 sagat.

5) Netijeleri deňeşdirmek: usullar we derejeler

5. 1 Deňeşdirme derejeleri

1. Baýt diff: Jogap/Waka bedeni birin-birin. Ýönekeý, ýöne näzik (wagtlar, açar tertibi).
2. Semantik diff: meýdanlary kadalaşdyrýarys we tertipleşdirýäris, epemeridleri äsgermezlik edýäris (traceId, timestamps, counters).
3. Işewür-inwariantlar: şol bir mukdarlar, statuslar, sanlar, serhetler.
4. Statistiki derňew: metrleriň paýlanyşy gabat gelýärmi? (p50/p95, KS-synag, χ kategoriýalara ²).

5. 2 Deňeşdirmek syýasaty

Maskalar/ignore-meýdan sanawlary (mysal üçin, 'updatedAt', 'etag').
Takyklygy: sanlar üçin mutlak/deňeşdirme ýalňyşlygy (mysal üçin ± 1e-6).
Rugsat (tolerance bands): "bahadaky tapawut ≤ 0. 01", "ýalňyşlyklar + 0-dan köp bolmaly däldir. Prod bilen deňeşdirilende 1%".

Komparatoryň ýalan resminamasy

pseudo compare(prod, shadow, policy):
a = normalize(prod, policy)
b = normalize(shadow, policy)
diffs = deepDiff(a, b, ignore=policy. ignore, floatTol=policy. floatTol)
invariants_ok = checkInvariants(a, b, policy. invariants)
return Result(diffs, invariants_ok)

5. 3 Soragy deňeşdirmek jogap

Correlation-ID hökmanydyr.
Span linklemek: shadow-track söweş linkini alýar.

6) Synlamak we deňeşdirmek artefaktlary

Metrikler:
  • `shadow_requests_total{route,...}`
  • `shadow_discrepancies_total{type=byte|semantic|invariant}`
  • `shadow_error_ratio` и `shadow_slo_breach_total`
  • Perf: 'shadow _ latencies _ ms {p50, p95, p99}'
  • Diff ýazgylary: açarlar boýunça ykjam JSON-delta.
  • Hasabat: Top-N tapawutlardan gündelik hasabat, marşrutlar/tenantlar boýunça ýylylyk kartalary.
  • UI "diff explorer": CSV-de görnüşi, ugry, meýdany, eksporty boýunça süzgüçler.

7) Aýratyn ýagdaýlar we inçelikler

7. 1 Yzygiderlilik we yzygiderlilik

Şadow-soraglar soň/has ir gelip biler; wersiýalaryna/sagatlaryna (Lamport/vector) ýa-da penjirelerine görä kadalaşdyryň.
Read-after-write: sinhron replikasyz read-replica kölegesi dürli jogaplar berer - lag-penjireler arkaly deňeşdiriň.

7. 2 Nagt pul/teklipler

Prod we shadow kesişlerini garyşdyrmaň.
ML/maslahat berijiler üçin onlaýn metrikleri we awtonom metrikleri aýratyn deňeşdiriň; giriş alamatlaryny yzarlaň.

7. 3 Daşarky üpjün edijiler

Müşderileri record-only/stub-re modeime öwüriň.
Hasaplaşyk hyzmatlary üçin (salgytlar, nyrhlar) - iki tarap üçin maglumat kitapçalarynyň suratyny düzüň.

8) Kanareýalar bilen deňeşdirme/gök-ýaşyl

Shadow: ulanyjylar üçin töwekgelçilik ýok, ýöne hakyky sad effektleri ýok; logika we perf üçin ajaýyp.
Canary: täze wersiýadan hakyky jogaplaryň az göterimi; taýýar yza gaýdyp gelmek we SLA strategiýasyny talap edýär.
Gök-ýaşyl: tassyklamadan soň derrew geçiş; Shadow köplenç onuň öňünde ulanylýar.

9) Giriş meýilnamasy (GitOps stili)

1. Maksatlar we metrikler: tapawut üçin haýsy SLO-ny barlaýarys.
2. Tracking: Correlation-ID, paýlanan ýol linkleri.
3. Proxy sazlamak: mirror-syýasat, sempleme, redaction.
4. Izolýasiýa: gum gutusy DB/keş, zyýanly düwmeler, synag açarlary.
5. Komparator: kadalaşma, ignore-maplar, inwariantlar, hasabatlar.
6. Iş meýilnamasy: 1-5% -den başlamak, ýaşyl metrlerde 20-50% -e çenli ösüş.
7. Syn edilmegi: daşbordlar "tapawutlar/perf/göwrüm".
8. Çykyş ölçegleri: "0 kritiki tapawut 48 sagat", "ýalňyşlyklar proddan erbet däl", "perf ± 5%".
9. canary geçişi: ygtybarly paýy we awtomatiki gard düzgünleri bilen hakyky jogaplary goşmak.

10) Konfigurasiýa mysallary

10. 1 Istio (Traffic Mirroring)

yaml apiVersion: networking. istio. io/v1beta1 kind: VirtualService spec:
hosts: ["svc. example"]
http:
- route: [{ destination: { host: svc, subset: v1 } }]
mirror:
host: svc subset: v2 mirrorPercentage:
value: 0. 1 # 10%

10. 2 Kafka Tee (eskiz)

text source-topic -> prod-consumer-group
-> shadow-consumer-group (isolated sink/db)

10. 3 Deňeşdirme düzgünleri (yaml-syýasat)

yaml ignoreFields:
- $.traceId
- $.meta. generatedAt floatTolerance:
default: 1e-6 fields:
$.price: 0. 01 invariants:
- name: "nonNegativeTotal"
expr: "$.total >= 0"
- name: "statusMapping"
expr: "map($.status in ['ok','fail'], true)"

11) Anti-patternler

Şadow: kölegeden hakyky tölegleri/habarnamalary ýazýar.
Umumy kesiş/umumy nobatlar: çapraz täsir we hapalanma.
Kadalaşmagyň ýoklugy: sagat/açar tertibi sebäpli baýt diffleri "gyzarýar".
Gidişde gaty ýokary göterim: perf prod.
Uzak "baky kölege": ikinji ulgam aýratyn ýaşaýar we hakykat bilen tapawutlanýar.

12) Kölegeli re modeimi işe girizmegiň barlag sanawy

  • Proxy paýy we redaction bilen mirror gurýar.
  • Kölege izolirlenen: DB/nagt pul/daşarky integrasiýa - diňe readonly/stub.
  • Correlation-ID hemme ýerde zyňylar; ýollar çyzylýar.
  • Komparator ignore/normalize we invariantlary barlamagy bilýär.
  • Tapawutlar we ýükler üçin daşbordlar we alertler.
  • Marşrutlar/tenantlar boýunça semplemek; çäkleri we back-pressure.
  • "Ýaşyl ýagtylygyň" çäkleri we ölçegleri kesgitlenildi.
  • canary/blue-green geçiş meýilnamasy.

13) FAQ

Q: Şadow A/B-den nähili tapawutlanýar?
A: A/B-de iki wersiýa hem ulanyjylara jogap berýär (bölünen synag), Şadowda täze wersiýa ulanyja täsir etmeýär - onuň jogaplary diňe seljerilýär.

Q: POST/PUT goýup bolarmy?
A: Hawa, eger täsirleriň izolýasiýasy (stub) we idempotentlik kepillendirilen bolsa. Köplenç GET-den başlaýarlar, soň giňeldýärler.

Q: Elementleriň tertibi kesgitlenmedik bolsa, jogaplary nädip deňeşdirmeli?
A: Deňeşdirmezden ozal durnukly açar bilen sortlaň ýa-da köp/açar bilen deňeşdiriň.

Q: BD-iň yza süýşürilmegi bilen näme etmeli?
A: "Deňeşdirme penjirelerini" we maglumat kitaplarynyň snapshotlaryny giriziň; netijeleri "diwar" däl-de, wersiýalara görä jemläň.

14) Netijeler

Şadow-traffik "önümçiligiň agyrysyz repetisiýasy": hakyky ýük, ulanyjylar üçin nol töwekgelçilik, gapma-garşylyklaryň jikme-jik seljermesi. Üstünlik izolýasiýa, dogry sempleme, hil komparatory we syn edilmegi bilen kesgitlenýär. Teklip edilýän meýilnama laýyklykda, canary/blue-green relizlerine ynamly ýol açýan we arhitekturanyň ewolýusiýasyny çaltlaşdyrýan gaýtalanýan tejribe alarsyňyz.

Contact

Biziň bilen habarlaşyň

Islendik sorag ýa-da goldaw boýunça bize ýazyp bilersiňiz.Biz hemişe kömek etmäge taýýar.

Telegram
@Gamble_GC
Integrasiýany başlamak

Email — hökmany. Telegram ýa-da WhatsApp — islege görä.

Adyňyz obýýektiw däl / islege görä
Email obýýektiw däl / islege görä
Tema obýýektiw däl / islege görä
Habar obýýektiw däl / islege görä
Telegram obýýektiw däl / islege görä
@
Eger Telegram görkezen bolsaňyz — Email-den daşary şol ýerden hem jogap bereris.
WhatsApp obýýektiw däl / islege görä
Format: ýurduň kody we belgi (meselem, +993XXXXXXXX).

Düwmäni basmak bilen siz maglumatlaryňyzyň işlenmegine razylyk berýärsiňiz.