Scaling — tizim resurslari yoki arxitekturasini talab o‘zgarishiga moslashtirib, ko‘proq foydalanuvchi, so‘rov, data yoki hisoblash yukini ko‘tara olish jarayoni. U faqat server sonini oshirish emas; bottleneckni o‘lchash, state boshqaruvi, database, cache, queue va operatsion cheklovlarni birgalikda ko‘rib chiqadi. Scaling throughput, latency, mavjudlik va xarajat orasidagi muvozanatga ega.
Vertical scaling
Vertical scaling mavjud tugunga ko‘proq CPU, RAM, disk IOPS yoki tarmoq quvvati berishdir. U dastur kodini katta o‘zgartirmasdan tez natija berishi mumkin. Database serverni kuchaytirish connection va working set uchun foydali. Biroq apparatning maksimal chegarasi, katta instance narxi va maintenance paytidagi yagona tugun xavfi mavjud.
Scale up odatda resurs qo‘shish, scale down kamaytirishni anglatadi. Ba’zi platformalarda instance turini o‘zgartirish restart talab qiladi. Memory ko‘paygani bilan single-thread CPU bottleneck hal bo‘lmasligi mumkin; qaysi resurs cheklayotgani profiling bilan aniqlanadi.
Horizontal scaling
Horizontal scaling ko‘proq xizmat nusxasi qo‘shishdir. Load balancer so‘rovlarni nusxalarga taqsimlaydi. Stateless backend istalgan nusxada requestni bajarishi mumkin. Session lokal xotirada bo‘lsa sticky routing yoki umumiy Redis/database session store talab qilinadi. Fayl upload lokal diskda qolsa boshqa nusxa uni ko‘rmaydi; object storage yoki shared storage ishlatiladi.
Scale out yangi nusxa qo‘shish, scale in olib tashlashdir. Scale in oldidan readiness false qilinib, traffic drain va background job tugashi kutiladi. Birdan processni o‘chirish yarim bajarilgan request, queue message yoki uploadni buzishi mumkin.
Autoscaling
Autoscaler CPU, memory, request rate, queue depth yoki custom metricga qarab desired replica sonini o‘zgartiradi. CPU reactive signal bo‘lib, traffic spike’dan keyin ko‘tariladi. Request rate va queue backlog oldindan capacity modeliga yaxshiroq bog‘lanishi mumkin. Bitta global o‘rtacha qiymat ayrim hot shard yoki instance saturationini yashiradi.
Cooldown va stabilization window tez scale up/down tebranishini kamaytiradi. Startup uzoq bo‘lsa, yangi nusxalar tayyor bo‘lguncha mavjudlari ortiqcha yuklanadi. Minimum replica bazaviy mavjudlikni, maximum esa xarajat va downstream capacityni cheklaydi. Autoscaling cheksiz emas: database connection limiti yangi app nusxalari bilan tugashi mumkin.
Database scaling
Read replica o‘qish yukini bo‘ladi, ammo replication lag sabab yangi yozuv darhol ko‘rinmasligi mumkin. Read-after-write talab qiladigan so‘rov primaryga yo‘naltiriladi yoki lag hisobga olinadi. Connection pooler ko‘p app processning database connectionini boshqaradi.
Sharding ma’lumotni shard key bo‘yicha mustaqil database’larga ajratadi. Noto‘g‘ri key bitta hot shard yaratadi. Cross-shard transaction, join va rebalancing murakkablashadi. Index, query plan va schema optimizatsiyasi bajarilmasdan sharding qilish operatsion murakkablikni erta oshiradi.
Asinxron ishlov
Uzoq vazifa request ichida bajarilmasdan queue va workerga uzatiladi. Workerlar queue depthga qarab scale qilinadi. Message kamida bir marta yetkazilsa, handler idempotent bo‘lishi kerak. Backpressure producer tezligi consumer capacitydan oshganda queue cheksiz o‘sishini cheklaydi.
Batching bir nechta kichik amalni bir request yoki database transactionga birlashtirib overheadni kamaytiradi. Biroq juda katta batch latency va retry xarajatini oshiradi. Streaming katta data’ni to‘liq memoryga yuklamasdan qayta ishlaydi.
O‘lchash va capacity
Throughput sekunddagi so‘rov yoki ish, latency esa bitta amal vaqti. Little’s Law barqaror tizimda concurrency taxminan throughput va o‘rtacha latency ko‘paytmasiga tengligini ko‘rsatadi. P95/P99 latency tail holatni, saturation queue va resurs limitini ko‘rsatadi.
Load test productionga o‘xshash data, cache hit rate va dependency bilan bajariladi. Faqat “server 10 ming request ko‘tardi” natijasi response correctness va latency SLO’siz yetarli emas. Capacity reja traffic o‘sishi, failure paytidagi qolgan tugunlar va deploy vaqtida qo‘shimcha nusxa uchun headroom saqlaydi.
Bog‘liq tushunchalar
Horizontal scaling, Vertical scaling, Autoscaling, Load balancing, Sharding, Read replica, Backpressure