Logo GH

Blue-Green және Canary релиздері

(Бөлім: Сәулет және Хаттамалар)

1) «Қауіпсіз шығу» не үшін қажет?

Қазіргі заманғы жүйелерде релиз - бұл тек кодты жеткізу ғана емес, сонымен қатар өнімдегі басқарылатын эксперимент: біз бір мезгілде тәуекелді барынша азайтамыз (пайдаланушыларды бұзбаймыз) және кері байланыс уақытын қысқартамыз (әсерді тез көреміз). Екі классикалық стратегия - Blue-Green және Canary - мұны әртүрлі шешеді, бірақ ортақ мақсатта: нөлдік даунтайм, жылдам кері қайту, SLO бойынша бақылау.

2) Базалық анықтамалар

Blue-Green

Прод-ортаның екі толыққанды көшірмесін сақтаймыз: белсенді (Blue) трафикке қызмет көрсетеді, пассивті (Green) жаңа нұсқасын дайындайды. Қайта қосу - теңгеруші/маршрутизатор деңгейіндегі атомарлық (switch/flip). Егер нашарласа, дереу Blue-ға ораламыз.

Canary

Біз бөліп шығарамыз: алдымен трафиктің аз% (мысалы, 1-5%), метриканы/SLO бақылаймыз, содан кейін үлесті біртіндеп ұлғайтамыз (10% → 25% → 50% → 100%). Деградация кезінде - алдыңғы тұрақты қадамда кері шегіну немесе тоқтау.

3) Қандай тәсіл жақсы

Blue-Green - егер:
  • Күрделі маневрлерсіз бірден қайту керек.
  • Сәулет/бюджет қос инфрақұрылымдық қайталауға мүмкіндік береді.
  • Ауқымды көші-қон немесе платформаны (OS/JDK/рантайм) жеке жаңартуды жүргізгіміз келеді.
  • Қосылыстардың қосымшалары/пулдары біртіндеп «аралас» күйге сезімтал.
Canary - таңдаңыз, егер:
  • blast radius бағдарламасын барынша азайтып, пайдаланушылардың үлесінде мінез-құлықты көру керек.
  • Релиздердің жоғары жиілігі, норма ретінде прогрессивті жеткізу.
  • Жетілген бақылау және автоматты гейттер (error budget, latency, conversion) бар.
  • Азық-түлік командасы гипотезаларды тексергісі келеді: конверсияға, ұстап қалуға, LTV және т.б.

4) Табысты шығарудың жалпы қағидаттары

Идемпотенттік билд-артефактілер: барлық кезеңдерде бір бейне/пакет.
Детерминирленген конфигурация:, код ретінде, ортаның салыстырмалылығы.
Бақылануы by design: логи, метрика, трассировка, алерта; SLI/SLO алдын ала.
Жылдам, автоматтандырылған кері қайтару: түймешік/кері қайтару пәрмені - қол сиқыры емес, пайплайн бөлігі.
Схемалардың үйлесімді өзгерістері: expand-migrate-contract стратегиясы (қараңыз § 10).
L7 деңгейіндегі маршруттау (мүмкіндігінше): API тақырыптары/куки/жолдары/нұсқалары бойынша икемділік.

5) Blue-Green: сәулет және процесс

5. 1 Топология

Екі прод-стек: Blue (белсенді) және Green (кандидат).
Жалпы сыртқы тәуелділіктер: CDN, сыртқы API, кезектер; ДБ - ерекше жағдай (қараңыз § 10).
Ауыстырып қосу нүктесі: теңгеруші/Ingress/Gateway.

5. 2 Қадамдық флоу

1. Green-ді жаңа артефактпен (vNext) көтереміз, смок-тесттер өткіземіз.
2. Green қарсы автотестерді айдап өту (e2e, келісімшарттық, регрессиялық).
3. Кэш/сессияларды жылытамыз (егер қолданылса), фондық джобтарды/кезектерді үндестіреміз.
4. Трафикті Green-ге ауыстырып қосамыз: атомарлық flip (DNS TTL төмен, Route/Listener swap, Ingress weight = 100%).
5. SLO-ны алғашқы минут/сағатта бақылаймыз (golden signals: latency, errors, saturation + бизнес-метрика).
6. Проблемалар кезінде - Blue (flip back) қызметіне дереу оралу.

5. 3 Артықшылықтары/кемшіліктері

Артықшылықтары: жылдам қайту, қарапайым ментальды модель, таза оқшаулау.
Кемшіліктері: инфрақұрылымның екі еселенуі, stateful компоненттерімен және деректер миграциясымен күрделілігі.

6) Canary: сәулет және процесс

6. 1 Топология

Бірыңғай прод-кластер; сервистің бірнеше нұсқасы (stable және canary).
Трафик таразылар бойынша (1-5-10-25-50-100%) немесе таргеттер бойынша (тақырып бойынша/куке/ID) бөлінеді.

6. 2 Қадамдық флоу

1. Сол кластерге/ASG/NSG canary-нұсқасын жіберу.
2. Трафиктің бір бөлігін (мысалы, 1-5%) canary-ге бағыттау.
3. SLI/SLO және бизнес-метриктерді автоматты тексеру; CI/CD гейтс (error rate, p95 latency, CPU/RES, конверсия, бас тарту/қайтару).
4. Гейттерден өту кезінде трафик үлесін қадамдық ұлғайту.
5. 100% -ға дейін толық rollout және ескі нұсқасын өшіру; деградация кезінде - авто-rollback.

6. 3 Артықшылықтары/кемшіліктері

Артықшылықтары: көптеген пайдаланушылар үшін ең аз тәуекел, data-driven шешім.
Кемшіліктері: жетілген бақылау, сауатты бағыттау, инстанциялар арасында «version skew» тәуекелі қажет.

7) Трафикті бағыттау

L4 деңгейі: IP/порттар бойынша теңгерім; қарапайым, бірақ икемділігі аз.
L7 деңгейі: HTTP/S-ережелері - жол бойынша, хост, тақырып, cookie, User-Agent, GeoIP, SNI.

Техника:
  • Weighted routing (салмағы 1-100%).
  • Header-based/Cookie-based (топқа пайдаланушыны тіркеу).
  • Session stickiness (stateful/кешенделген сценарийлер үшін маңызды).
  • Shadow/Traffic mirroring (сұрауларды «жасырын» жаңа нұсқасына айналаймыз).

8) Құралдар және іске асыру (мысалдар)

Kubernetes: Ingress (NGINX, Contour), Service Mesh (Istio/Linkerd), Argo Rollouts, Flagger.
Облака: AWS ALB/ELB, Route 53 weighted records, ECS/EKS; GCP Load Balancing + NEG; Azure Front Door/App Gateway.
CD платформалары: Spinnaker, Argo CD, GitHub Actions + Progressive Delivery плагиндер, GitLab/CD.

💡 Бір қағидат: нұсқа - код, трафик - саясат, ілгерілету - SLO бойынша автоматтандырылған гейттер.

9) Бақылау, SLI/SLO және гейталар

Golden signals: Latency (p95/p99), Error rate (5xx/4xx по типам), RPS, Saturation (CPU/Memory/GC), Queue lag.
Бизнес-метриктер: конверсия, авторизация, төлемдер/табыстар, орташа чек, құйғыштың қадамдары бойынша бас тарту.

Гейтс:
  • Қате шегі (мысалы, error rate canary ≤ baseline + X%).
  • p95 жасырындылығы Δ артық baseline кем емес.
  • Бизнес шегі (мысалы, конверсияның төмендеуі
  • SLO бойынша Error budget тез жанбауы тиіс.

Қадамның ұзақтығы: статистикалық маңыздылығы үшін жеткілікті ең аз уақыт (трафикке байланысты).

10) ДБ көші-қоны және схемалардың үйлесімділігі

Басты ереже: егер нұсқалар артқа және алға үйлесімді болса, релиздер қауіпсіз.

expand-migrate-contract стратегиясы:

1. Expand: жаңа бағандарды/индекстерді/кестелерді ескі нұсқасын бұзбай қосыңыз.

2. Deploy app vNext (жаңа схеманы оқиды/жазады, бірақ ескісімен де жұмыс істей алады).

3. Migrate data (бэкграунд/батч, іспеттес, чек пункттері бар).

4. Contract: тұрақтандырудан кейін ескі өрістерді/өрістерді жойамыз.

Анти-үлгілер: Blue-Green ауыстырып қосу сәтінде эксклюзивті бұғаттауды талап ететін көші-қон; схеманы түсірудің мүмкін еместігі; «қос жазба» дедупликациясыз.

11) Кері шегіну (rollback) және авариялардың жоспарлары

Blue-Green: Blue жылдам флип; Green фондық джобтарының «қалдықтарын» мониторингілейміз.
Canary: салмақ шегінісі (мысалы, 25% артқа 5% немесе 0%); алерттер кезінде автоматты abort.
Деректер: қайталаудың/өтемақының ойластырылған саясаты (idempotency keys, «inbox/outbox» паттерн, хабарламаларды дедупликациялау).
Фичефлагтар: ішінара шығарылған мүмкіндіктерді ажырату үшін жылдам kill switch.

12) Стейтпен және сессиялармен жұмыс

Канареялар үшін Sticky sessions немесе нұсқалар бірін-бірі алмастыру үшін сырттай сессияларды сақтау (Redis/Memcached).
Кэшті алдын ала жылыту (Green warm-up) және flip кезінде invalidation есепке алу.
Фон воркерлері: нұсқалар арасында «жарыс» - кезектерді бөлуге немесе нұсқа бойынша «көшбасшылыққа» жол бермеңіз.

13) Қауіпсіздік және сәйкестік

Green/Canary - Zero Trust бойынша қол жеткізу: сервистік шоттар, ең аз қажетті рөлдер.
Құпиялар мен кілттер - KMS/Secrets Manager арқылы; ротацияны қосыңыз.
Трафик - тек TLS; endpoint 'дердің нұсқалары анық белгіленген; бағыттау және релиздік іс-қимылдар аудиті.

14) Құны және өнімділігі

Blue-Green инфрақұрылымды екі есе арттырады (шығу уақытында немесе үнемі) - бюджетті белгілеңіз.
Canary үнемді, бірақ автоматтандыру үшін бақылау құралдары мен инженерлік уақытты талап етеді.
Оңтайландыру: автоскейлинг, ephemeral орта, параллель нұсқалардың терезесін қысқарту.

15) Чек парақтары

Шығару алдында

  • Бейне/билд бір көзден алынған, қолтаңбалар тексерілді.
  • Тест-жоспар, алерттар және SLO-гейттер теңшелген.
  • DD көші-қоны - expand режимінде, жеткізу жоспарлары қол жетімді.
  • Кері қайтару жоспары - staging/production-like бағдарламасында тексерілді.

Шығару кезінде

  • Метриктер мен логтар baseline-мен салыстырылады.
  • Canary үшін - қадамдар мен табалдырықтар тіркелген; Blue-Green үшін - flip-back дайындығы.
  • On-call командалары біледі, кері байланыс терезесі бар.

Шығарылғаннан кейін

  • SLO батпады, error budget қалыпты.
  • Релизден кейінгі көшіру/тазарту аяқталды.
  • Ретроспектива және ойнатқыштарды жаңарту.

16) Жиі қателер және қарсы үлгілер

Метрикасыз шығару: деректер жоқ - басқарылатын шешім жоқ.
БД-ның үйлеспейтін схемаларын араластыру, даунгрейд стратегиясының болмауы.
Трафикті кездейсоқ араластыру: stickiness жоқ, пайдаланушылар нұсқалар арасында «секіреді».
Жасырын stateful-тәуелділік (жергілікті дискілер, in-memory кэштер).
Ұзақ DNS-TTL тез flip (Blue-Green) кедергі келтіреді.
Автогейттердің жоқтығы: қолмен «көзге» шешімдер тежейді және тәуекелдерді арттырады.

17) Құрамдастырылған тәсілдер

Blue-Green + Canary: алдымен Green-ді домалату, содан кейін жеке қызметтер үшін Green-дің ішінде Canary-ді домалату.
Shadow/көші-қон трафигі: Canary алдында айналық трафикті жаңа нұсқаға айдаңыз.
Feature flags (progressive delivery): функционал сегменттер бойынша «қара» жалаушалармен тұрақты нұсқаның үстінен қосылады.

18) Сценарий үлгілері (эскиздер)

Blue-Green (web+api):

1. Green (v2) жаңа Listener/Ingress.

2. Кэштерді жылытамыз, readonly-тексерулерді, smoke орындаймыз.

3. Салмақты Green = 100% -ға ауыстыру.

4. SLO 30-60 минут бақылаймыз; егер бәрі жақсы болса, Blue бағдарламасын өшіреміз.

Canary (микросервис төлемі):

1. vNext деплой canary (5% репликасы).

2. Ішкі аккаунттар/тест-сегмент үшін 5% трафигін қосамыз.

3. Автогейт: error rate ≤ baseline + 0. 3%, p95 ≤ +20ms.

4. 10% → 25% → 50% көтереміз әрбір N минут сайын.

5. Фичефлагты барлық сегменттер бойынша 100% аударамыз; ескі нұсқасын жойамыз.

19) Әр түрлі сәулеттерге арналған вариациялар

Монолит: Blue-Green оңай, Canary бөлінбейтіндіктен қиынырақ; фичефлагтарды пайдаланыңыз.
Микросервистер: Canary табиғи; сервистік келісімшарттарды (consumer-driven contracts) қадағалаңыз.
Stateful Services: Blue-Green-ді мұқият пысықталған миграциялармен және stickiness-пен таңдаңыз.

20) Қысқаша салыстыру (түйіндеме)

Кері қайту жылдамдығы: Blue-Green = бірден; Canary = тез, бірақ салмақ шегінісімен.
Инфрақұрылымның құны: Blue-Green ↑; Canary ↔︎/↓.
Пайдаланушылар үшін тәуекел: Canary төмен (үлесті бақылаймыз).
Енгізу күрделілігі: Blue-Green бастау оңай; Canary күшті бақылау мен автоматтандыруды талап етеді.
Деректердің/схемалардың үйлесімділігі: екеуі үшін де сыни; expand-migrate-contract бағдарламасын жоспарлаңыз.

21) Қорытынды

Blue-Green және Canary - бір-бірін жоққа шығаратын стратегиялар емес, прогрессивті жеткізу элементтері. Таңдау құн бойынша шектеулерге, бақылаудың жетілуіне және өзгерістердің сипатына байланысты. Жақындауына қарамастан, тұрақты босату төрт тіректе ұсталады: автоматтандыру, бақылау, кері үйлесімділік және тез қайту.

Contact

Бізбен байланысыңыз

Кез келген сұрақ немесе қолдау қажет болса, бізге жазыңыз.Біз әрдайым көмектесуге дайынбыз!

Telegram
@Gamble_GC
Интеграцияны бастау

Email — міндетті. Telegram немесе WhatsApp — қосымша.

Сіздің атыңыз міндетті емес
Email міндетті емес
Тақырып міндетті емес
Хабарлама міндетті емес
Telegram міндетті емес
@
Егер Telegram-ды көрсетсеңіз — Email-ге қоса, сол жерге де жауап береміз.
WhatsApp міндетті емес
Пішім: +ел коды және номер (мысалы, +7XXXXXXXXXX).

Батырманы басу арқылы деректерді өңдеуге келісім бересіз.