Sobes.tech
Middle+

რა არის კარნეირის განთავსებები?

sobes.tech AI

პასუხი AI-სგან

კანარეე განთავსება — ეს ახალი ფუნქციონალის გამოშვების სტრატეგიაა, რომლის დროსაც განახლება ეტაპობრივად გავრცელდება მცირე რაოდენობის მომხმარებლებზე, ხოლო თუ პრობლემები არ გამოვლენ, გავრცელდება მთელ აუდიტორიაზე.

ძირითადი ეტაპები:

  1. კანარეე ჯგუფის განთავსება: ახალი ვერსია განთავსდება მცირე რაოდენობის სერვერებზე ან მომხმარებლებზე.
  2. მონიტორინგი: მიმდინარეობს დეტალური მონიტორინგი მეტრიკებზე (შეცდომები, შესრულება, მომხმარებლის ქცევა) კანარეე ჯგუფისთვის.
  3. გაფართოება ან უკუგდება:
    • თუ მონიტორინგი აჩვენებს წარმატებას, განთავსება ეტაპობრივად გაფართოვდება უფრო დიდ ჯგუფზე.
    • პრობლემების აღმოჩენის შემთხვევაში, განთავსება უკუგდება კანარეე ჯგუფისთვის, იცავს ძირითად მასას.

უპირატესობები:

  • რისკების მინიმიზაცია: პრობლემები ზემოქმედებს მცირე ჯგუფზე.
  • სწრაფი უკუგდება: ადვილია წინა ვერსიაზე დაბრუნება.
  • ტესტირება რეალურ პირობებში: ახალი ფუნქციონალის ქცევის შეფასება რეალურ დატვირთვაზე.

მოხერხებულობები:

  • ინფრასტრუქტურის სირთულე: საჭიროა რამდენიმე ვერსიის ერთდროული მხარდაჭერა.
  • ტრაფიკის მართვა: საჭიროა მექანიზმები ტრაფიკის მიმართულებისთვის სხვადასხვა ვერსიებზე.
  • მეტრიკების ანალიზი: ეფექტიანი შეგროვება და ანალიზი.

კუბერნეტესში განთავსების მაგალითი:

// 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

---

// კანარეე 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) გამოყენებით, რომლებიც უზრუნველყოფენ წონასწორობას და ტრაფიკის განაწილებას.