Ролбэктер және тұрақтылықты қалпына келтіру
(Бөлім: Технологиялар және Инфрақұрылым)
Қысқаша түйіндеме
Кері қайтару - бұл деректерді жоғалту және SLO бұзылу қаупі аз соңғы тұрақты нұсқаға басқарылатын қайту. Сенімді үдеріс: SLO сигналдары, нақты гейттер және кері қайтару критерийлері, ауыстырып қосу механизмі (GitOps/Ingress/mesh), үйлесімді деректер схемасы, оқшауланған конфигалар/құпиялар/кэштер, рунабук-и және инциденттен кейінгі жақсарту циклі.
1) Қашан домалату (іске қосу критерийлері)
SLO/бизнес-гейттер: p95/99 шектен жоғары, error-rate ↑, төлемдер/мөлшерлемелер конверсиясының төмендеуі, PSP таймауттарының өсуі.
Техсигналдар: тал бояулары, жадының кемуі, кезектердің өсуі, токендердің тозуы/сек (LLM), 5xx Edge.
Деректер тәуекелі: қате көші-қон, репликалардың келісілмеуі, орфандық транзакциялар/төлемдер.
Қауіпсіздік/PII: ағып кетуге күдік - дереу қайтару/оқшаулау.
Ереже: егер 2 + негізгі метриктер шегінен тыс болса> N минут - кері қайту басталады.
2) Ролбэктердің түрлері
1. Қосымша: контейнерлерді/пакетті алдыңғы тегке қайтару.
2. Фичи: feature flag/kill-switch арқылы дереу өшіру.
3. Бағыттау: тұрақты нұсқасына салмақты қайтару (canary → stable) немесе Blue → Green.
4. Деректер базасы: қисынды кері қайтару (өтемақы), схеманы кезең-кезеңімен қайтару; PITR - соңғы шара.
5. Инфрақұрылым: манифесттерді/Terraform-жоспарды қайтару; желі/WAF конфигурацияларын қайтару.
6. Деректер/кэш/кезек: хабарламаларды тастау/мүгедектік/қайталау; нұсқалық кэштер.
3) Қауіпсіз қайтарудың сәулеттік қағидаттары
Схемалардың үйлесімділігі: expand → migrate → contract стратегиясы (expand және contract арасында кері қайту мүмкін).
Оқшауланған тәуелділіктер: ревизияларға арналған бөлек құпиялар/конфигалар/кэштер/кезектер.
Идемпотенттік операциялар: көші-қонды және джобты қайталау - қауіпсіз.
Артефактілердің иммутабельділігі: бейнелер, чарттар, SQL-скрипттер - нұсқаланған және қол қойылған.
GitOps - ақиқат: ағымдағы нұсқасы мен бағыты манифест-репозиторийде тіркелген.
4) Бас тарту механикасы (Kubernetes/GitOps)
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
GitOps-кері қайту (идея)
git revert <commit_with_bad_version>
git push # Argo CD/Flux revert cluster to previous revision
NGINX: stable жылдам түрлендіргіші
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) Ролбэк БД және деректерді қорғау
Expand → Migrate → Contract:- Expand: жаңа өрістерді/индекстерді қосыңыз, код ескі және жаңа схеманы қолдайды.
- Migrate: код жаңа сұлбаға жазылады, ескісін бұзбаймыз.
- Contract: ескісін тұрақтандырғаннан кейін ғана жойамыз.
- PITR/снапшоттар: логикалық орнын толтыру мүмкін болмаған жағдайда ғана пайдаланыңыз.
- Өтемақы: ендірмелерді/баланстарды/төлемдерді түзетуге арналған жеке скрипттер/джобтар.
- Read-only терезелер: сынаған кезде - жағдайды «қатыру» үшін жазбаны уақытша бұғаттаймыз.
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:'.
Кезектер: нұсқа бойынша партиялар/топиктер; «бақылау нүктесінен» хабарламаларды қайта ойнату.
Қайталану/ұқсамаушылық: қайталаусыз қайта өңдеуге арналған ұқсамаушылық кілттері.
7) SLO-гейттер және авто-кері қайтулар
Метриктер: p95/99, error-rate, saturations (CPU/IO/GPU), queue depth, токендер/сек, төлем конверсиясы.
Саясат (мысал):
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) Рунабуки (playbooks)
A) Шығарылғаннан кейін p99 және 5xx биіктігі
1. Stop promote (canary/blue-green қатыру).
2. Тұрақты тексеру үшін Switch traffic.
3. Кэш-хит/кезек/PSP кідірістерін тексеру.
4. Диагностиканы алып тастау: логтар, профильдер, клиенттердің/схемалардың нұсқалары.
5. Коммуникация: ChatOps, статус-арна, инцидент-карточка.
6. Түзету әрекетін бастау: патч/ыстық фикс/фичаны жою.
B) ДБ көшіру қатесі
1. Freeze writes (read-only, қысқаша).
2. Қолданбаны қайтару → тұрақты нұсқасы (ескі схемамен үйлесімді).
3. / rollback-скрипт өтемақысын орындау.
4. Жазбаны еріту; дрейф/қателерді бақылау.
С) Төлемдердің құлдырауы (PSP)
1. PSP бағытын бұрынғы бағытқа ауыстыру.
2. Процессинг релизін қайтару.
3. Барлық аяқталмаған төлемдерді сәйкестендірілген кілттермен салыстыру.
D) LLM/ұсынымдар деградацияланады
1. Жаңа үлгі/параметрлерді ажырату (feature flag).
2. Бұрынғы endpoint/салмақты қайтару; Жаңа тексерудің KV кэшін тазалау.
3. Tokens/s, бірінші latency, уыттылығын тексеру.
9) Коммуникация және релиздерді мұздату
Freeze window: қайтарылғаннан кейін - RCA/фикске дейін релиздерді тоқтату.
Бір арна: статус-апдейттер, әрекеттердің хронологиясы, кім не істеді.
Стейкхолдерлер: өнім/CS/төлемдер/заңгерлер (PII кезінде).
10) Пост-инцидент: талдау және алдын алу
RCA (айыптаусыз): негізгі себеп, факторлардың үлесі, неге гейттер жұмыс істемеді (егер жұмыс істемесе).
Іс-қимылдары: көші-қон тестілері, лимиттер, фичефлаг-гейттер, бақылау.
SLO-шегі: тым «жұмсақ «/» қатты »болса түзету.
Құжаттама: рунабуктарды жаңарту, алаңдарды, жаттығуларды (game-day) қосу.
11) Құралдар мен үлгілер
GitOps: Argo CD/Flux - 'revert '/' rollback' нұсқасы бар коммита.
Progressive delivery: Argo Rollouts/Flagger - метрлер бойынша тоқта/қайту.
Edge/Ingress: салмақтық бағыттау, cookie-роутинг, жылдам свитч.
Feature flags: fractional rollout, kill-switch.
DB көші-қон: up/down, dry-run, throttling бар миг-фреймворк.
Observability: дайын дашбордтар «release compare» (stable vs canary).
12) Шегініске әзірлік чек-парағы
1. Нұсқаланған және қол қойылған артефактілер (бейнелер/чарттар/SQL).
2. Екі рельсті конфигтер/құпиялар/кэштер/кезектер (нұсқалық префикстер).
3. expand → migrate → contract.
4. SLO-гейтпен және авто-тасқынмен канареялық және blue-green релиздер.
5. Негізгі сценарийлерге арналған рунабуктар (төлемдер/ДБ/кэш/LLM).
6. ChatOps-түймешіктері: '/rollback ', '/freeze', '/promote '.
7. Аудит және логизация: кім, қашан, не сырғып кетті; диагностика артефактілері.
8. Game-day жаттығулары: сәтсіздіктер мен қалпына келтіруді имитациялау.
9. Бизнеспен және саппортпен коммуникация жоспары.
10. Бір экрандағы салыстыру өлшемдері (stable vs new).
13) Қарсы үлгілер
Кодты тарқатқанға дейін бұзатын көші-қон (кері сыйысымдылық жоқ).
Жалпы кэштер/нұсқасыз кезектер → «лас» кері қайтару.
GitOps/өзгерістер тарихы жоқ → «қолмен» түзету.
Гейтсіз/телеметриясыз канареялық релиз → кеш табу.
freeze және RCA → оқиғаның қайталануы.
Бизнес-метрикасыз тек техметриктер мониторингі (төлемдер/мөлшерлемелер).
Барлық тексерулер үшін «ортақ құпиялар» → оқиғаны оқшаулау қиын.
Сенімді ролбэк - бұл «стоп-кран» емес, релиздерге кіріктірілген процесс: нұсқалылық және үйлесімділік, оқшауланған тәуелділік, SLO-гейттер, GitOps-шындық, автоматты кері қайтарулар және нақты рунабуктер. Бұл тәсіл iGaming-платформаларына деректер мен түсімнің жоғалуын азайтып, тұрақтылықты тез қайтаруға және әрбір оқиғаны жақсарту көзіне айналдыруға мүмкіндік береді.