Application: nol(0)dan million(10⁶)gacha foydalanuvchilar uchun(1-qism)
Horizontal scaling va Vertical scaling
Scaling(masshtablilik) nima?
Service larning kengayishi bu
web-service larning ichki server resuslari unumdorligini oshirish yoki serverlar sonini ko’paytirsh orqali o’z faoliyatini oshirish qobilyatidir.
Masalan, sizning veb-ilovangiz yoki veb-saytingiz bor va sizning marketing bo’limingiz ko’p sonli foydalanuvchilarni jalb qilish uchun turli xil reklamalar berdi. Ammo ba’zi foydalanuvchilar veb-saytga kira olmaydi, server shunchalik ko’p foydalanuvchi so’rovlarini bajara olmaydi. Natijada, foydalanuvchilar salbiy fikrga ega bo’ladi. Bu esa siz uchun muammoga aylanishi mumkin. Shunday qilib, siz saytingiz turgan serverni ishlashini yaxshilashingiz kerakligini tushunasiz. Veb-saytga hech qanday asosiy o’zgartirishlarsiz ushbu unumdorlikni oshirish qobiliyati — bu
scalability deyiladi.
Bu qachon kerak bo’ladi?
Dastur yoki web-sayt ishlayotgan serverni resurslarini oshirish yaʼni protsessor, tezkor xotira(
RAM — dasturchilar tili bilan aytganda, operativka) yoki bir nechta serverlardan foydalanish orqali unumdorlikni oshirish mumkin bo’ladi. Lekin bu qo’shimchalar mablag’ va vaqt talab qiladi. Ammo bu o’zgarishlarni qilganingizdan keyin ham ishlash tezligi sezilarli darajada o’zgarmasligi mumkin bu holatda application kodlarini ko’rib chiqishingiz kerak bo’ladi. Noto’g’ri yozilgan kod so’rovlarni kechikishiga sabab bo’lishi mumkin.
Test database
Eng keng tarqalgan sabablardan biri ma’lumotlar bazasining noto’g’ri ishlashidir. Yetarli boʻlmagan miqdordagi data(ma’lumotlar) bilan ishlaganda, xatoli holatlar ko’pincha e’tibordan chetda qoladi, lekin yetarlicha koʻp miqdordagi datalarda muammo aniq koʻrinadi. Shuning uchun, ma’lumotlar bazasiga alohida e’tibor berish kerak. Chunki u bilan bog’liq muammolar boshqa muammolarga olib keladi, masalan, protsessorning keraksiz yuklanishi(protsessorga nagruzka tushishi), xotira(RAM)ning to’lib ketishi va hokazo. Yoki muammo ma’lumotlar bazasi serverining standart sozlamalarida bo’lishi mumkin. Bunday holda, siz faqat bir marta vaqt ajratishingiz va sozlamalarni qo’lda optimallashtirishingiz yoki buni avtomatik ravishda bajaradigan yordamchi dasturlardan foydalanishingiz kerak.
Yana bir keng tarqalgan holatlardan biri bu ma’lumotlar bazasi noto’g’ri tashkil etilganligidir. Shu sababli koʻp hollarda so’rov(query)larni qayta ishlash va maʼlumotlarni qaytarish(fetching) uzoq vaqt talab qiladi. Databasega bogʻliq yana bir holat bu ba’zi jadvallarda juda ko’p turli ma’lumotlar mavjudligi yoki ma’lumotlar indekslanmaganligidir.
Database va kodlardagi muammolar bartaraf etilgandan keyin ham yuklama(nagruzka)ni koʻtarishda muammolar boʻlsa yoki database va kodlarda maummolar bo’lmasa, u holda
masshtablash(scaling)dan foydalaniladi.
Masshtablashni kengaytirish ikki turga bo’linadi bular:
Horizontal scaling va vertical scaling.
- Vertical scaling mavjud server resurslari(CPU/RAM/DISK)ni upgrade qilish(kuchaytirish) kiradi. Odatda, mavjud tizim yuklanish muammolarini bartaraf eta olmasa va bu muammolarni resurs qo’shish orqali hal qilinsa, bu jarayon vertical scaling deyiladi. Vertical scaling oson va arzon jarayon bo’lib dastalab yuklanish muammosi shu yo’l bilan hal qilinadi. Shuning uchun kichik kompaniyalar uchun vertical scaling yaxshi tanlov hisoblanadi.
Vertikal masshtablashning afzalliklari
- Web-service kodini kichik oʻzgarish orqali yoki umuman o’zgartirmasdan turib performance ni oshirishingiz mumkin.
- Muayyan texnologiyalar to’plamidan foydalanishga imkon beradi.
Vertikal masshtablashning kamchiliklari
- Uning cheklovlari bor. Albatta, siz kompyuteringizning ish faoliyatini cheksiz ravishda oshira olmaysiz. Operatsion tizim siz foydalanishingiz mumkin bo’lgan komponentlar sonini cheklaydi.
- Favqulodda vaziyatda to’liq xizmat to’xtaydi. Hamma narsa bitta mashinada ishlaganligi sababli, har qanday o’zgarishlar tizimni qayta ishga tushirishni talab qiladi va har qanday nosozliklar xizmatni bir muddat ishlashini toʻxtatadi.
Bir so’z bilan aytadigan bo’lsak, vertical scaling server resurslarini kattalashtirsh hisoblanadi.
Vertical scaling ni kamchilik tarafi yagona server bo’lganligi uchun server o’chsa, undagi barcha tizimlar o’chadi va bu juda yomon holat hisoblanadi.
2. Horizontal Scaling
Mavjud tizimdagi yuqori yuklanishlar talabini qondirish uchun yangi serverlar qo’shish jarayoni. Mavjud tizim yuqori yuklanishlarni qondira olmasa(ko’tara olmasa) kutilgan natijaga resurlar qo’shish(vertical scaling) orqali erisha olinmasa, biz butunlay yangi server qo’shishimiz kerak bo’ladi. Bu jarayon horizontal scaling deb ataladi. Horizontal scaling bizning mavjud serverimizga qo’shimcha mashinalar qo’shish g’oyasidir. Horizontal scaling — tizim logikasini bir qismini o’z ichiga olgan ma’lumotlarni qismlarga ajratishga asoslanadi. Misol uchun turli xil database (Oracle, mongoDB, PostgreSql va h.k.)lardan foydalanish. Vertical scaling holatida esa barcha ma’lumotlar (app, database, gateway va h.k.lar) bitta serverda turadi. Internetda horizontal scalingdan foydalanish web-service lar xizmatini kuchaytiradi. Yirik kompaniyalar Google(Gmail, Youtube), Yahoo, Facebook, Ebay, Amazon va boshqalar horizontal scaling dan foydalanishadi. Horizontal scaling vertical scaling ga nisbatan qimmat va qiyinroq. Bundan tashqari sozlamalariga ham katta vaqt talab qiladi.
Horizontal Scaling afzalliklari
- Bir nechta serverlar o’rtasida yuklamani taqsimlash imkonini beradi.
- Ba’zi favqulodda vaziyatlarda ma’lumotlar xavfsizligini oshirish imkonini beradi.
- Veb-xizmatlar arxitekturasini optimallashtirish imkonini beradi.
- Gorizontal o’lchov vertikal o’lchovdan farqli o’laroq, umuman cheklanmagan.
Horizontal Scaling kamchiliklari
- Qo’llab-quvvatlash(support) qiyinroq. Har safar yangi server qo’shilsa, siz ular o’rtasida sinxronlashtirilgan operatsiyalarni sozlashingiz kerak bo’ladi.
- Ko’pgina serverlarni uzoq vaqt davomida qo’llab-quvvatlash qimmatroq bo’lishi mumkin.
Xulosa
Horizontal yoki vertikal scaling ikkalasidan faqat birini tanlash har doim ham yaxshi fikr emas. Ikki model o’rtasida harakat qilish yaxshi tanlovdir. Yaratayotgan yangi dasturingiz uchun boshidan horizontal scaling ni tanlash yaxshi fikr emas. Chunki foydalanuvchilar qancha bo’lishi va qaysi servislaringiz ortiqcha yuklamali bo’lishini aniq ayta olmaysiz. Shuning uchun aniq bilmagan servislarga ortiqcha vaqt va harajat qilish to’g’ri emas. Horizontal scaling da eng kamida applicationni config fayliga o’zgartish qilasiz. Vertikal scaling da esa bunday holatga duch kelmaysiz. Lekin vertikal scalingni kamchiligi resurslar cheklangan bo’ladi. Ehtimol, sanoat tobora ko’proq arxitekturani gorizontal taqsimlangan yondashuvga o’tadi. Ushbu tendensiya zaxira strategiyasi bo’lganligi uchun ishonchliroq hisoblanadi. Ayniqsa startup kompaniylar masshtablashni tanlashda shoshmaslik va tizimni yaxshilab analiz qilishlari kerak bo’ladi. Bu narsa ko’p xarajat va resursni tejashga sabab bo’ladi.
Manba:
Umumiy Dasturlash
Application: nol(0)dan million(10⁶)gacha foydalanuvchilar uchun(1-qism)