Sobes.tech
Middle+

Kanar balığı yerləşdirmələri nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Kanar yerləşdirmə, yeni funksionallığın buraxılması üçün strategiyadır, burada yeniləmə yavaş-yavaş istifadəçilərin kiçik bir hissəsinə təqdim olunur və problem yoxdursa, bütün auditoriyaya yayılır.

Əsas mərhələlər:

  1. Kanar qrupunun yerləşdirilməsi: Yeni tətbiq versiyası kiçik bir server və ya istifadəçi alt qrupuna yerləşdirilir.
  2. İzləmə: Kanar qrupu üçün metriklərin (səhvlər, performans, istifadəçi davranışı) diqqətlə izlənməsi.
  3. Genişləndirmə və ya geri çəkilmə:
    • Əgər izləmə uğurlu göstərərsə, yerləşdirmə mərhələli şəkildə daha böyük istifadəçi qrupuna genişləndirilir.
    • Problemlər aşkar edilərsə, yerləşdirmə kanar qrupu üçün geri çəkilir və əsas istifadəçilər qorunur.

Üstünlüklər:

  • Risklərin azaldılması: Problemlər kiçik istifadəçi qrupunu təsir edir.
  • Tez geri çəkilmə: Əvvəlki versiyaya asanlıqla qayıtmaq mümkündür.
  • Həqiqi şəraitdə test: Yeni funksionallığın real yük altında davranışını qiymətləndirmək.

Çətinliklər:

  • İnfrastrukturun mürəkkəbliyi: Eyni zamanda bir neçə versiyanın dəstəklənməsi tələb olunur.
  • Trafik idarəetməsi: Trafiki müxtəlif versiyalara yönəltmək üçün mexanizmlər lazımdır.
  • Məlumatların analizi: Effektiv məlumat toplama və analizi tələb olunur.

Kubernetes-də tətbiq nümunəsi:

// v1 üçün yerləşdirmə
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app-v1
spec:
  replicas: 10 // Əsas say
  selector:
    matchLabels:
      app: my-app
      version: v1
  template:
    metadata:
      labels:
        app: my-app
        version: v1
    spec:
      containers:
      - name: my-app
        image: my-registry/my-app:v1

---

// kanar v2 üçün yerləşdirmə
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app-v2-canary
spec:
  replicas: 1 // Kanar qrupu
  selector:
    matchLabels:
      app: my-app
      version: v2
  template:
    metadata:
      labels:
        app: my-app
        version: v2
    spec:
      containers:
      - name: my-app
        image: my-registry/my-app:v2

---

// Trafiki yönəltmək üçün xidmət (seçicilərdən istifadə etməklə)
apiVersion: v1
kind: Service
metadata:
  name: my-app-service
spec:
  selector:
    app: my-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080

v1v2 arasında trafiki idarə etmək üçün, Nginx Ingress, Istio kimi, çəkili trafikin paylanmasını dəstəkləyən Ingress kontrolörləri istifadə olunur.