GH GambleHub

Көлөкө жол жана салыштыруу

1) Shadow Traffic деген эмне жана эмне үчүн керек

Shadow-traffic (ошондой эле traffic mirroring/dark launch) - бул колдонуучуларга таасир этпестен, продюсерлик версиясы менен катар кызматтын жаңы версиясына реалдуу суроо-талаптардын/окуялардын коопсуз "прогону". Жаңы версиянын натыйжалары кардарга кайтарылбайт жана тышкы сайд эффекттерин чыгарбайт, бирок салыштыруу системасына чогултулат.

Негизги максаттары:
  • Шайкештикти текшерүү: схемалар, контракттар, бизнес-логика.
  • Аткаруу баалоо: жашыруун, реалдуу жүк боюнча туруктуулук.
  • Дрейфтин детекциясы: жооптордогу, бөлүштүрүүдөгү, каталардын жыштыгындагы айырмачылыктар.
  • Канарейка релиздерине даярдык: чыныгы трафикти алмаштыруудан мурун тобокелдикти азайтуу.
Качан колдонуу керек:
  • Ядро/алгоритмдерди кайра жазуу, DD/кэш көчүрүү, башка рантайм/SDK өтүү, тышкы API провайдерди өзгөртүү.

2) архитектуралык Shadow трафик үлгүлөрү

2. 1 L7-прокси/шлюз (HTTP/gRPC)

Proxy өтүнүчүн кабыл алат → эски нускасынан жооп берет → "көлөкө" өтүнүчүнүн көчүрмөсүн асинхрондук чагылдырат.

синхрондуу API үчүн ылайыктуу.
Күзгү үлүшүн/чыпкасын башкаруу: жолдо, хедер, колдонуучу, тенант.

Мисал (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
Мисал (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 шиналар окуялар (Kafka/агымдары)

Топик деъгээлинде tee жүргүзүлөт:
  • Продюсер адаттагыдай эле жазат → prod consumers окуп.
  • Параллель "көлөкө" (shadow-pipeline) өзүнчө кум кутусуна ошол эле агымды окуйт.

Параметрлери: MirrorMaker/Replicator, dual-write (этият), бридж "source → prod + shadow".

2. 3 Replayer (жазуу/ойнотуу)

Чыныгы суроо-талаптарды/соодаларды (PCAP/NGINX access, gRPC taps) → контролдук темп менен "көлөкө" ойнотуу.

2. 4 "Синтетикалык көлөкө"

Прод-логтордон жүктөө профилин түзүү + четки учурларда кошумча толтуруу фазасы - купуялуулукту чектөөдө пайдалуу.

3) Обочолонуу абалы жана side таасирлери

Алтын эреже: көлөкө тышкы дүйнөнү өзгөртпөйт.

Reed-онли DD/кэш же өзүнчө Sandbox кирүү (snapshot/реплика).
Чыгуучу терс таасирлерге тыюу салуу: төлөмдөр, каттар, мылтыктар, webhooks → stub/blackhole/record-only.
Команда/POST деъгээлинде боштук: Shadow түп нускасын кайталап катары катталууга тийиш эмес.
PII/сырларды, тесттик провайдерлердин белгилерин жашыруу.

Мисал: күзгүгө жашырып

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

4) Семплирлөө стратегиялары жана коопсуз жүк

Трафиктин үлүшү: башталышында 1-10%; v2 бюджетке туура келсе көбөйтүлсүн.
Тандоо критерийлери: маршрут, колдонуучу, суроо-талаптын өлчөмү, операциянын түрү боюнча (GET-тер коопсуз).
Perf-бюджет: күзгү аскердик кызмат p95/p99 көбөйтүүгө тийиш эмес. көлөкө дайыма асинхрондук болуп саналат.
Back-pressure: shadow-чынжыр ысып жатканда - күжүрмөн эмес, көлөкө чачуу.
Убакыт: күнүмдүк жана жогорку үлгүлөрүн жабуу үчүн, жок эле дегенде, 24-72 саат.

5) натыйжаларын салыштыруу: ыкмалары жана деңгээл

5. 1 Салыштыруу деңгээл

1. Байт Дифф: жооп/окуя бир-бир орган. Жөнөкөй, бирок морт (таймстамптар, ачкычтардын тартиби).
2. Семантикалык дифф: талааларды нормалдаштыруу жана сорттоо, эпемериддерди (traceId, timestamps, counters) этибарга албоо.
3. Бизнес инварианттар: ошол эле суммалар, статустар, сандар, чек аралар.
4. Статистикалык талдоо: метриктердин бөлүштүрүлүшү дал келеби? (p50/p95, KS-тест, χ ² категориялык).

5. 2 Салыштыруу саясаты

Маскалар/ignore-талаа тизмелери (мисалы, 'updatedAt', 'etag').
Тактык: сандар үчүн абсолюттук/салыштырмалуу ката (мисалы, ± 1e-6).
Tolerance bands: "баанын айырмасы ≤ 0. 01", "каталар + 0 ашык эмес. 1% prod салыштырмалуу".

Компаратордун псевдо-коду

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 суроо-жооп салыштыруу

Милдеттүү Correlation-ID (көлөкөгө ыргытып).
Span Linking: shadow-трек согуш үчүн шилтемени алат.

6) Байкоо жана салыштыруу артефакттары

Метрикасы:
  • `shadow_requests_total{route,...}`
  • `shadow_discrepancies_total{type=byte|semantic|invariant}`
  • `shadow_error_ratio` и `shadow_slo_breach_total`
  • Перф: 'shadow _ latencies _ ms {p50, p95, p99}'
  • Diff Логи: ачкычтар боюнча компакт JSON-дельта.
  • Отчеттуулук: топ-N айырмачылыктар менен күнүмдүк отчет, маршруттар/тенанттар боюнча жылуулук карталары.
  • UI "diff explorer": түрү боюнча чыпкалар, жол, талаа, CSV экспорт.

7) Өзгөчө учурлар жана кылдат

7. 1 ырааттуулук жана консистенттүүлүк

Shadow-суроолор кийин/мурда келиши мүмкүн; версиялары/сааттары (Lamport/vector) же терезенин жөндөмдүүлүктөрү боюнча нормалдаштырыңыз.
Read-after-write: синхрондуу репликациясыз read-replica менен көлөкө ар кандай жоопторду берет - лаг терезелери аркылуу салыштырыңыз.

7. 2 Кэш/сунуштар

Prod жана shadow кэштерин аралаштырбаңыз.
ML/сунуштоочулар үчүн онлайн метриканы жана оффлайн метриканы өзүнчө салыштырыңыз; кириш белгилерин drift.

7. 3 Тышкы провайдерлер

record-only/stub-режими менен кардарларды ороп.
Эсептешүү кызматтары үчүн (салыктар, курстар) - эки тарап үчүн маалымдамалардын сүрөтүн жазыңыз.

8) Канар/көк-жашыл менен салыштыруу

Shadow: колдонуучулар үчүн нөлдүк тобокелдик, бирок эч кандай чыныгы side эффекттери; логика жана перф үчүн жакшы.
Canary: жаңы версия реалдуу жооптордун аз пайызы; даяр кайтаруу стратегиясын жана SLA талап кылат.
Blue-жашыл: валидациядан кийин заматта которуу; Көлөкө көбүнчө анын алдында колдонулат.

9) ишке ашыруу планы (GitOps-стили)

1. Максаттары жана параметрлери: айырмачылыктар үчүн SLO кандай инварианттар жана жол-жоболорун текшерүү.
2. Trail: Correlation-ID, бөлүштүрүлгөн Trace Links.
3. Прокси-жөндөө: mirror-саясат, семплирлөө, redaction.
4. Изоляция: кум куту DD/кэш, терс таасирлери, сыноо ачкычтары.
5. Компаратор: нормалдаштыруу, ignore-maps, инварианттар, отчеттор.
6. Жүктөө планы: 1-5% баштап, жашыл метриктер менен 20-50% га чейин өсөт.
7. Байкоо: дашборддор "айырмачылыктар/перф/көлөм".
8. Чыгуунун критерийлери: "0 критикалык айырмачылыктар 48 саат", "каталар prod кем эмес", "Перф ± ичинде 5%".
9. canary өтүү: коопсуз үлүшү жана автоматтык гард эрежелери менен реалдуу жоопторду камтыйт.

10) Конфигурация мисалдары

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 (эскиз)

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

10. 3 Салыштыруу эрежелери (yaml-саясат)

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) Анти-үлгүлөрү

Shadow сыртка жазган: реалдуу төлөмдөр/көлөкөдөн билдирүүлөр.
Жалпы кэш/жалпы кезек: кайчылаш таасири жана булганышы.
нормалдаштыруунун жоктугу: Bayt диффузиясы саат/ачкычтын тартибине байланыштуу "кызарат".
Өтө жогорку пайыздык: perf prod деградация.
Узак "түбөлүк көлөкө": экинчи система өзүнчө жашайт жана чындыктан айырмаланат.

12) Shadow режимин ишке чек тизмеси

  • Proxy үлүшү жана redaction менен mirror орнотулган.
  • Көлөкө изоляцияланган: DD/кэш/тышкы интеграция - бир гана readonly/stub.
  • Бардык жерде Correlation-ID ыргытып; сызыктар сызылат.
  • Компаратор ignore/normalize жана инварианттарды текшере алат.
  • айырмачылыктар жана жүктөө үчүн Dashbord жана Алерт.
  • Жолдор/тенанттар боюнча семплирлөө; лимиттер жана back-pressure.
  • "жашыл жарык" жол-жоболору жана критерийлери аныкталган.
  • canary/blue-green өтүү планы жана кайра.

13) FAQ

Q: Shadow A/B айырмаланат?
A: A/B эки версиясы тең жоопторду колдонуучуларга кайтарат (сплит-эксперимент), Shadow жаңы версиясы колдонуучуга таасир этпейт - анын жооптору гана талданат.

Q: POST/PUT басып мүмкүн?
A: Ооба, эгерде терс таасирлерди изоляциялоо (stub) жана демпотенттик кепилденсе. Көбүнчө GET менен башталат, андан кийин кеңейтүү.

Q: Эгерде элементтердин тартиби бекитилбеген болсо, жоопторду кантип салыштырууга болот?
A: салыштыруу алдында туруктуу ачкыч боюнча сорттоо же көп/ачкычтар боюнча салыштыруу.

Q: DD сын кечигүү менен эмне кылуу керек?
A: киргизүү "салыштыруу терезелери" жана маалымдамалардын snapshot; "дубал" эмес, версиялар боюнча жыйынтыктарды топтоңуз.

14) Натыйжалары

Көлөкө трафик - бул "азапсыз өндүрүш репетициясы": реалдуу жүк, колдонуучулар үчүн нөлдүк тобокелдик, айырмачылыктарды деталдуу талдоо. Ийгилик изоляция, туура семплөө, сапаттуу компаратор жана байкоо менен аныкталат. Сунуш кылынган планды сактоо менен, сиз ишенимдүү canary/blue-green Releases жолду көпүрө жана архитектуранын өнүгүшүн тездетет ойнотулуучу практика болот.

Contact

Биз менен байланышыңыз

Кандай гана суроо же колдоо керек болбосун — бизге кайрылыңыз.Биз дайым жардам берүүгө даярбыз!

Telegram
@Gamble_GC
Интеграцияны баштоо

Email — милдеттүү. Telegram же WhatsApp — каалооңузга жараша.

Атыңыз милдеттүү эмес
Email милдеттүү эмес
Тема милдеттүү эмес
Билдирүү милдеттүү эмес
Telegram милдеттүү эмес
@
Эгер Telegram көрсөтсөңүз — Emailден тышкары ошол жактан да жооп беребиз.
WhatsApp милдеттүү эмес
Формат: өлкөнүн коду жана номер (мисалы, +996XXXXXXXXX).

Түшүрүү баскычын басуу менен сиз маалыматтарыңыздын иштетилишине макул болосуз.