GH GambleHub

Rollback стратегиялары жана атомдук релиздер

Rollback стратегиялары жана атомдук релиздер

1) Эмне үчүн тез артка кайтаруу керек

Мыкты сыноо каптоо менен да, прод кемчиликсиздикке кепилдик бербейт. Rollback - бул SLO/бизнес-метрик же окуя сигналы боюнча системанын мурунку туруктуу абалына башкарылуучу кайтып келиши. Максаттары:
  • MTTR мүнөт кыскартуу.
  • Кыйроонун радиусун чектөө (колдонуучулар/транзакциялар таасир эткен минималдуу).
  • Маалыматтардын бүтүндүгүн жана келишимдердин шайкештигин сактоо.

Ачкыч: релиздерди артка кайтаруу мини-долбоор эмес, майда-чүйдө иш-аракет болуп тургандай кылып куруу.

2) "Атомдук релиз" түшүнүгү

Атомдук релизи - жаңы версия/жүрүм-турум кошуу узак мөөнөттүү терс таасирлери жок бир атомдук операция менен аткарылышы (жана жокко чыгаруу) мүмкүн болгондо.

Атомдук компоненттер:
  • Иммундук артефакт (кол коюлган сүрөт/пакет).
  • Версияланган конфигалар (промоушен версиялары, кол менен оңдоолор эмес).
  • "Жүктү" "күйгүзүүдөн" бөлүү (багыттоо/желектер).
  • Шайкеш берилиштер схемасы (эки версия бир эле учурда жашай алат).
  • Runbook артка: бир түшүнүктүү кадам (селектор/салмагы/желеги өзгөртүү) + текшерүү.

3) Rollback-механизмдерин жабдуулар

3. 1 Traffic деңгээл (тез)

Blue-Green: туруктуу версия селектор/максаттуу топту которуу.
Canary: 0% га чейин салмагын төмөндөтүү жана прогрессти тоңдуруу.
Gateway/NGINX/Service Mesh: мурунку салмагы/жолдорун кайтарып.

3. 2 Конвейер-деңгээл

Helm/Argo Rollouts: 'abort/rollback' мурунку кайра.
GitOps: репозиторийде revert MR/commit (контроллер калганын жасайт).

3. 3 тиркеме/чүчүкулак

Feature-flags/kill-switch: ошол замат кооптуу жол өчүрүү.
Toggle конфигурациялары: мурунку -снапшотко кайтуу.

3. 4 Маалыматтар

Roll-forward көчүрүү (артыкчылык) + шайкештик.
Point-in-time recovery (PITR) жана кырсыктар үчүн backaps.
ордун толтуруу (Saga) жана кайра иш-аракеттер үчүн idempotency.

4) Pattern "expand → migrate → contract" (БД)

Артка кайтаруу коопсуз болушу үчүн, маалыматтар схемасы эски жана жаңы версияларга жашоого мүмкүндүк бериши керек.

1. Expand - жаңы талааларды/индекстерди (nullable) эски логиканы бузбастан кошуу.
2. Migrate - кош жазуу/окуу, бэк-fill, idempotency менен фон job's.
3. Contract - 100% жана туруктуу терезеден чыккандан кийин эски талааларды/кодду алып салуу.

💡 Эреже: тиркемени чыгаруу эч качан көз каранды эмес. Ар кандай иш коопсуз токтотуп, кайра баштаса болот.

5) SLO-Gating жана Auto-Roll

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

Техникалык SLO: p95/p99 жашыруун, 5xx-rate, saturation (CPU/Memory), error-budget burn.
Бизнес-метрика: CR депозиттик/кассалык, төлөөдөн баш тартуу, фрод пайызы, KYC каталары.

Авто-стоп (логиканын мисалы):
  • 5xx > 0. 5% 10 мүнөт → rollback.
  • p95 ↑> 20% негизги → hold + талдоо.
  • PSP катасы> 0. 3 p.p. → rollback + которуу маршруту төлөмдөр.

6) мисалдар: Kubernetes/Helm/Арго/NGINX

6. 1 Blue-Green (K8s Service selector)

yaml
Service points to "blue"; switch to green - change selector apiVersion: v1 kind: Service metadata: {name: app-svc}
spec:
selector: { app: app, version: blue }
ports: [{ port: 80, targetPort: 8080 }]

Артка кайтаруу = "blue" үчүн селекторду кайтаруу (атомдук, кайра чогултуу жок).

6. 2 Canary (Istio VirtualService веса)

yaml http:
- route:
- destination: { host: app, subset: stable } # 100 weight: 100
- destination: { host: app, subset: canary } # 0 weight: 0

Артка = weight canary → 0, stable → 100.

6. 3 Argo Rollouts — abort

yaml kubectl argo rollouts abort app # stop and return to stableService

6. 4 Helm - текшерүү үчүн rollback

bash helm history app -n prod helm rollback app 17 -n prod # revert to revision 17

6. 5 NGINX - upstream салмагы

nginx upstream app {
server blue:8080 weight=100;
server green: 8080 weight = 0; # rollback - return 100/0
}

7) Feature-flags жана kill-switch катары "парашют"

Жогорку тобокелдик агымдары үчүн Kill-switch (депозиттер/төлөмдөр/бонустар) - милдеттүү.
Stickiness: хеш-ачкыч аркылуу "параметр" колдонуучуларга дайындоо - алдын ала салыштыруу.
Fail-safe: желек Server жеткиликсиз болсо - коопсуз дефолт.

Мисал (псевдо-код):
ts const enabled = flags. bool("new_cashout_flow", false);
if (! enabled) return classicFlow () ;//instant rollback - disable the return newFlow () flag;

8) API келишимдер жана окуялар: кантип "кайра сындырып"

келишимдерди чыгаруу (OpenAPI/gRPC/Euro): жаңы версия эски семантикасын өзгөртүү эмес, талааларды кошот.
Event-versioning: 'type = v2', керектөөчүлөр белгисиз талааларды четке кагууга милдеттүү.
Outbox + Idempotency: иш-чаранын ар кандай кайталоо коопсуз, керектөөчү - idempotent.

9) Компенсациялык транзакциялар (Сага)

эч кандай "катуу" кайтаруу абалы (акча кетти, кат жөнөтүлдү), compensation колдонуу:
  • Биз эсептен чыгарууну жүргүздүк - компенсация: кайтаруу, сторнинг, оңдоочу жазуу.
  • Компенсациялык операциялардын жана ийгиликке чейинки ретрациялардын журналына жазуу.
  • Ар бир операция үчүн Idempotent ачкычтар.
Билдирүү үлгүсү (жөнөкөйлөштүрүлгөн):
json
{
"sagaId": "b7d2...",
"action": "withdraw. execute",
"idempotencyKey": "user123:withdraw:7845",
"compensation": "withdraw. refund"
}

10) Конфиги жана сырлар: версия катары артка кайтаруу

Config (semver/commit-sha) нускалары менен экспонаттар катары сактаңыз.
Артка кайтаруу = мурунку нускасына (GitOps кайра), ордуна "колу менен чечүү".
Secrets - сактоо аркылуу (KMS/Vault); ротация жана версиялоо бошотууга киргизилген.

11) Runbook кайра (минималдуу)

1. Прогресстин тыныгуусу (canary/rollouts).
2. Трафикти кайтаруу (салмак/селектор).
3. SLO/бизнес-метр текшерүү негизги сызыкка кайтып келди.
4. Өбөлгөлөрдү турукташтыруу (зарыл болсо миграцияны/бэк-филди токтотуу).
5. Окуя жана пост-фактум: артефакттар (логи/трейс/метрика), гипотезалар, оңдоо.
6. Тазалоо: желектерди жабуу, калган кодду алып салуу, графиктерди кайтаруу.

12) Автоматтык коргоо саясаты

Тыюу 'latest' жана сүрөттөр үчүн туура тегдер.
Admission-Control: кол коюлган экспонаттар гана.
CI-дарбаза: SAST/SCA/Policy-текшерүү жылдыруу үчүн жашыл болушу керек.
Freeze терезелер: релиздер/салмагы тыюу> X% тобокелдик мезгилинде.

13) Тез-тез каршы үлгүлөрү

"Rolling" DDL-ылдый ордуна шайкештиги базасы - узак кулпу/жөнөкөй.
Көз ирмемдик миграция "чекеге" idempotency жана бэк-филл жок.
"Жеткирүү" жана "киргизүү" аралаштыруу - трафикти тез кайтарууга мүмкүнчүлүк жок.
Аудит жок прод-конфигада кол менен оңдоо.
Төлөмдөрдө/корутундуларда kill-switch жок.
Прод үчүн артефактты кайра чогултуу ("build once - run many" бузуу).
Эч кандай бирдиктүү кайра баскычы/иштетилбеген runbook.

14) киргизүү чек-тизмеси (0-45 күн)

0-10 күн

Негизги кызматтарда Blue-Green/Canary кирет.
Тыюу салуу 'latest', сүрөттөрдүн кол тамгасын жана Helm/Argo тарыхын киргизүү.
SLO такталарын туташтыруу (latency, 5xx, негизги бизнес сигналдары).

11-25 күн

тобокелдик Flow үчүн kill-switch ишке ашыруу.
БДнын миграциясын expand-migrate-contract + idempotency которуу.
SLO (Argo AnalysisTemplate/alerty) боюнча auto-stop/rollback кошуу.

26-45 күн

Version config (GitOps), MR-revert аркылуу артка.
Runbook "game-day" боюнча чуркап (окуя жана артка жылдыруу).
Артка "төмөн" мүмкүн эмес жерде Saga-ордун толтуруу киргизүү.

15) Жетилүү метрикасы

MTTR кайра: максаты <5 мин.
% Releases, бул жерде артка кайтуу = маршрут/желекти которуу (кайра чогултуу жок)> 90%.
expand-migrate-contract схемасы боюнча миграциянын үлүшү> 90%.
Kill-switch кызматтарын желектер менен жабуу> 95%.
улам шайкеш келбеген схемалар/келишимдер окуялар саны → 0.

16) Тиркемелер: мини-үлгүлөрү

Argo AnalysisTemplate: 5xx боюнча токтотуу

yaml apiVersion: argoproj. io/v1alpha1 kind: AnalysisTemplate metadata: { name: guard-5xx }
spec:
metrics:
- name: http_5xx_rate interval: 1m successCondition: result < 0. 005 provider:
prometheus:
address: http://prometheus. monitoring:9090 query:
sum(rate(http_requests_total{app="app",status=~"5.."}[5m])) /
sum(rate(http_requests_total{app="app"}[5m]))

Kubernetes: тез артка Deployment

bash kubectl rollout undo deploy/app -n prod

Helm: атомдук релиз

bash helm upgrade --install app chart/ \
--atomic \
--timeout 5m \
--set image. tag=v1. 9. 3

NGINX: Канарейка үчүн "кран"

nginx map $cookie_canary $weight {
default 0;
"~ on" 10; # enable 10% by cookie
}

17) Корутунду

Ишенимдүү артка чегинүү "өрт баскычы" эмес, архитектуранын касиети: иммутабель артефакттары, жеткирүү жана киргизүү бөлүнүшү, шайкеш берилиштер схемасы, фича-желектер жана SLO-гейтинг. атомдук релиздерди куруу, Runbook жана коргоо дарбазасын автоматташтыруу үчүн машыгуу - жана ар бир бошотуу бизнес жана колдонуучулар үчүн эч кандай оору, мүнөт ичинде кайра болот.

Contact

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

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

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

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

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

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