Logo GH

Blue-Green və Canary buraxılışları

(Bölmə: Memarlıq və Protokollar)

1) Niyə «təhlükəsiz çıxışlar» lazımdır

Müasir sistemlərdə buraxılış yalnız kodun çatdırılması deyil, həm də prodda idarə olunan bir təcrübədir: biz eyni zamanda riski minimuma endiririk (istifadəçiləri sındırmırıq) və rəy müddətini qısaltırıq (təsiri tez görürük). İki klassik strategiya - Blue-Green və Canary - bunu fərqli şəkildə həll edir, lakin ümumi məqsədlə: sıfır geri dönüş, sürətli geri dönüş, SLO ilə müşahidə.

2) Əsas təriflər

Blue-Green

Proto-mühitin iki tam surətini saxlayırıq: aktiv (Mavi) trafikə xidmət edir, passiv (Yaşıl) yeni versiyanı hazırlayır. Keçid - balanslaşdırıcı/marşrutlaşdırıcı səviyyəsində atom (switch/flip). Daha da pisləşirsə, dərhal Blue-ya qayıdırıq.

Canary

Hissə-hissə yuvarlayın: əvvəlcə kiçik% trafik (məsələn, 1-5%), metrik/SLO müşahidə edin, sonra payı addım-addım artırın (10% → 25% → 50% → 100%). Deqradasiya zamanı - əvvəlki sabit addımda geri çəkilmə və ya dayanma.

3) Hansı yanaşma daha yaxşıdır

Blue-Green - seçin, əgər:
  • Çətin manevrlər olmadan dərhal geri dönüş lazımdır.
  • Memarlıq/büdcə ikili infrastruktur təkrarlanmasına imkan verir.
  • Biz geniş miqyaslı miqrasiya və ya platforma yeniləmələri (OS/JDK/rantaym) təcrid etmək istəyirik.
  • Əlavə/birləşmə hovuzları tədricən «qarışıq» vəziyyətə həssasdır.
Canary - seçin, əgər:
  • blast radius minimuma endirmək və istifadəçilərin payına davranış görmək lazımdır.
  • Yüksək buraxılış tezliyi, norma kimi mütərəqqi çatdırılma.
  • Yetkin müşahidə və avtomatik geytlar (error budget, latency, conversion) var.
  • Məhsul qrupu hipotezləri yoxlamaq istəyir: dönüşüm, saxlama, LTV və s.

4) Uğurlu buraxılışın ümumi prinsipləri

İdempotent tarixi artefaktlar: bütün mərhələlərdə eyni şəkil/paket.
Determinik konfiqurasiya: bir kod kimi, mühitin müqayisəsi.
Müşahidə by design: log, metrika, izləmə, həyəcan; SLI/SLO əvvəlcədən.
Sürətli, avtomatlaşdırılmış geri qaytarma: düymə/geri qaytarma əmri əl sehri deyil, paylaynın bir hissəsidir.
Uyğun sxem dəyişiklikləri: expand-migrate-contract strategiyası (bax § 10).
L7 səviyyəsində marşrutlaşdırma (arzu olunur): başlıqlar/çerezlər/yollar/API versiyaları üzrə çeviklik.

5) Blue-Green: memarlıq və proses

5. 1 Topologiya

İki prod yığın: Blue (aktiv) və Green (namizəd).
Ümumi xarici asılılıqlar: CDN, xarici API, növbələr; BD - xüsusi hal (bax § 10).
Keçid nöqtəsi: Balans/Ingress/Gateway.

5. 2 Addım Flow

1. Green 'i yeni bir artefakt (vNext) altında qaldırırıq, smoking testləri aparırıq.
2. Green (e2e, müqavilə, reqressiya) qarşı avtostest qaçış.
3. Cache/seansları (mümkünsə) isidirik, fon joblarını/növbələrini sinxronlaşdırırıq.
4. Trafikin Green-ə keçməsi: atom flip (DNS TTL aşağı, Route/Listener swap, Ingress weight = 100%).
5. SLO-nu ilk dəqiqələrdə/saatlarda müşahidə edirik (golden signals: latency, errors, saturation + business metrics).
6. Problemlərdə - Mavi (flip back) üçün dərhal geri dönüş.

5. 3 Müsbət/mənfi cəhətləri

Üstünlüklər: ani geri dönüş, sadə zehni model, təmiz izolyasiya.
Dezavantajları: infrastrukturun ikiqat artması, stateful komponentləri və məlumat miqrasiyaları ilə çətinlik.

6) Canary: memarlıq və proses

6. 1 Topologiya

Vahid prod-klaster; xidmətin bir neçə versiyası (stable və canary) bir cəbhədə.
Trafik tərəziyə (1-5-10-25-50-100%) və ya hədəflərə (başlıq/kuke/ID) bölünür.

6. 2 Addım Flow

1. Eyni/ASG/NSG klasterinə canary-versiyası.
2. Trafik hissəsinin marşrutlanması (məsələn, 1-5%) canary.
3. Avtomatik SLI/SLO və biznes metrik yoxlamalar; CI/CD geytaları (error rate, p95 latency, CPU/RES, dönüşüm, uğursuzluq/geri qaytarma).
4. Gates keçərkən trafik payının addım-addım artması.
5. 100% -ə qədər tam rollout və köhnə versiyanın deaktivasiyası; deqradasiya zamanı - avto-rollback.

6. 3 Müsbət/mənfi cəhətləri

Faydaları: əksər istifadəçilər üçün minimum risk, data-driven həll.
Mənfi cəhətləri: yetkin müşahidə, səriştəli marşrutlaşdırma, instantsiyalar arasında «version skew» riski lazımdır.

7) Trafik marşrutu

L4 səviyyəsi: IP/port balansı; sadə, lakin az çeviklik.
L7 səviyyəsi: HTTP/S qaydaları - yol, host, başlıq, cookie, User-Agent, GeoIP, SNI.

Texnikalar:
  • Weighted routing (çəkisi 1-100%).
  • Header-based/Cookie-based (qrupda istifadəçi fiksasiyası).
  • Session stickiness (stateful/cached ssenarilər üçün vacibdir).
  • Shadow/Traffic mirroring (yeni versiyada sorğuları əks etdiririk).

8) Alətlər və tətbiqlər (nümunələr)

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 platformaları: Spinnaker, Argo CD, GitHub Actions + Progressive Delivery plugins, GitLab/CD.

💡 Bir prinsipi: versiya - kod, trafik - siyasət, təşviq - SLO avtomatlaşdırılmış geytalar.

9) Müşahidə, SLI/SLO və geytalar

Golden signals: Latency (p95/p99), Error rate (5xx/4xx по типам), RPS, Saturation (CPU/Memory/GC), Queue lag.
Biznes metrikası: konvertasiya, avtorizasiya, ödənişlər/uğurlar, orta çek, huni addımlarından imtina.

Geytlər:
  • Səhv həddi (məsələn, error rate canary ≤ baseline + X%).
  • Gecikmə p95 Δ-dən daha pis deyil.
  • Biznes həddi (məsələn, dönüşümün azalması
  • SLO-da Error budget sürətlə yanmamalıdır.

Addım müddəti: statistik əhəmiyyət üçün kifayət qədər minimum vaxt (trafikdən asılıdır).

10) DB miqrasiyası və sxemlərin uyğunluğu

Əsas qayda: versiyalar geri və irəli uyğun olduqda buraxılışlar təhlükəsizdir.

expand-migrate-contract strategiyası:

1. Expand: köhnə versiyanı qırmadan yeni sütunlar/indekslər/cədvəllər əlavə edin.

2. Deploy app vNext (oxuyur/yeni sxemdə yazır, lakin köhnə ilə işləməyi bilir).

3. Migrate data (background/batch, idempotent, yoxlama nöqtələri ilə).

4. Contract: sabitləşmədən sonra köhnə sahələri/fiqurları silmək.

Anti-nümunələr: Blue-Green keçid anında eksklüziv kilidləmə tələb edən miqrasiyalar; sxemdən uzaqlaşmağın mümkünsüzlüyü; duplikasiya olmadan «ikiqat qeyd».

11) Geri çəkilmə (rollback) və qəza planları

Blue-Green: Blue ani flip; Green fon joblarının «quyruqlarını» izləyirik.
Canary: çəkinin geri çəkilməsi (məsələn, 25% geri 5% və ya 0%); alert avtomatik abort.
Məlumatlar: düşünülmüş təkrarlama/kompensasiya siyasəti (idempotency keys, «inbox/outbox» pattern, mesajların təkrarlanması).
Ficheflags: qismən haddelenmiş imkanları söndürmək üçün sürətli kill switch.

12) Steyt və sessiyalarla işləmək

Kanaryalar üçün Sticky sessions, və ya xarici seansları saxlamaq (Redis/Memcached), belə ki, versiyalar dəyişdirilə bilər.
Cache əvvəlcədən qızdırmaq (Green warm-up) və flip invalidation nəzərə.
Fon işçiləri: versiyalar arasında «yarış» - növbələrin bölünməsi və ya versiyaya görə «liderlik» etməyin.

13) Təhlükəsizlik və uyğunluq

Green/Canary-ə giriş - Zero Trust ilə: xidmət hesabları, minimum lazımi rollar.
Sirlər və açarlar - KMS/Secrets Manager vasitəsilə; rotasiya daxil edin.
Trafik - yalnız TLS; endpoint 'lərin versiyaları aydın şəkildə qeyd edilmişdir; marşrutlaşdırma və buraxılış hərəkətlərinin auditi.

14) Qiymət və performans

Blue-Green infrastrukturu ikiqat artırır (buraxılış zamanı və ya daimi) - büdcə qoyun.
Canary daha qənaətlidir, lakin avtomatlaşdırma üçün müşahidə və mühəndislik vaxtı alətləri tələb edir.
Optimizasiya: avtoskeylinq, ephemeral mühit, paralel varlıq versiyalarının pəncərəsinin qısaldılması.

15) Çek vərəqləri

Buraxılışdan əvvəl

  • Şəkil/bild bir mənbədən tanıtılır, imzalar yoxlanılır.
  • Test planı, risklər və SLO geytləri konfiqurasiya edilmişdir.
  • DB miqrasiyası - expand rejimində, downgrade planları mövcuddur.
  • Geri çəkilmə planı - staging/production-like-də yoxlanılır.

Buraxılış zamanı

  • Metrik və log baseline ilə müqayisə olunur.
  • Canary üçün - addımlar və eşiklər sabit; Blue-Green üçün - flip-back hazırlığı.
  • On-call komandaları geribildirim pəncərəsi var.

Buraxıldıqdan sonra

  • SLO batmadı, error budget normal.
  • Post-reliz miqrasiya/təmizləmə tamamlandı.
  • Retrospektiv və playbook yeniləmə.

16) Tez-tez səhvlər və anti-nümunələr

Metrsiz geri çəkilmə: məlumat yoxdur - idarə edilə bilən həll yoxdur.
Uyğun olmayan DD sxemlərinin qarışdırılması, aşağı düşmə strategiyasının olmaması.
Təsadüfi trafik qarışdırma: heç bir stickiness, istifadəçilər versiyaları arasında «atlama».
Gizli stateful asılılığı (yerli disklər, in-memory caches).
Uzun DNS-TTL sürətli flip (Blue-Green) mane olur.
Avtoqeytlərin olmaması: əl «göz» həlləri yavaşlayır və riskləri artırır.

17) Kombinə yanaşmalar

Blue-Green + Canary: əvvəlcə Green-i yuvarlayın, sonra ayrı-ayrı xidmətlər üçün Green-də Canary-i yuvarlayın.
Shadow/miqrasiya trafiki: Canary-dən əvvəl güzgü trafikini yeni versiyaya sürün.
Feature flags (progressive delivery): funksionallıq seqmentlər üzrə «qaranlıq» bayraqlarla sabit versiyanın üstündə açılır.

18) Ssenari nümunələri (eskizlər)

Blue-Green (web+api):

1. Yeni Listener/Ingress üçün Green (v2).

2. Cache qızdırmaq, readonly-yoxlamalar, smoke.

3. Çəkini Green = 100% -ə keçirin.

4. SLO 30-60 dəqiqə müşahidə; hər şey yaxşıdırsa, Blue-ni söndürün.

Canary (mikroservis ödəniş):

1. Deploy canary vNext (5% replikalar).

2. Daxili hesablar/test seqmenti üçün 5% trafik daxildir.

3. Avtoqeyt: error rate ≤ baseline + 0. 3%, p95 ≤ +20ms.

4. 10% → 25% → 50% -ni hər N dəqiqədə qaldırın.

5. Bütün seqmentlər üzrə 100% ficheflag köçürürük; köhnə versiyasını silirik.

19) Müxtəlif arxitekturalar üçün variasiyalar

Monolit: Blue-Green daha asan, Canary bölünməzlik üzündən daha çətindir; ficheflags istifadə edin.
Mikroservislər: Canary təbiidir; xidmətlərarası müqavilələrə (consumer-driven contracts) nəzarət edin.
Stateful Services: diqqətlə hazırlanmış miqrasiya və stickiness ilə Blue-Green üstünlük.

20) Qısa müqayisə (xülasə)

Geri dönüş sürəti: Blue-Green = anında; Canary = sürətli, lakin geri çəkilmə.
Infrastruktur dəyəri: Blue-Green ↑; Canary ↔︎/↓.
İstifadəçilər üçün risk: Canary aşağıda (pay nəzarət).
Tətbiqi çətinlik: Blue-Green başlamaq daha asandır; Canary güclü müşahidə və avtomatlaşdırma tələb edir.
Verilənlərin/sxemlərin uyğunluğu: hər ikisi üçün kritik; expand-migrate-contract planlaşdırın.

21) Yekun

Blue-Green və Canary qarşılıqlı istisna strategiyaları deyil, mütərəqqi çatdırılma elementləridir. Seçim dəyər məhdudiyyətləri, müşahidə yetkinliyi və dəyişikliklərin xarakterindən asılıdır. Yanaşmadan asılı olmayaraq, sabit buraxılış dörd dayaqda saxlanılır: avtomatlaşdırma, müşahidə, əks uyğunluq və sürətli geri dönüş.

Contact

Bizimlə əlaqə

Hər hansı sualınız və ya dəstək ehtiyacınız varsa — bizimlə əlaqə saxlayın.Həmişə köməyə hazırıq!

Telegram
@Gamble_GC
İnteqrasiyaya başla

Email — məcburidir. Telegram və ya WhatsApp — istəyə bağlıdır.

Adınız istəyə bağlı
Email istəyə bağlı
Mövzu istəyə bağlı
Mesaj istəyə bağlı
Telegram istəyə bağlı
@
Əgər Telegram daxil etsəniz — Email ilə yanaşı orada da cavab verəcəyik.
WhatsApp istəyə bağlı
Format: ölkə kodu + nömrə (məsələn, +994XXXXXXXXX).

Düyməyə basmaqla məlumatların işlənməsinə razılıq vermiş olursunuz.