हॉरिजॉन्टल स्केलिंग वर्कलोड बांटने के लिए ज़्यादा मशीनें जोड़ती है, जबकि वर्टिकल स्केलिंग मौजूदा सर्वर की पावर बढ़ाती है। दोनों तरीके परफॉर्मेंस की दिक्कतों को हल करते हैं लेकिन आर्किटेक्चर, कॉस्ट पैटर्न और ऑपरेशनल कॉम्प्लेक्सिटी में बुनियादी तौर पर अलग हैं।
मुख्य बातें
हॉरिजॉन्टल स्केलिंग डिज़ाइन के हिसाब से सिंगल पॉइंट्स ऑफ़ फेलियर को खत्म करती है, जबकि वर्टिकल स्केलिंग रिस्क को एक मशीन पर फोकस करती है।
डेटाबेस वर्कलोड अक्सर हॉरिजॉन्टल डिस्ट्रीब्यूशन का विरोध करते हैं, जिससे कई टीमों के लिए वर्टिकल स्केलिंग प्रैक्टिकल डिफ़ॉल्ट बन जाती है।
ऑटो-स्केलिंग ग्रुप हॉरिजॉन्टल स्केलिंग को तुरंत महसूस कराते हैं, लेकिन इसके लिए पहले से एप्लिकेशन आर्किटेक्चर में इन्वेस्टमेंट की ज़रूरत होती है।
जब आप सबसे पावरफुल उपलब्ध सर्वर तक पहुँचते हैं, तो वर्टिकल स्केलिंग एक हार्ड लिमिट तक पहुँच जाती है, जबकि हॉरिजॉन्टल स्केलिंग थ्योरी के हिसाब से कभी नहीं पहुँचती।
क्षैतिज स्केलिंग क्या है?
बढ़ी हुई डिमांड को संभालने और वर्कलोड को बांटने के लिए और सर्वर या इंस्टेंस जोड़ना।
इसे स्केल-आउट भी कहा जाता है, यह तरीका लोड बैलेंसर का इस्तेमाल करके कई मशीनों में ट्रैफिक बांटता है।
AWS, Azure, और GCP जैसे क्लाउड प्रोवाइडर ऑटो-स्केलिंग ग्रुप्स के साथ हॉरिजॉन्टल स्केलिंग को लगभग तुरंत बना देते हैं
इस तरीके के असरदार तरीके से काम करने के लिए एप्लीकेशन को स्टेटलेस या शेयर्ड स्टोरेज इस्तेमाल करने के लिए डिज़ाइन किया जाना चाहिए।
हॉरिजॉन्टल स्केलिंग बिल्ट-इन रिडंडेंसी देती है क्योंकि अगर एक सर्वर फेल हो जाता है तो ट्रैफिक रीरूट हो सकता है।
यह तरीका आम तौर पर 'पे-एज़-यू-ग्रो' मॉडल को फॉलो करता है, जिसमें लागत को सीधे असल इस्तेमाल के साथ जोड़ा जाता है।
ऊर्ध्वाधर स्केलिंग क्या है?
परफॉर्मेंस बढ़ाने के लिए CPU, RAM, या स्टोरेज जैसे मौजूदा सर्वर रिसोर्स को अपग्रेड करना।
इसे आम तौर पर स्केल-अप कहा जाता है, इसमें सर्वर को ज़्यादा पावरफ़ुल मशीन से बदलना या कंपोनेंट्स को अपग्रेड करना शामिल है।
वर्टिकल स्केलिंग उन मोनोलिथिक एप्लिकेशन के लिए अच्छा काम करती है जिन्हें कई सर्वर पर चलाने के लिए डिज़ाइन नहीं किया गया था
आमतौर पर एक मशीन कितनी पावरफुल हो सकती है, इसकी एक ऊपरी लिमिट होती है, जिससे एक स्केलेबिलिटी सीलिंग बनती है।
डेटाबेस सर्वर अक्सर वर्टिकल स्केलिंग का इस्तेमाल करते हैं क्योंकि रिलेशनल डेटाबेस को डिस्ट्रीब्यूट करने में काफी मुश्किलें आती हैं।
इस तरीके में हार्डवेयर अपग्रेड के दौरान डाउनटाइम की ज़रूरत होती है, जब तक कि वर्चुअलाइज़्ड एनवायरनमेंट में लाइव माइग्रेशन टेक्नोलॉजी का इस्तेमाल न किया जा रहा हो।
तुलना तालिका
विशेषता
क्षैतिज स्केलिंग
ऊर्ध्वाधर स्केलिंग
वास्तुकला
कई नोड्स में वितरित
एकल शक्तिशाली मशीन
अधिकतम योग्यता
पर्याप्त नोड्स के साथ लगभग असीमित
हार्डवेयर सीलिंग द्वारा सीमित
स्केलिंग के दौरान डाउनटाइम
आमतौर पर शून्य डाउनटाइम
अक्सर रीस्टार्ट या माइग्रेशन की ज़रूरत होती है
लागत पैटर्न
हर इंस्टेंस के हिसाब से पेमेंट, एक के बाद एक बढ़ता है
बड़ी अग्रिम या चरण-लागत वृद्धि
जटिलता
ज़्यादा, लोड बैलेंसिंग और डिस्ट्रिब्यूटेड डिज़ाइन की ज़रूरत है
कम, लागू करने में आसान
दोष सहिष्णुता
अंतर्निहित अतिरेक
विफलता का एकल बिंदु
विशिष्ट उपयोग मामला
वेब अनुप्रयोग, माइक्रोसर्विसेस
डेटाबेस, लीगेसी मोनोलिथ
विस्तृत तुलना
हर तरीका ग्रोथ को कैसे हैंडल करता है
जब ट्रैफिक बढ़ता है, तो हॉरिजॉन्टल स्केलिंग बोझ बांटने के लिए और सर्वर चालू कर देती है। इसे ऐसे समझें जैसे किसी किराने की दुकान पर ज़्यादा चेकआउट लेन खोल दी जाती हैं। इसके उलट, वर्टिकल स्केलिंग आपके कैशियर को किसी तेज़ कैशियर से बदल देती है या उनके रजिस्टर को अपग्रेड कर देती है। दोनों से ज़्यादा थ्रूपुट मिलता है, लेकिन ऑपरेशनल मैकेनिक्स काफ़ी अलग होते हैं।
एप्लिकेशन डिज़ाइन आवश्यकताएँ
हॉरिजॉन्टल स्केलिंग के लिए एप्लिकेशन को डिस्ट्रीब्यूशन को ध्यान में रखकर बनाया जाना चाहिए। सेशन डेटा एक सर्वर पर नहीं रह सकता है, और रिक्वेस्ट को अलग से हैंडल करना होगा। वर्टिकल स्केलिंग पुराने आर्किटेक्चर के लिए कहीं ज़्यादा आसान है। एक ट्रेडिशनल थ्री-टियर एप्लिकेशन को अक्सर ज़्यादा पावरफुल अंडरलाइंग सर्वर से फ़ायदा उठाने के लिए किसी कोड में बदलाव की ज़रूरत नहीं होती है।
समय के साथ लागत निहितार्थ
हॉरिजॉन्टल स्केलिंग खर्च को कई छोटी-छोटी खरीदारी में बांट देती है, जिससे बजट बनाना आसान हो जाता है, लेकिन बड़े पैमाने पर कुल लागत बढ़ सकती है। वर्टिकल स्केलिंग कम, ज़्यादा महंगी मशीनों में इन्वेस्टमेंट को एक जगह जमा करती है। बहुत ज़्यादा परफॉर्मेंस की ज़रूरत होने पर, एक सिंगल हाई-एंड सर्वर असल में सैकड़ों छोटे सर्वर को ऑर्केस्ट्रेट करने से ज़्यादा कॉस्ट-इफेक्टिव हो सकता है।
विफलता लचीलापन
हॉरिजॉन्टल स्केलिंग का एक खास फ़ायदा है नैचुरल फ़ॉल्ट टॉलरेंस। अगर एक नोड फ़ेल हो जाता है, तो दूसरे रिक्वेस्ट सर्व करते रहते हैं। वर्टिकल स्केलिंग एक मशीन पर बहुत ज़्यादा डिपेंडेंसी बनाती है। जब यह डाउन हो जाता है, तो सब कुछ रुक जाता है, जब तक कि आपने कोई महंगा स्टैंडबाय सिस्टम इम्प्लीमेंट न किया हो।
वास्तविक दुनिया के हाइब्रिड दृष्टिकोण
सोफिस्टिकेटेड ऑर्गनाइज़ेशन शायद ही कभी एक्सक्लूसिवली चुनते हैं। वे डेटाबेस मास्टर को वर्टिकली स्केल कर सकते हैं जबकि स्टेटलेस वेब सर्वर को हॉरिजॉन्टली स्केल कर सकते हैं। यह प्रैक्टिकल मिक्सिंग हर कंपोनेंट को उस स्केलिंग मॉडल का इस्तेमाल करने देती है जो उसकी कंस्ट्रेंट्स और एक्सेस पैटर्न में फिट बैठता है।
लाभ और हानि
क्षैतिज स्केलिंग
लाभ
+उत्कृष्ट दोष सहिष्णुता
+लोचदार, मांग पर आधारित वृद्धि
+कोई हार्डवेयर छत नहीं
+लागत को उपयोग के साथ संरेखित करता है
+भौगोलिक वितरण सक्षम करता है
सहमत
−उच्च वास्तुशिल्प जटिलता
−स्टेटलेस डिज़ाइन की आवश्यकता है
−नोड्स के बीच नेटवर्क विलंबता
−अधिक चुनौतीपूर्ण डिबगिंग
−संभावित डेटा संगतता समस्याएँ
ऊर्ध्वाधर स्केलिंग
लाभ
+लागू करने में आसान
+कोई वितरित सिस्टम सिरदर्द नहीं
+लेगेसी कोड के साथ काम करता है
+कम नेटवर्क ओवरहेड
+सुरक्षित करना और ऑडिट करना आसान
सहमत
−विफलता का एकल बिंदु
−हार्डवेयर अपग्रेड सीमाएँ
−अक्सर डाउनटाइम की ज़रूरत होती है
−अलग-अलग वर्कलोड को सही ठहराना मुश्किल
−भौगोलिक सांद्रता
सामान्य भ्रांतियाँ
मिथ
वर्टिकल स्केलिंग हमेशा सस्ती होती है क्योंकि आप कम मशीनें खरीदते हैं।
वास्तविकता
हालांकि इनवॉइस लिस्ट छोटी होती है, लेकिन एंटरप्राइज़-ग्रेड सर्वर पर बहुत ज़्यादा प्रीमियम लगता है। बड़े पैमाने पर, सैकड़ों मामूली इंस्टेंस एक सुपरकंप्यूटर से बेहतर परफॉर्म कर सकते हैं और कीमत भी कम कर सकते हैं। असली हिसाब-किताब आपके खास वर्कलोड पैटर्न और हर रिसोर्स का कितनी अच्छे से इस्तेमाल होता है, इस पर निर्भर करता है।
मिथ
हॉरिजॉन्टल स्केलिंग का मतलब है कि आपका एप्लिकेशन अपने आप ज़्यादा भरोसेमंद हो जाता है।
वास्तविकता
डिस्ट्रीब्यूशन तभी भरोसेमंद होता है जब उसे सही तरीके से डिज़ाइन किया गया हो। खराब तरीके से बनाया गया हॉरिजॉन्टली स्केल्ड सिस्टम बुरी तरह फेल हो सकता है अगर सभी नोड्स एक ही डेटाबेस बॉटलनेक शेयर करते हैं या अगर लोड बैलेंसर खुद एक वल्नरेबिलिटी बन जाता है।
मिथ
आपको एक तरीका चुनना होगा और हमेशा उसी पर टिके रहना होगा।
वास्तविकता
ज़्यादातर प्रोडक्शन एनवायरनमेंट दोनों स्ट्रेटेजी को डायनैमिकली मिलाते हैं। स्टेटलेस कंपोनेंट हॉरिजॉन्टली स्केल करते हैं जबकि परसिस्टेंट डेटा स्टोर वर्टिकली स्केल कर सकते हैं जब तक कि शार्डिंग ज़रूरी न हो जाए। जैसे-जैसे सिस्टम बदलते हैं, बाउंड्री बदलती रहती है।
मिथ
क्लाउड के ज़माने में वर्टिकल स्केलिंग पुरानी हो चुकी है।
वास्तविकता
क्लाउड प्रोवाइडर हॉरिजॉन्टल स्केलिंग को बहुत बढ़ावा देते हैं, लेकिन वर्टिकल स्केलिंग अभी भी ज़रूरी है। कई मैनेज्ड डेटाबेस सर्विस अभी भी स्केल आउट करने से पहले स्केल अप करती हैं, और कुछ कम्प्यूटेशनल वर्कलोड कम, ज़्यादा पावरफुल इंस्टेंस पर बेहतर परफॉर्म करते हैं, सिर्फ़ कम्युनिकेशन ओवरहेड के कारण।
मिथ
हॉरिजॉन्टल स्केलिंग सभी परफॉर्मेंस प्रॉब्लम को तुरंत सॉल्व कर देती है।
वास्तविकता
सर्वर जोड़ने से तभी मदद मिलती है जब आपकी रुकावट कंप्यूट कैपेसिटी हो। अगर आपका एप्लिकेशन खराब क्वेरी, मेमोरी लीक या ब्लॉकिंग ऑपरेशन की वजह से धीमा है, तो ज़्यादा सर्वर आपकी समस्याओं को और बढ़ा देंगे। स्केलिंग के फैसलों से पहले प्रोफाइलिंग और ऑप्टिमाइज़ेशन होना चाहिए।
अक्सर पूछे जाने वाले सवाल
आसान शब्दों में हॉरिजॉन्टल स्केलिंग बनाम वर्टिकल स्केलिंग क्या है?
हॉरिजॉन्टल स्केलिंग का मतलब है अपने पूल में ज़्यादा कंप्यूटर जोड़कर ज़्यादा काम संभालना, जैसे किसी फैक्ट्री के लिए ज़्यादा वर्कर रखना। वर्टिकल स्केलिंग का मतलब है अपने मौजूदा कंप्यूटर को ज़्यादा पावरफुल बनाना, जैसे अपने वर्कर को बेहतर टूल और स्टेरॉयड देना। दोनों ही कैपेसिटी बढ़ाते हैं लेकिन लागू करने और मेंटेन करने में बहुत अलग लगते हैं।
मुझे हॉरिजॉन्टल के बजाय वर्टिकल स्केलिंग का इस्तेमाल कब करना चाहिए?
वर्टिकल स्केलिंग उन स्टेटफुल एप्लिकेशन के साथ काम करती है जो डिस्ट्रीब्यूशन के लिए नहीं बनाए गए थे, जैसे ट्रेडिशनल रिलेशनल डेटाबेस या लेगेसी एंटरप्राइज़ सॉफ़्टवेयर। यह तब भी बेहतर होता है जब नोड्स के बीच नेटवर्क कम्युनिकेशन से बहुत ज़्यादा लेटेंसी हो, या जब आपकी टीम के पास डिस्ट्रीब्यूटेड सिस्टम की कॉम्प्लेक्सिटी को मैनेज करने की एक्सपर्टीज़ न हो।
क्या हॉरिजॉन्टल स्केलिंग के लिए खास एप्लिकेशन डिज़ाइन की ज़रूरत होती है?
आम तौर पर हाँ। आपके एप्लिकेशन को लोकल सर्वर स्टेट पर निर्भर हुए बिना रिक्वेस्ट को हैंडल करना होगा। यूज़र सेशन Redis जैसे शेयर्ड कैश में होने चाहिए, फ़ाइल अपलोड के लिए S3 जैसे सेंट्रलाइज़्ड स्टोरेज की ज़रूरत होती है, और आपके डेटाबेस को कई एप्लिकेशन सर्वर से कनेक्शन हैंडल करने चाहिए। ये नामुमकिन ज़रूरतें नहीं हैं, लेकिन इनके लिए शुरुआती डेवलपमेंट स्टेज से प्लानिंग की ज़रूरत होती है।
क्या मैं हॉरिजॉन्टल और वर्टिकल स्केलिंग को मिला सकता हूँ?
बिल्कुल, और ज़्यादातर ऑर्गनाइज़ेशन ठीक यही करते हैं। एक आम पैटर्न वेब सर्वर को हॉरिजॉन्टली स्केल करता है, जबकि डेटाबेस को वर्टिकली स्केल करता है जब तक कि उन्हें शार्ड करना ज़रूरी न हो। यह हाइब्रिड तरीका हर लेयर को अपनी कंस्ट्रेंट और एक्सेस पैटर्न के लिए सबसे सही स्केलिंग मॉडल इस्तेमाल करने देता है।
कौन सा स्केलिंग तरीका ज़्यादा कॉस्ट-इफेक्टिव है?
यह पूरी तरह से आपके वर्कलोड की खासियतों और ग्रोथ के रास्ते पर निर्भर करता है। लगातार, अंदाज़ा लगाया जा सकने वाला ग्रोथ वर्टिकल स्केलिंग की आसानी को फ़ायदा पहुंचा सकता है। बहुत ज़्यादा बदलने वाले या तेज़ी से बढ़ने वाले वर्कलोड अक्सर हॉरिजॉन्टल स्केलिंग के बारीक कॉस्ट कंट्रोल से सस्ते साबित होते हैं। कमिट करने से पहले अपने असल रिसोर्स इस्तेमाल के पैटर्न का डिटेल्ड एनालिसिस करें।
ऑटो-स्केलिंग हॉरिजॉन्टल स्केलिंग के साथ कैसे काम करता है?
ऑटो-स्केलिंग CPU यूटिलाइज़ेशन, रिक्वेस्ट क्यू डेप्थ, या कस्टम बिज़नेस मेट्रिक्स जैसे मेट्रिक्स को मॉनिटर करता है। जब थ्रेशहोल्ड टूटते हैं, तो यह ऑटोमैटिकली नए इंस्टेंस प्रोविज़न करता है और उन्हें आपके लोड बैलेंसर में जोड़ देता है। जब डिमांड कम होती है, तो यह पैसे बचाने के लिए इंस्टेंस हटा देता है। यह इलास्टिसिटी क्लाउड एनवायरनमेंट में हॉरिजॉन्टल स्केलिंग का किलर फ़ीचर है।
वर्टिकल स्केलिंग के मुख्य जोखिम क्या हैं?
सबसे बड़ा रिस्क है अवेलेबल हार्डवेयर की लिमिट तक पहुँचना। एक बार जब आप सबसे पावरफुल सर्वर खरीद लेते हैं, तो आप फँस जाते हैं। अपग्रेड के लिए ज़रूरी डाउनटाइम, एक मशीन पर रिस्क का कंसंट्रेशन, और अचानक बढ़ने वाले वर्कलोड के लिए महंगे हार्डवेयर को सही ठहराने में मुश्किल भी होती है।
क्या हॉरिजॉन्टल स्केलिंग सिर्फ़ बड़े एंटरप्राइज़ के लिए है?
अब नहीं। क्लाउड कंप्यूटिंग ने हॉरिजॉन्टल स्केलिंग तक पहुंच को आसान बना दिया है। एक स्टार्टअप, इंफ्रास्ट्रक्चर एज़ कोड में ऑटो-स्केलिंग को उतनी ही आसानी से कॉन्फ़िगर कर सकता है जितनी आसानी से कोई फॉर्च्यून 500 कंपनी कर सकती है। असली रुकावट आर्किटेक्चरल एक्सपर्टीज़ है, बजट या ऑर्गेनाइज़ेशनल साइज़ नहीं।
लोड बैलेंसर हॉरिजॉन्टल स्केलिंग में कैसे फिट होते हैं?
लोड बैलेंसर वे ट्रैफिक डायरेक्टर होते हैं जो हॉरिजॉन्टल स्केलिंग को मुमकिन बनाते हैं। वे आने वाली रिक्वेस्ट को आपके सर्वर के पूल में बांटते हैं, हेल्थ मॉनिटर करते हैं, और फेल हुए नोड्स को ऑटोमैटिकली हटा देते हैं। उनके बिना, यूज़र सीधे अलग-अलग सर्वर पर हिट करेंगे, जिससे कई मशीनें रखने का मकसद ही खत्म हो जाएगा।
जब मैं हॉरिजॉन्टली स्केल करता हूं तो मेरे डेटा का क्या होता है?
यह सबसे ज़रूरी सवाल है। डेटाबेस में एप्लिकेशन डेटा को सभी नोड्स से एक्सेस किया जाना चाहिए, आमतौर पर एक सेंट्रलाइज़्ड डेटाबेस या डेटाबेस क्लस्टर के ज़रिए। यूज़र द्वारा अपलोड की गई फ़ाइलें शेयर्ड स्टोरेज में चली जाती हैं। सेशन डेटा Redis या इसी तरह की चीज़ों में शिफ्ट हो जाता है। आपका एप्लिकेशन कोड स्टेटलेस हो जाता है, जबकि डेटा डेडिकेटेड, अक्सर वर्टिकली स्केल्ड, डेटा लेयर्स में रहता है।
क्या वर्टिकल स्केलिंग कभी हॉरिजॉन्टल स्केलिंग परफॉर्मेंस से मैच कर सकती है?
कुछ खास वर्कलोड के लिए, हाँ। बड़े CPU, मेमोरी और तेज़ लोकल स्टोरेज वाली एक मशीन, उन कामों के लिए डिस्ट्रिब्यूटेड सिस्टम से बेहतर परफॉर्म कर सकती है जिनमें भारी इंटर-प्रोसेस कम्युनिकेशन या बार-बार डेटा लोकैलिटी की ज़रूरत होती है। साइंटिफिक कंप्यूटिंग, वीडियो रेंडरिंग और कुछ डेटाबेस एनालिटिक्स कभी-कभी बड़े स्केल पर भी वर्टिकल स्केलिंग को पसंद करते हैं।
मैं कैसे तय करूँ कि किस स्केलिंग स्ट्रेटेजी से शुरू करूँ?
अपनी कमियों से शुरू करें। अगर आपके पास कोई लेगेसी एप्लीकेशन है और इंजीनियरिंग के लिए कम समय है, तो वर्टिकल स्केलिंग आपको सबसे तेज़ी से आगे बढ़ने में मदद करती है। अगर आप नया क्लाउड-नेटिव सॉफ्टवेयर बना रहे हैं, तो पहले दिन से ही हॉरिजॉन्टल स्केलिंग के लिए डिज़ाइन करें। सबसे ज़रूरी बात, हर चीज़ को इंस्ट्रूमेंट करें और थ्योरेटिकल अंदाज़े लगाने के बजाय असली परफॉर्मेंस डेटा को अपने डेवलपमेंट को गाइड करने दें।
निर्णय
मॉडर्न, क्लाउड-नेटिव एप्लिकेशन बनाते समय हॉरिजॉन्टल स्केलिंग चुनें, जिन्हें इलास्टिक ग्रोथ और हाई अवेलेबिलिटी की ज़रूरत होती है। लेगेसी सिस्टम, ट्रेडिशनल डेटाबेस जैसे कॉम्प्लेक्स स्टेटफुल वर्कलोड, या जब सिंप्लिसिटी अनलिमिटेड स्केल की ज़रूरत से ज़्यादा हो, तो वर्टिकल स्केलिंग चुनें। ज़्यादातर मैच्योर आर्किटेक्चर आखिरकार दोनों तरीकों को मिला देते हैं।