Middle+
Ի՞նչ են կանարային տեղադրումները։
sobes.tech AI
Պատասխան AI-ից
Կանարե տարածումը՝ դա նոր ֆունկցիոնալության թողարկման ռազմավարություն է, որի ժամանակ թարմացումը աստիճանաբար տարածվում է փոքր խմբի օգտվողների վրա, իսկ եթե խնդիրներ չկան, ապա տարածվում է ամբողջ լսարանի վրա:
Հիմնական փուլերը՝
- Կանարե խմբի տեղադրում: Նոր հավելվածի տարբերակը տեղադրվում է փոքր մասով սերվերների կամ օգտվողների վրա:
- Հսկողություն: Կատարվում է մանրակրկիտ մոնիտորինգ մետրիկների (գործողություններ, կատարողականություն, օգտվողների վարքագիծ) համար:
- Եզրակացություն կամ հետքաշում:
- Եթե մոնիտորինգը ցույց է տալիս հաջողություն, ապա տեղադրումը աստիճանաբար ընդլայնվում է ավելի մեծ խմբի օգտվողների վրա:
- Եթե խնդիրներ հայտնաբերվեն, տեղադրումը հետքաշվում է, պաշտպանելով հիմնական զանգվածը:
Առավելություններ՝
- Ռիսկերի նվազեցում: Խնդիրները ազդում են փոքր խմբի վրա:
- Արագ հետքաշում: Հեշտ է վերադառնալ նախորդ տարբերակին:
- Թեստավորում իրական պայմաններում: Նոր ֆունկցիոնալության վարքագծի գնահատում իրական բեռնում:
Անբավարարություններ՝
- Ինֆրակառուցվածքի բարդություն: Պահանջվում է միաժամանակ մի քանի տարբերակների աջակցում:
- Տրաֆիկի կառավարում: Պետք է մեխանիզմներ՝ տրաֆիկը տարբեր տարբերակների միջև ուղղելու համար:
- Տվյալների վերլուծություն: Պահանջվում է արդյունավետ հավաքում և վերլուծություն:
Կիրառական օրինակ՝ 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)՝ հնարավորությամբ տրաֆիկի ծանրաբեռնվածության հաշվեկշռման։