आंतरिक नेटवर्क अक्सर 1 Gbps कनेक्शन, या तेज का उपयोग करते हैं। ऑप्टिकल फाइबर कनेक्शन या बॉन्डिंग सर्वरों के बीच अधिक उच्च बैंडविंड की अनुमति देते हैं। अब एक एपीआई से JSON प्रतिक्रिया के औसत आकार की कल्पना करें। एक सेकंड में 1 Gbps कनेक्शन पर इस तरह की प्रतिक्रियाओं को कितना प्रसारित किया जा सकता है?
चलो वास्तव में गणित करते हैं। 1 जीबीपीएस 131 072 केबी प्रति सेकंड है। यदि एक औसत JSON प्रतिक्रिया 5 KB (जो कि बहुत अधिक है!), तो आप तार के माध्यम से प्रति सेकंड 26 जोड़ी प्रतिक्रियाएं भेज सकते हैं बस एक जोड़ी मशीनों के साथ । इतना बुरा नहीं है, है ना?
यही कारण है कि नेटवर्क कनेक्शन आमतौर पर अड़चन नहीं है।
माइक्रोसर्विस का दूसरा पहलू यह है कि आप आसानी से स्केल कर सकते हैं। दो सर्वरों की कल्पना करें, एक एपीआई की मेजबानी कर रहा है, दूसरा इसका उपभोग करने वाला। यदि कभी कनेक्शन टोंटी बन जाता है, तो बस दो अन्य सर्वर जोड़ें और आप प्रदर्शन को दोगुना कर सकते हैं।
यह तब होता है जब हमारे पहले 26 264 प्रति सेकंड प्रतिक्रियाएं ऐप के पैमाने के लिए बहुत छोटी हो जाती हैं। आप अन्य नौ जोड़े जोड़ते हैं, और आप अब 262 140 प्रतिक्रियाएं देने में सक्षम हैं।
लेकिन हम अपने सर्वर की जोड़ी पर वापस आते हैं और कुछ तुलना करते हैं।
यदि किसी डेटाबेस के लिए औसत गैर-कैश की गई क्वेरी 10 एमएस लेती है, तो आप प्रति सेकंड 100 प्रश्नों तक सीमित हैं। 100 प्रश्न। 26 214 प्रतिक्रियाएँ। प्रति सेकंड 26 214 प्रतिक्रियाओं की गति को प्राप्त करने के लिए बड़ी मात्रा में कैशिंग और ऑप्टिमाइज़ेशन की आवश्यकता होती है (यदि प्रतिक्रिया वास्तव में कुछ उपयोगी करने की आवश्यकता होती है, जैसे डेटाबेस को क्वेरी करना, "हैलो वर्ल्ड" -स्टाइल प्रतिक्रियाएं योग्य नहीं हैं)।
मेरे कंप्यूटर पर, अभी Google के होम पेज के लिए DOMContentLoaded 394 एमएस हुआ। अनुरोध भेजे जाने के बाद। यह प्रति सेकंड 3 अनुरोधों से कम है। प्रोग्रामर के लिए। होम पेज पर, यह 603 एमएस में हुआ। अनुरोध भेजे जाने के बाद। वह प्रति सेकंड 2 अनुरोध भी नहीं है। वैसे, मेरे पास 100 एमबीपीएस इंटरनेट कनेक्शन और एक तेज कंप्यूटर है: कई उपयोगकर्ता लंबे समय तक इंतजार करेंगे।
यदि सर्वरों के बीच टोंटी नेटवर्क की गति है, तो वे दोनों साइटें पृष्ठ की सेवा करते समय विभिन्न एपीआई के लिए हजारों कॉल कर सकती हैं।
उन दो मामलों से पता चलता है कि नेटवर्क संभवतः सिद्धांत में आपकी अड़चन नहीं होगा (व्यवहार में, आपको किसी विशेष हार्डवेयर पर होस्ट किए गए आपके विशेष सिस्टम की अड़चन का सटीक स्थान निर्धारित करने के लिए वास्तविक बेंचमार्क और प्रोफाइलिंग करना चाहिए )। वास्तविक कार्य करने में लगने वाला समय (क्या यह SQL क्वेरीज़, कम्प्रेशन, जो भी होगा) और अंतिम उपयोगकर्ता को परिणाम भेजने के लिए अधिक महत्वपूर्ण है।
डेटाबेस के बारे में सोचो
आमतौर पर, डेटाबेस का उपयोग करके वेब एप्लिकेशन से अलग से होस्ट किया जाता है। यह एक चिंता पैदा कर सकता है: एप्लिकेशन को होस्ट करने वाले सर्वर और डेटाबेस की मेजबानी करने वाले सर्वर के बीच कनेक्शन की गति के बारे में क्या?
ऐसा प्रतीत होता है कि ऐसे मामले हैं जहां वास्तव में, कनेक्शन की गति समस्याग्रस्त हो जाती है, जब आप बड़ी मात्रा में डेटा संग्रहीत करते हैं जिसे डेटाबेस द्वारा स्वयं संसाधित करने की आवश्यकता नहीं होती है और इसे अभी उपलब्ध होना चाहिए (जो कि बड़ी बाइनरी फ़ाइलें हैं)। लेकिन ऐसी स्थितियां दुर्लभ हैं: ज्यादातर मामलों में, हस्तांतरण की गति क्वेरी के प्रसंस्करण की गति की तुलना में इतनी बड़ी नहीं है।
जब स्थानांतरण गति वास्तव में मायने रखती है, जब कोई कंपनी NAS पर बड़े डेटा सेट की मेजबानी कर रही है, और NAS एक ही समय में कई ग्राहकों द्वारा एक्सेस किया जाता है। यह वह जगह है जहाँ SAN एक समाधान हो सकता है। यह कहा जा रहा है, यह एकमात्र समाधान नहीं है। कैट 6 केबल 10 जीबीपीएस तक की गति का समर्थन कर सकते हैं; केबल या नेटवर्क एडेप्टर को बदले बिना गति बढ़ाने के लिए भी बॉन्डिंग का उपयोग किया जा सकता है। अन्य समाधान मौजूद हैं, जिसमें कई NAS में डेटा प्रतिकृति शामिल है।
गति के बारे में भूल जाओ; स्केलेबिलिटी के बारे में सोचें
एक वेब ऐप का एक महत्वपूर्ण बिंदु स्केल करने में सक्षम होना है। हालांकि वास्तविक प्रदर्शन मायने रखता है (क्योंकि कोई भी अधिक शक्तिशाली सर्वर के लिए भुगतान नहीं करना चाहता है), स्केलेबिलिटी बहुत अधिक महत्वपूर्ण है, क्योंकि यह आपको जरूरत पड़ने पर अतिरिक्त हार्डवेयर फेंकने देता है।
यदि आपके पास विशेष रूप से तेज़ ऐप नहीं है, तो आप पैसे खो देंगे क्योंकि आपको अधिक शक्तिशाली सर्वर की आवश्यकता होगी।
यदि आपके पास एक तेज़ ऐप है जो पैमाने पर नहीं आ सकता है, तो आप ग्राहकों को खो देंगे क्योंकि आप बढ़ती मांग का जवाब नहीं दे पाएंगे।
उसी तरह, आभासी मशीनें एक दशक पहले एक बहुत बड़ा प्रदर्शन मुद्दा थीं। दरअसल, किसी सर्वर पर किसी एप्लिकेशन को होस्ट करने से वर्चुअल मशीन पर होस्ट करने से एक महत्वपूर्ण प्रदर्शन प्रभाव पड़ता है। जबकि अंतर आज बहुत छोटा है, यह अभी भी मौजूद है।
इस प्रदर्शन के नुकसान के बावजूद, आभासी वातावरण लचीलेपन के कारण बहुत लोकप्रिय हो गए।
नेटवर्क की गति के साथ, आप पा सकते हैं कि वीएम वास्तविक अड़चन है और आपके वास्तविक पैमाने को देखते हुए, आप वीएम के बिना, सीधे अपने ऐप की मेजबानी करके अरबों डॉलर बचा सकते हैं। लेकिन 99.9% ऐप्स के लिए ऐसा नहीं होता है: उनकी अड़चन कहीं और होती है, और वीएम की वजह से कुछ माइक्रोसेकंड के नुकसान का खामियाजा हार्डवेयर एब्सट्रैक्शन और स्केलेबिलिटी के लाभ से आसानी से चुकाया जा सकता है।