Sobes.tech
Middle+

Ի՞նչ են կանարային տեղադրումները։

sobes.tech AI

Պատասխան AI-ից

Կանարե տարածումը՝ դա նոր ֆունկցիոնալության թողարկման ռազմավարություն է, որի ժամանակ թարմացումը աստիճանաբար տարածվում է փոքր խմբի օգտվողների վրա, իսկ եթե խնդիրներ չկան, ապա տարածվում է ամբողջ լսարանի վրա:

Հիմնական փուլերը՝

  1. Կանարե խմբի տեղադրում: Նոր հավելվածի տարբերակը տեղադրվում է փոքր մասով սերվերների կամ օգտվողների վրա:
  2. Հսկողություն: Կատարվում է մանրակրկիտ մոնիտորինգ մետրիկների (գործողություններ, կատարողականություն, օգտվողների վարքագիծ) համար:
  3. Եզրակացություն կամ հետքաշում:
    • Եթե մոնիտորինգը ցույց է տալիս հաջողություն, ապա տեղադրումը աստիճանաբար ընդլայնվում է ավելի մեծ խմբի օգտվողների վրա:
    • Եթե խնդիրներ հայտնաբերվեն, տեղադրումը հետքաշվում է, պաշտպանելով հիմնական զանգվածը:

Առավելություններ՝

  • Ռիսկերի նվազեցում: Խնդիրները ազդում են փոքր խմբի վրա:
  • Արագ հետքաշում: Հեշտ է վերադառնալ նախորդ տարբերակին:
  • Թեստավորում իրական պայմաններում: Նոր ֆունկցիոնալության վարքագծի գնահատում իրական բեռնում:

Անբավարարություններ՝

  • Ինֆրակառուցվածքի բարդություն: Պահանջվում է միաժամանակ մի քանի տարբերակների աջակցում:
  • Տրաֆիկի կառավարում: Պետք է մեխանիզմներ՝ տրաֆիկը տարբեր տարբերակների միջև ուղղելու համար:
  • Տվյալների վերլուծություն: Պահանջվում է արդյունավետ հավաքում և վերլուծություն:

Կիրառական օրինակ՝ Kubernetes-ում:

// v1-ի համար տեղադրում
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app-v1
spec:
  replicas: 10 // հիմնական քանակ
  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

---

// Canary v2-ի համար տեղադրում
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app-v2-canary
spec:
  replicas: 1 // Կանարե խմբի համար
  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

---

// Ծառայություն՝ տրաֆիկի ուղղման համար (սելեկտորների միջոցով)
apiVersion: v1
kind: Service
metadata:
  name: my-app-service
spec:
  selector:
    app: my-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080

Տրաֆիկի բաշխումը v1 և v2 միջև կառավարելու համար օգտագործվում են Ingress-կոնտրոլեր (օրինակ, Nginx Ingress, Istio)՝ հնարավորությամբ տրաֆիկի ծանրաբեռնվածության հաշվեկշռման։