Zero-Downtime жайгаштыруу
(Бөлүм: Архитектура жана протоколдор)
1) Zero-Downtime деген эмне жана эмне үчүн керек
Zero-Downtime (ZDT) колдонуучулар үчүн жеткиликсиз жана суроо-талаптарды жоготпостон колдонмонун жаңы версияларын чыгаруунун жолу. Максаттары:- Кардарлар жана интеграциялар үчүн нөл жөнөкөй.
- Алдын ала релиздер, тез артка жана башкарылуучу тобокелдик.
- SLO/SLI сактоо (жашыруун, каталар, жеткиликтүүлүк) макулдашуулардын чегинде.
ZDT ачкычы бир "сыйкырдуу" техника эмес, жеткирүү үлгүлөрүнүн айкалышы, маалыматтардын шайкештиги жана трафиктин компетенттүү багыты.
2) Zero-Downtime негизги негиздери
1. Версиялардын шайкештиги: жаңы жана эски версиялар трафикти жана маалыматтарды бир эле учурда туура иштетиши керек.
2. Операциялардын туруктуулугу: кайра иштетүү абалын бузбашы керек.
3. Татынакай аяктоо (graceful shutdown) жана дренаждык байланыштар.
4. Этап-этабы менен ден соолук текшерүү: readiness/liveness үлгүлөрү, саламаттык сактоо-enpoynts.
5. Биринчи класстагы жаран катары артка кайтуу: rollback hotfix караганда жеңил жана тез.
6. By design байкоо: релиз белгилери, бирдиктүү дашборддор, SLO боюнча алерталар.
7. Автоматташтыруу: чыгаруу жана кайтаруу сценарийлери - кол менен көрсөтмө эмес, код.
3) Даунтайм жок жеткирүү үлгүлөрү
3. 1 Rolling Update
Бара-бара, эски нускасында жол айрым учурларын алып, жаңы аларды жаңыртып, көлмөгө кайтып.
Артыкчылыктары: инфраструктура боюнча үнөмдүү, жөн гана k8s/ASG.
Кемчиликтери: бир нече убакыт бою кластер бир эле учурда эки версия менен иштейт (version skew).
3. 2 Blue-Green
Эки толук прод-стек: активдүү (Blue) жана талапкер (Green). Трафикти которуу - атомдук флип.
Артыкчылыктары: тез артка, таза изоляция.
Минустары: ↑ инфраструктурага чыгашалар, stateful менен татаалыраак.
3. 3 Canary/прогрессивдүү rollout
Биз трафиктин бир аз бөлүгүн (1-5-10-25-50-100%) метриктер боюнча жаңы версияга беребиз.
Артыкчылыктары: минималдуу blast radius, data-driven чечимдер.
Кемчиликтери: жетилген байкоо жана интеллектуалдык багыттоо керек.
3. 4 Shadow traffic / Dark launch
жаңы нускасында реалдуу суроо күзгү (колдонуучуга жооп жок) же метрика чогултуу үчүн жашыруун башталат.
Артыкчылыктары: көйгөйлөрдү эрте аныктоо.
Кемчиликтери: көз карандылыкка кош жүк, терс таасирлерин көзөмөлдөө керек.
4) Жол жана байланыш башкаруу
4. 1 Readiness/Liveness
Liveness оркестр мындай дейт: "Мени кайра".
Readiness - "жол багытын жок, мен даяр эмесмин".
Туура readiness-логика жана убакыт жок бошотуу мүмкүн эмес.
4. 2 Дренаждык байланыштар (Connection Draining)
Пулдан инстанцияны чыгаруудан мурун:- жаңы байланыштарды кабыл алууну токтотуп,
- активдүү аякташын күтөбүз,
- тайм боюнча "илинип калгандарды" үзгүлтүккө учуратабыз.
4. 3 Sticky сессиялар жана багыттоо деңгээл L7
Sticky stateful-жагдайда пайдалуу, бирок жүк балансын татаалдаштырат.
L7-эрежелери (жол, баш, куке, API версиялары) canary/ring үчүн ыңгайлуу.
4. 4 Узак мөөнөттүү байланыштар
WebSocket/gRPC streaming: жаңыртуу алдында drain mode + "GOAWAY" сигналын күйгүзүү.
Пландаштыруу Windows агымдарын жана кардарларга Backof-Retrais.
5) Маалыматтар менен миграциянын шайкештиги
5. 1 Expand-Migrate-Contract
1. Expand: Жаңы тилкелерди/индекстерди/таблицаларды эски версиясын бузбастан кошуу.
2. Migrate: фон жана идемпотент маалыматтарын (батчи, чекпоинттер) өткөрүп беребиз.
3. Contract: турукташтыруу кийин гана эски алып салуу.
5. 2 практикасы
чыгаруу терезеде өзгөчө DDL-блокторду качуу.
API/Event келишимдерин версиялаңыз (schema registry, CDC).
Оор миграция үчүн - онлайн куралдар, репликалар, этап-этабы менен которуулар.
Эки контурдуу жазуу (dual-write) дедупликация жана демпотенттик керектөөчүлөр менен гана.
Outbox/Inbox кезек аркылуу ишенимдүү бириктирүү үчүн.
6) Кэш, сессиялар жана арткы тапшырмалар
Сессиялар жана кэш - тышкы (Redis/Memcached) нускалары бири-бирин алмаштырууга болот.
Көлмөгө киргенге чейин кэш/джит/темп индекстерин жылытуу.
Жарыштарды болтурбоо үчүн фон кезектерин бөлүңүз же лидерликти колдонуңуз.
7) SLO боюнча байкоо жана гейтс
Golden сигналдар: жашыруун p95/p99, ката rate, RPS, saturation, артта кезек.
Бизнес-SLA: авторизация, конверсия, ийгиликтүү төлөмдөр, воронканын кадамдарынан баш тартуу.
Гейтс: rollout гана canary ≤ baseline + деградация босоголору жана error budget күйүп жок болсо, алдыга жылат.
8) Коопсуз аяктоо жана артка кайтаруу
Артка кайтаруу - бул ошол эле пайплайн, бир гана карама-каршы багытта: "кол менен кол өнөрчүлүк" эмес, белгиленген буйруктар.
Blue-жашыл үчүн - flip back; canary үчүн - 0% га же мурунку туруктуу кадамга чейин арыктоо.
Маалыматтар: компенсациялык транзакциялар, кайра иштетүү, окуяларды дедупликациялоо.
9) Чек баракчалары Zero-Downtime
Чыгаруу алдында
- бир кол коюлган артефакт чогултулган (immutable), SBOM жана көз карандылыкты текшерүү.
- Readiness/liveness ишке ашырылган жана сыналган.
- expand режиминде көчүрүү планы, кайтарымдуулугу тастыкталган.
- Жаңы версия үчүн Dashboard жана Alerts даяр, бошотуу белгилери ыргытылат.
- Артка staging/pre-prod боюнча текшерилет.
чыгаруу учурунда
- Дренаж байланыштар киргизилген, убакыт жетиштүү.
- Traffic акырындык менен которулган (canary/ring) же flip (көк-жашыл).
- Metrics baseline менен салыштырылат, gates босогосу сакталат.
бошотулгандан кийин
- Пост-мониторинг N саат, эч кандай окуялар.
- contract миграциялары аяктады, убактылуу желектер/каттамдар алынып салынды.
- Retrospective, playbook жаңыртуу.
10) Анти-үлгүлөрү
Дренажсыз Recreate-deploy жана readiness ⇒ кыйроолор суроо.
Даяр эмес DDL ⇒ бөгөт коюу жана прайм-тайм таймауттар.
Кызматтын версияларынын ортосунда шайкеш келбеген схемаларды аралаштыруу.
Иштеп чыгуучулар жана воркерлерде демпотенттиктин жоктугу.
"Сезүү боюнча чыгаруу" эч кандай оюн жана baseline менен салыштыруу.
Узак DNS-TTL көк-жашыл, Ошондуктан, flip саат созулат.
rolling/canary боюнча Жергиликтүү сессиялар/бийлик эс кэш.
11) Ишке ашыруу сценарийлери
11. 1 Kubernetes (rolling + canary)
Deployment с `maxUnavailable=0`, `maxSurge=25%`.
Readiness жылытуу күтүп турат (кэш баштоо, көчүрүү minor).
Кызмат-меш/Ingress менен weighted routing (1-5-10-25-50-100%).
Alerty: p95, 5xx, кезек артта, бизнес huni.
11. 2 Blue-Green булут
Эки стек баланстоочу үчүн: 'blue. example. com` и `green. example. com`.
Green жылытуу, smoke/регресс, андан кийин listener/route swap (же DNS төмөн TTL менен которуу).
көйгөйлөр менен - тез flip back.
11. 3 Stateful-кызматы
Маалымат көчүрмөлөрү + онлайн миграция; валидация менен кош окуу.
Фон джобдору "лидерлик" версиясы же бөлүнгөн кезек боюнча которулат.
Сессиялар/сырттан кэш; sticky убактылуу гана кирет.
12) Физикалык жана кардарлардын тиркемелери
Жаңы чыпкалар желектер менен жанданат (сегменттер: кызматкерлер → бета → бардыгы).
Мобилдик/desktop кардарлар үчүн протоколдун шайкештик чектерин жана эски версиялардын жашоосун эске алыңыз (deprecation policy, server-side fallback).
13) аткаруу жана наркы
Rolling арзан, бирок кылдат шайкештикти талап кылат.
Blue-Green чыгаруу учурунда кымбатыраак, бирок артка дароо.
Canary тобокелдиктерди жана чыгымдарды тең салмактайт, бирок күчтүү байкоону талап кылат.
ephemeral-алдын ала жана стенддерди автоматтык тазалоо аркылуу үнөмдөө.
14) Минималдуу шилтеме-пайплайн ZDT
1. Build: бирдиктүү артефакт, кол, SBOM.
2. Test: unit/integration/contract + security.
3. Staging: smoke, жүк, expand режиминде көчүрүү, кайра текшерүү.
4. Prod: shadow → canary (гейт) же blue-green flip.
5. Post-deploy: байкоо, contract-cleanup, ретро.
15) Кыскача резюме
Zero-Downtime - бул тартип: шайкеш версиялар + туура багыттоо + башкарылуучу миграция + байкоо жана тез артка кетүү. контекст боюнча үлгү тандоо (rolling, көк-жашыл, canary), SLO боюнча автоматташтырылган гейтс, маалыматтарды idempotent сактоо - жана бошотуу ишенимдүү күнүмдүк жараянына айланып, окуя болуп калат.