Рӯйпӯшҳо ва барқароршавии субот
(Қисм: Технология ва инфрасохтор)
Хулосаи мухтасар
Rollback бозгашти идорашаванда ба версияи охирини устувор бо хатари ҳадди ақали аз даст додани маълумот ва вайронкунии SLO мебошад. Раванди боэътимод иборат аст аз: сигналҳои SLO, дарвозаҳои равшан ва меъёрҳои бозгашт, механизми гузариш (Gits/Ingress/mesh), схемаи мувофиқ, конфигуратсияҳои ҷудошуда/сирри/кэш, давидан ва пас аз ҳодиса.
1) Кай бояд бозгардад (меъёрҳои оғоз)
Дарвозаҳои SLO/business: p95/99 аз ҳадди ниҳоӣ, меъёри хатогӣ
Сигналҳои техникӣ: суқути оташдон, ихроҷи хотира, афзоиши навбат, таназзули нишона/сек (LLM), 5xx дар Edge.
Хатари маълумот: муҳоҷирати нодуруст, номувофиқатии нусхабардорӣ, муомилот/пардохтҳои ятим.
Бехатарӣ/PII: ихроҷи гумонбаршуда - фавран бозгашт/ҷудокунӣ.
Қоида: агар 2 + ченакҳои калидӣ берун аз ҳадди ниҳоӣ бошанд> N дақиқа, бозгашт оғоз меёбад.
2) Намудҳои гардишҳо
1. Ариза: баргардонидани контейнерҳо/бастаҳо ба теги қаблӣ.
2. Хусусият: хомӯшии фаврӣ тавассути парчами хусусият/kill-switch.
3. Масир - Вазнро ба версияи устувор бармегардонад (canary → устувор) ё кабуд → Сабз.
4. Пойгоҳи додаҳо: бозгашти мантиқӣ (ҷуброн), бозгашти марҳилавии нақша; PITR чораи охирин аст.
5. Инфраструктура: бозгашти зуҳурот/Нақшаи Terraform; баргардонидани конфигуратсияҳои шабака/WAF.
6. Маълумот/кэш/навбатҳо: дубора/маъюбӣ/такрори паёмҳо; кэшҳои версия.
3) Принсипҳои меъмории бозгашти бехатар
Мутобиқати схема: васеъ кардани → migrate → стратегияи шартнома (коҳиш байни тавсеа ва шартнома имконпазир аст).
Вобастагиҳои ҷудошуда: сирри алоҳида/конфигуратсияҳо/кэшҳо/навбатҳо барои ислоҳот.
Амалиётҳои Idempotent: оғози такрории муҳоҷират ва кор - бехатар.
Тағйирнопазирии артефактҳо: тасвирҳо, диаграммаҳо, скриптҳои SQL - таҳриршуда ва имзошуда.
Gitops дуруст: Нусхаи ҷорӣ ва масир ба анбори манифест вобастаанд.
4) Механикаи Rollback (Кубернетес/Гитс)
Argo Rollouts (бозгашти вазн)
yaml apiVersion: argoproj. io/v1alpha1 kind: Rollout metadata: { name: api }
spec:
strategy:
canary:
steps:
- setWeight: 5
- pause: { duration: 10m }
in case of analysis failure → automatic rollback to stable
Бозпас гардидани GIT (идея)
git revert <commit_with_bad_version>
git push # Argo CD/Flux revert cluster to previous revision
NGINX: тугмаи зуд ба кор дароварда мешавад
nginx map $cookie_canary $to_canary { default 0; 1 1; }
upstream stable { server api-stable:80; }
upstream canary { server api-canary:80; }
server {
location / {
if ($to_canary) { proxy_pass http://canary; }
proxy_pass http ://stable; # removed canary cookie - instant rollback
}
}
5) Пойгоҳи додаҳо ва ҳифзи додаҳо
Тавсеаи → Муҳоҷират → Шартнома:- Васеъ кардан - Илова кардани майдонҳо/индексҳои нав, код схемаи кӯҳна ва навро дастгирӣ мекунад.
- Муҳоҷират: рамз ба нақшаи нав менависад, мо кӯҳнаи онро вайрон намекунем.
- Шартнома: кӯҳнаро танҳо пас аз эътидол нест кунед.
- PITR/лаҳзаҳо: танҳо дар сурате, ки ҷуброни мантиқӣ имконнопазир бошад, истифода баред.
- Ҷубронпулӣ: скриптҳои алоҳида/корҳо барои ислоҳи замимаҳо/тавозунҳо/пардохтҳо.
- Танҳо тирезаҳои хондан: ҳангоми танқид мо сабтро муваққатан манъ мекунем, то давлатро "ях кунад".
sql
-- expand
ALTER TABLE wallet ADD COLUMN bonus_balance NUMERIC DEFAULT 0 NULL;
CREATE INDEX CONCURRENTLY idx_wallet_bonus ON wallet(bonus_balance);
-- migrate in code, two-sided write
-- contract (after stabilization)
ALTER TABLE wallet DROP COLUMN legacy_bonus_balance;
6) Навбатҳо ва кэшҳо дар бозгашт
Кэши версия: калидҳо бо версияи ('v2:') → ҳамзистии бехатар.
Маъюбӣ: ҳангоми бозгашт - тозакунии оммавӣ 'v2:', бозгашт ба 'v1:'.
Навбатҳо: ҳизбҳо/мавзӯъҳо мувофиқи версия; такрори паёмҳо "аз нуқтаи гузаргоҳ".
Такрори такрорӣ/idempotency: калидҳои idempotence барои коркарди такрорӣ.
7) Дарвозаҳои SLO ва роликҳои худкор
Нишондиҳандаҳо: p95/99, сатҳи хатогӣ, пуррагӣ (CPU/IO/GPU), умқи навбат, нишонаҳо/сек, табдили пардохт.
Сиёсат (мисол):
if p95_latency_ms > 250 for 5m OR error_rate > 1. 5% for 3m OR payment_conv < baseline-0. 3%
then rollback release && open incident && freeze deploys
8) Runabooks (китобҳои бозӣ)
A) Афзоиши пас аз баромади p99 ва 5xx
1. Пешбурди таваққуф (яхкунӣ канарӣ/кабуд-сабз).
2. Гузариш ба бозбинии устувор.
3. Санҷиши таъхири кэш/навбат/PSP.
4. Хориҷ кардани ташхис: гузоришҳо, профилҳо, версияҳои мизоҷ/схема.
5. Алоқа: Chatops, канали ҳолат, корти ҳодиса.
6. Оғози амали ислоҳӣ: ячейка/ислоҳи гарм/бекор кардани хусусият.
B) Хатои муҳоҷирати пойгоҳи додаҳо
1. Freeze менависад (танҳо хонед, мухтасар).
2. Баргардонидани барнома → версияи устувор (бо схемаи кӯҳна мувофиқ аст).
3. Иҷро кардани ҷуброн/скрипти бозгашт.
4. Сабти Thaw; drift/хатогиҳоро риоя кунед.
C) Деградатсияи пардохт (PSP)
1. Гузариши масири PSP ба масири қаблӣ.
2. Нашри коркарди бозгашт.
3. Ҳамаи пардохтҳои интизоршавандаро муқоиса кунед, бо калидҳои idempotent такрор кунед.
D) LLM/тавсияҳо таназзул меёбанд
1. Хомӯш кардани модел/параметрҳои нав (байрақи хусусият).
2. Нуқтаи ниҳоӣ/вазни қаблиро баргардонед; Тоза кардани нусхаи нави KV.
3. Токенҳо/s, аломати ниҳонии аввал, заҳролудшавиро санҷед.
9) Нашрияҳои иртиботӣ ва яхкунӣ
Тирезаро ях кунед: пас аз бозгашт - таваққуф ба RCA/ислоҳ.
Канали ягона: навсозиҳои вазъ, хронологияи амалҳо, ки чӣ кор карданд.
Ҷонибҳои манфиатдор: Маҳсулот/CS/Пардохтҳо/Ҳуқуқшиносон (дар PII).
10) Ҳодисаи баъдӣ: таҳлил ва пешгирӣ
RCA (бе пардохт): сабаби решавӣ, омилҳои саҳмгузор, чаро дарвозаҳо кор накарданд (агар онҳо ин тавр набошанд).
Амалҳо: санҷишҳои муҳоҷират, маҳдудиятҳо, дарвозаҳои хусусият, мушоҳидаҳо.
Ҳадди SLO: тасҳеҳ, агар "мулоим "/" сахт "бошад.
Ҳуҷҷатгузорӣ: навсозии runabooks, илова кардани огоҳиҳо, омӯзиш (рӯзи бозӣ).
11) Воситаҳо ва қолабҳо
Gitops: Argo CD/Flux - 'revert '/' rollback' бо версия содир карда мешавад.
Таҳвили прогрессивӣ: Argo Rollouts/Flagger - таваққуф/бозгашт ба ченакҳо.
Edge/Ingress: масири вазн, масири куки, гузариши зуд.
Парчамҳои хусусият: паҳншавии касрӣ, куштани гузариш.
DB муҳоҷират: чаҳорчӯбаҳои mig бо боло/поён, хушк, дротлинг.
Мушоҳида: панели тайёри тайёр "муқоиса кунед" (устувор ва канарӣ).
12) Рӯйхати санҷиши омодагӣ ба гардишҳо
1. Артефактҳои боэътимод ва имзошуда (тасвирҳо/диаграммаҳо/SQL).
2. Конфигуратсияҳои ду роҳи оҳан/асрҳо/кэшҳо/навбатҳо (префиксҳои версия).
3. Диаграммаи DB бо роҳи васеъ кардани → migrate → шартнома.
4. Варақаҳои канарӣ ва кабуд-сабз бо дарвозаҳои SLO ва kickbacks худкор.
5. Runabooks барои сенарияҳои асосӣ (пардохтҳо/DB/кэш/LLM).
6. Тугмаҳои Chat '/rollback ', '/ях кардан', '/тарғиб кардан '.
7. Аудит ва сабти ном: кӣ, кай, чӣ баргашт; артефактҳои ташхисӣ.
8. Машқҳои рӯзона: тақлид кардани тарқишҳо ва барқароршавӣ.
9. Нақшаи тиҷорат ва дастгирии коммуникатсия.
10. Устувор ва нав дар як экран.
13) Анти-намунаҳо
Муҳоҷирати вайронкунанда пеш аз паҳн кардани код (мутобиқати қафо нест).
Кэшҳо/навбатҳои муштарак бидуни версия → гардиши ифлос.
Ҳеҷ гуна Gitops/Тағир додани таърих → Таҳрири дастӣ ба Prod.
Озодкунии канарӣ бидуни дарвоза/телеметрия → дер муайян кардани дер.
Бозгашт бидуни ях ва RCA → ҳодисаро такрор кунед.
Мониторинги танҳо ченакҳои техникӣ бидуни ченакҳои корӣ (пардохтҳо/нархҳо).
"Асрори умумӣ" ба ҳама нусхаҳо → ҷудо кардани ҳодиса мушкил аст.
Хулоса
Бозгашти боэътимод ин "крани таваққуф" нест, балки равандест, ки дар релизҳо сохта шудааст: версиякунӣ ва мутобиқат, вобастагии ҷудогона, дарвозаҳои SLO, воқеияти GITOps, роликҳои автоматӣ ва runabookҳои равшан. Ин равиш ба платформаҳои IGaming имкон медиҳад, ки суботро зуд барқарор кунанд, талафоти маълумот ва даромадро кам кунанд ва ҳар як ҳодисаро ба манбаи такмил табдил диҳанд.