Bosh sahifa Wiki Auto scaling

Auto scaling

Auto scaling — tizim yuk, jadval yoki boshqa signalga qarab hisoblash resurslari soni yoki quvvatini avtomatik o‘zgartirish mexanizmi. U trafik oshganda capacity qo‘shib xizmat darajasini saqlashga, yuk kamayganda esa bo‘sh resursni qisqartirishga xizmat qiladi. Auto scaling noto‘g‘ri kodni tuzatmaydi va downstream limitdan cheksiz capacity yaratmaydi.

Gorizontal va vertikal scaling

Horizontal scaling instance, pod yoki worker sonini ko‘paytiradi. Stateless xizmatlar load balancer ortida bu usulga qulay. Vertical scaling mavjud instance’ning CPU yoki memory’sini o‘zgartiradi; stateful database yoki bitta jarayon uchun foydali, ammo resize restart talab qilishi va hardware chegarasiga borishi mumkin.

Cluster autoscaling node sonini, workload autoscaling esa pod yoki task sonini boshqaradi. Pod ko‘payib, joylashtirishga node yetmasa cluster scaler node qo‘shadi. Ikki controller vaqt shkalasi va limitlari mos bo‘lmasa pending pod yoki keraksiz node hosil bo‘ladi.

Scaling signallari

CPU utilization keng tarqalgan, lekin har workloadni to‘g‘ri ifodalamaydi. I/O kutayotgan service CPU past bo‘lsa ham sekinlashadi. Queue worker uchun backlog va oldest-message age, web xizmat uchun concurrency yoki request rate, streaming consumer uchun lag foydaliroq signal bo‘lishi mumkin.

Signal Mos workload
CPU utilization Hisoblashga bog‘liq service
Request concurrency Web/API server
Queue depth yoki age Asinxron worker
Consumer lag Event stream processor
Jadval Oldindan ma’lum davriy peak

Application latency bevosita maqsadga yaqin, ammo u load, dependency va xatoning umumiy natijasidir. Faqat latencyga qarab scale qilish dependency ishlamayotganda keraksiz instance ko‘paytirishi mumkin.

Target tracking va step policy

Target tracking tanlangan metricni, masalan CPU 60% atrofida ushlab turishga intiladi. Step scaling threshold qanchalik oshganiga qarab ma’lum miqdorda resurs qo‘shadi. Predictive scaling tarixiy pattern orqali capacity’ni peakdan oldin tayyorlaydi; noodatiy hodisani aniq bashorat qilishga kafolat bermaydi.

Minimum capacity cold start va bazaviy trafikni qoplaydi. Maximum capacity xarajatni hamda database kabi dependency’ga bosimni cheklaydi. Maximumga yetib saturation davom etsa alert beriladi; aks holda scaler “ishlayapti” ko‘rinsa ham xizmat degradatsiyasi yashirin qoladi.

Kechikish va barqarorlik

Yangi instance image yuklash, startup va cache warm-up sabab bir necha soniya yoki daqiqa talab qilishi mumkin. Signal faqat saturationdan keyin ishlasa capacity kech keladi. Headroom, predictive policy yoki tezroq warm pool bu bo‘shliqni kamaytiradi.

Metric threshold atrofida tebransa instance soni tez-tez o‘zgarishi mumkin. Cooldown, stabilization window va scale-in uchun ehtiyotkor threshold flapping’ni cheklaydi. Scale-out odatda tez, scale-in esa sekinroq qilinadi, chunki ortiqcha capacity qisqa muddat xavfsizroq.

State va scale-in

Instance o‘chirilishidan oldin load balancer’dan chiqariladi va faol requestlarni tugatish uchun draining vaqti beriladi. Queue worker lease qilingan xabarni yakunlaydi yoki visibility timeout orqali qaytaradi. Stateful pod volume va identity bilan bog‘liq bo‘lgani uchun uni o‘chirish tartibi alohida.

Session lokal xotirada bo‘lsa yangi instance foydalanuvchi holatini ko‘rmaydi. External session store, stateless token yoki sticky session ishlatilishi mumkin; sticky session load notekisligi va failover muammosini keltiradi.

Xarajat va xavfsizlik

Metric xatosi yoki zararli trafik juda ko‘p resurs yaratishi mumkin. Budget alert, quota va maximum limit moliyaviy blast radius’ni kamaytiradi. Scale-out DDoS himoyasi emas: legitimate va zararli so‘rovni ajratish uchun rate limit, WAF va upstream filtering kerak.

Autoscaling sinovi sun’iy yuk bilan instance qo‘shish, readiness, trafik qabul qilish va keyin xavfsiz scale-in’ni tekshiradi. Dashboard metric, desired capacity, actual ready capacity, pending ish va throttling’ni bir vaqtda ko‘rsatadi.

Bog‘liq tushunchalar

Horizontal scaling, Vertical scaling, Load balancing, Capacity planning, Cold start, Queue depth, Kubernetes autoscaler