अलस्पॉ की किताब क्या समस्याएं हल करती है
चलाते रहने का अनुशासन
जॉन अलस्पॉ ने 'द आर्ट ऑफ कैपेसिटी प्लानिंग' (ओ'रीली, 2008; दूसरा संस्करण 2017) लिखा फ्लिकर पर विस्फोटक वृद्धि के वर्षों के माध्यम से संचालन चलाने के बाद। उनकी थीसिस: क्षमता योजना एक बार की स्प्रेडशीट व्यायाम नहीं है। यह एक निरंतर अनुशासन है जो माप, पूर्वानुमान, & इंजीनियरिंग निर्णय को जोड़ता है। इन तीनों में से किसी एक को छोड़ें, & आप या तो उत्पादन में क्षमता से बाहर निकल जाते हैं या हार्डवेयर पर पैसे बर्बाद करते हैं जो निष्क्रिय है।
क्षमता योजना दो विफलता मोड के बीच बैठती है:
- अल्प-प्रावधान: सेवाएं गर्म चलती हैं, विलंबता में स्पाइक होता है, त्रुटि दरें बढ़ती हैं, ग्राहक चले जाते हैं। बढ़ते चरण में उपयोगकर्ताओं को खोने का सबसे तेज़ तरीका।
- अत्यधिक-प्रावधान: हार्डवेयर 10% उपयोग पर बैठा है, वित्त पूछते हैं कि बजट में वृद्धि क्यों हो रही है बिना राजस्व के साथ। बजट समीक्षा में हेडकाउंट खोने का सबसे तेज़ तरीका।
कला उस गलियारे को खोजने में निहित है उन दोनों चट्टानों के बीच और जैसे कार्यभार बदलता है उसके अंदर रहना।
तीन मुख्य प्रश्न हर क्षमता व्यायाम को संचालित करते हैं:
- हमारे पास क्या है? वर्तमान क्षमता ठोस इकाइयों में: प्रति सेकंड अनुरोध, प्रति सेकंड प्रश्न, गीगाबाइट भंडारण, समवर्ती कनेक्शन।
- हमें क्या चाहिए? एक भविष्य तारीख पर पूर्वानुमानित मांग स्पष्ट अनिश्चितता सीमा के साथ।
- हमें कब कार्य करना चाहिए? खरीद के लिए लीड समय, प्रावधान, या स्केलिंग। क्लाउड इसे मिनटों में कम करता है; ऑन-प्रिमाइस महीनों का मतलब हो सकता है।
यह स्प्रेडशीट क्यों नहीं हो सकती
एक ई-कॉमर्स कंपनी सालाना एक बार क्षमता की योजना बनाती है, नवंबर में, पिछले 12 महीनों के ट्रैफिक को रैखिक रूप से एक्सट्रापोलेट करके। वे समर्पित सर्वर पर चलते हैं जिसमें 6 सप्ताह की खरीद लीड समय है। उनका ट्रैफिक मजबूत साप्ताहिक मौसमीता (3x सप्ताहांत शिखर), मजबूत वार्षिक मौसमीता (5x ब्लैक फ्राइडे), & तीन वर्षों के लिए 40% वर्ष-दर-वर्ष बढ़ रहा है।
कार्यभार बनाम उपयोग
दो अलग संख्याएं, दोनों आवश्यक
क्षमता योजना विफल होती है जब टीमें दोनों आवश्यक आयामों में से केवल एक को मापती हैं।
कार्यभार: सिस्टम पर बाहर से मांग। प्रति सेकंड अनुरोध, प्रति मिनट लेनदेन, प्रति सेकंड मेगाबाइट, समवर्ती उपयोगकर्ता। कार्यभार वर्णन करता है कि दुनिया आपसे क्या पूछ रही है।
उपयोग: सिस्टम कितना भरा है जबकि उस मांग को पूरा करता है। CPU प्रतिशत, मेमोरी उपयोग, कतार गहराई, नेटवर्क बैंडविड्थ, डिस्क IOPS। उपयोग वर्णन करता है कि सिस्टम उस मांग के तहत कैसा महसूस करता है।
अकेले कार्यभार बताता है कि क्या आ रहा है लेकिन यह नहीं कि क्या आप इसे पूरा कर सकते हैं। अकेला उपयोग बताता है कि आप कितना भरे हैं लेकिन यह नहीं कि कल क्या उम्मीद करें। आपको क्षमता निर्णय लेने के लिए दोनों की आवश्यकता है, साथ-साथ प्लॉट किए गए।
क्षमता अनुपात = कार्यभार / उपयोग। यदि आप 50% CPU पर प्रति सेकंड 1,000 अनुरोध प्रदान करते हैं, तो आपका क्षमता अनुपात 2,000 RPS प्रति 100% CPU प्रति सर्वर है। यह रूपांतरण कारक आपको पूर्वानुमानित कार्यभार को आवश्यक सर्वर गणना में अनुवाद करने देता है।
अलस्पॉ सही दानेदारता पर माप पर जोर देते हैं। प्रति मिनट एक नमूना 30 सेकंड के शिखर को छुपाता है। प्रति घंटा एक नमूना सब कुछ छुपाता है। वास्तविक क्षमता कार्य को शिखर घटनाओं के लिए सब-मिनट संकल्प और प्रवृत्ति के लिए मिनट संकल्प की आवश्यकता है। कुछ भी मोटा खतरनाक झूठे आत्मविश्वास का उत्पादन करता है।
क्या उपकरण करें
आपकी टीम एक नए उत्पाद लॉन्च पर क्षमता उपकरण चालू कर रही है (एक वीडियो ट्रांसकोडिंग सेवा)। आप सब-मिनट संकल्प पर 8 मेट्रिक्स तक चुन सकते हैं। सेवा वीडियो अपलोड निगलती है, उन्हें कतार में डालती है, कई प्रारूपों में ट्रांसकोड करती है, & वस्तु भंडारण के लिए आउटपुट लिखती है।
प्रवृत्ति, मौसमीता, अनिश्चितता
हर पूर्वानुमान की तीन परतें
अलस्पॉ और गूगल SRE बुक एक उपयोगी पूर्वानुमान की संरचना पर सहमत हैं: प्रवृत्ति, मौसमीता, & अनिश्चितता सीमा। किसी एक को छोड़ें और पूर्वानुमान भ्रामक हो जाता है।
प्रवृत्ति: महीनों या वर्षों के दौरान मांग का ढलान। अक्सर छोटी खिड़कियों के लिए रैखिक प्रतिगमन के साथ मॉडल किया जाता है, यौगिक वृद्धि के लिए घातांकीय या टुकड़ा-रैखिक। प्रवृत्ति रेखा उत्तर देती है 'मांग सामान्य रूप से कहाँ जा रही है?'
मौसमीता: कई समय पैमाने पर चक्रीय पैटर्न। दैनिक (दोपहर की चोटी ट्रैफिक), साप्ताहिक (सप्ताहांत में स्पाइक), वार्षिक (ब्लैक फ्राइडे, कर का मौसम, स्कूल वर्ष)। गुणात्मक मौसमीता प्रवृत्ति के साथ स्केल करती है; योजक मौसमीता एक स्थिर ऑफसेट जोड़ता है।
अनिश्चितता सीमा: पूर्वानुमान शंकु। सीमा के बिना पूर्वानुमान एक अनुमान है। वास्तविक पूर्वानुमान एक केंद्रीय अनुमान के साथ स्पष्ट ऊपरी और निचली सीमा प्रकाशित करते हैं, आमतौर पर 90% या 95% आत्मविश्वास पर। शंकु जैसे-जैसे आप भविष्य में प्रक्षेपित करते हैं चौड़ा होता है। एक 4 सप्ताह का पूर्वानुमान ±10% सीमा हो सकता है; 12 महीने का पूर्वानुमान अक्सर ±50% होता है।
व्यावसायिक वृद्धि से तकनीकी मांग को अलग करना: क्षमता योजना तकनीकी कार्यभार पूर्वानुमान करती है, लेकिन व्यावसायिक टीमें राजस्व, साइनअप, या अभियान पूर्वानुमान करती हैं। क्षमता योजनाकार का काम व्यावसायिक पूर्वानुमान को तकनीकी मांग में अनुवाद करना है: 30% साइनअप वृद्धि 30% अधिक API कॉल का मतलब हो सकता है, लेकिन यह 80% अधिक हो सकता है यदि नए उपयोगकर्ता सिस्टम का अधिक भारी उपयोग करते हैं, या यदि वे कम दरों पर रूपांतरित करते हैं तो केवल 15%। रूपांतरण अनुपात अंतर्निहित व्यावसायिक पूर्वानुमान जितना ही महत्वपूर्ण है।
छुट्टी के ट्रैफिक का पूर्वानुमान
आपकी सेवा एक ई-कॉमर्स साइट सेवा करती है। गत वर्ष की ब्लैक फ्राइडे ट्रैफिक नवंबर औसत का 5 गुना था, 12 घंटे से अधिक समय तक टिकी रही। व्यावसायिक 40% वर्ष-दर-वर्ष बढ़ा है। विपणन एक भुगतान किए गए प्रचार को लॉन्च कर रहा है जो इस वर्ष ब्लैक फ्राइडे ट्रैफिक में अतिरिक्त 20% जोड़ने की उम्मीद है।
अपनी छत को जानना
उत्पादन इसे करने से पहले छत खोजें
पूर्वानुमान बताता है कि क्या आ रहा है। छत परीक्षण बताता है कि क्या सिस्टम इसे पूरा कर सकता है। अलस्पॉ क्षमता योजना के लिए गैर-परक्राम्य इनपुट के रूप में छत परीक्षण का इलाज करते हैं: आप नियंत्रित भार के तहत परीक्षण किए जाने तक आपकी वास्तविक क्षमता नहीं जानते।
छत परीक्षण के तीन प्रकार:
- कृत्रिम भार परीक्षण: एक भार जनरेटर (k6, Locust, JMeter, vegeta) एक लक्ष्य सेवा में मंचन में ट्रैफिक चलाता है। लक्ष्य तक भार बढ़ाएं जब तक कुछ टूट न जाए। टूटने का बिंदु छत है। अलग सेवा परीक्षण के लिए सर्वश्रेष्ठ।
- उत्पादन आग ड्रिल: जानबूझकर उत्पादन में क्षमता कम करें (सर्वर का प्रतिशत नाली करें, एक क्षेत्र को मारें) और देखें कि शेष क्षमता वास्तविक ट्रैफिक को कैसे संभालती है। सच्चे उत्पादन व्यवहार का परीक्षण करता है अप्रत्याशित इंटरैक्शन सहित। उच्चतम आत्मविश्वास लेकिन उच्चतम जोखिम।
- छाया भार: वास्तविक उत्पादन ट्रैफिक को उत्पादन के समानांतर चलने वाली एक लक्ष्य सेवा पर चलाएं। वास्तविक कार्यभार पैटर्न को कैप्चर करता है (दुर्लभ क्वेरी मिश्रण, अजीब उपयोगकर्ता एजेंट) उपयोगकर्ताओं को प्रभावित किए बिना। मजबूत मध्य जमीन।
हेडरूम वर्तमान भार और छत के बीच बफर है। SRE नियमों की अंगुली:
- एक सिंगल-क्षेत्र सेवा के लिए स्थिर अवस्था में 50% हेडरूम (ताकि एक क्षेत्र विफलता जीवित क्षेत्र को समाप्त न करे)
- N+2 अतिरेकता के साथ एक बहु-क्षेत्र सेवा के लिए 30% हेडरूम
- 100%+ हेडरूम ज्ञात शिखर घटनाओं के करीब (ब्लैक फ्राइडे, खेल फाइनल)
हेडरूम बर्बादी नहीं है। यह 3 AM पर इंजीनियरों को पेज न करने की लागत है, एक स्पाइक के दौरान ग्राहकों को न खोना, और जब एक क्षेत्र विफल होता है तो एक झरना विफलता से पीड़ित न होना। वित्त टीमें कभी-कभी हेडरूम को कम करने के लिए धक्का देती हैं; क्षमता इंजीनियरों को उस बातचीत को तथ्य के बजाय भावनात्मक के बजाय तथ्य करने के लिए लागत को संकट करना चाहिए।
एक छत परीक्षण डिजाइन करना
आप एक सेवा विरासत में लेते हैं जिसमें कोई प्रलेखित क्षमता छत नहीं है। वर्तमान उत्पादन भार 12 सर्वर में 800 अनुरोध प्रति सेकंड है, औसत CPU 35%। विपणन 6 सप्ताह में एक अभियान की घोषणा कर रहा है जो ट्रैफिक को चोटी पर 3,000 RPS तक चलाने की उम्मीद है।
ऊपर, बाहर, या विकर्ण
कब शक्ति जोड़ें, बॉक्स जोड़ें, या दोनों
तीन मुख्य स्केलिंग रणनीतियाँ, प्रत्येक विशिष्ट लागत और विश्वसनीयता प्रोफाइल के साथ:
ऊर्ध्वाधर स्केलिंग (ऊपर स्केलिंग): बड़ी मशीनें। 8-कोर सर्वर को 32-कोर सर्वर से बदलें। सरलतम पथ; काम जब तक आप एकल-मशीन सीमा हिट न करें। एकल विफलता का बिंदु बना हुआ है। लागत गैर-रैखिकी बढ़ती है: 32-कोर मशीन अक्सर 4x 8-कोर से अधिक खर्च करती है।
क्षैतिज स्केलिंग (बाहर स्केलिंग): अधिक मशीनें। लोड बैलेंसर के पीछे सर्वर जोड़ें। क्षमता सर्वर गणना के साथ रैखिक रूप से स्केल करती है। विफलता मोड शिफ्ट: आपको वितरित समन्वय को संभालना चाहिए, लेकिन एक सर्वर विफलता अब सेवा को नष्ट नहीं करती है। परिचालन जटिलता बढ़ती है।
विकर्ण स्केलिंग (अलस्पॉ का शब्द): पहले ऊपर स्केल करें एक आरामदायक प्रति-सर्वर आकार तक, फिर वहां से बाहर स्केल करें। बड़ी मशीनों के सरल संचालन को कई सर्वर की अतिरेकता के साथ जोड़ता है। अधिकांश उत्पादन सेवाएं विकर्ण स्केलिंग क्षेत्र में रहती हैं।
आरक्षित बनाम ऑन-डिमांड मूल्य निर्धारण: क्लाउड प्रदाता पूर्वानुमानित पुरस्कार देते हैं। आरक्षित क्षमता ऑन-डिमांड की तुलना में 30-60% सस्ता है लेकिन 1-3 साल की प्रतिबद्धता की आवश्यकता है। क्षमता योजनाकार आमतौर पर स्थिर-अवस्था की मांग को आरक्षित क्षमता के साथ लॉक करते हैं और चोटियों में ऑन-डिमांड में फट जाते हैं। इस विभाजन को गलत अनुमान लगाने से या तो पैसे बर्बाद हो सकते हैं (अधिक-आरक्षित) या चोटी के दौरान बजट को जोखिम में डाल सकते हैं (अंतर्गत-आरक्षित)।
स्पॉट उदाहरण और प्रवीण कार्यभार: ऑन-डिमांड की तुलना में 60-90% सस्ता लेकिन मिनटों में सूचना के साथ पुनः दावा किया जा सकता है। बैच नौकरियों, विश्लेषण, प्रशिक्षण कार्यभार, या किसी भी सेवा के लिए उपयुक्त जो सुंदर बाधा के लिए डिज़ाइन किया गया है। उत्पादन उपयोगकर्ता-सामना करने वाला ट्रैफिक आमतौर पर स्पॉट से बचता है।
एक स्केलिंग पथ चुनना
आपकी वीडियो ट्रांसकोडिंग सेवा 8 मध्यम आकार के क्लाउड उदाहरण पर चलती है (प्रत्येक 8 कोर)। आप अगले 6 महीनों में 3x वृद्धि की उम्मीद करते हैं। कार्यभार CPU-बाध्य है, प्रति-वीडियो Parallelizable, & प्रत्येक वीडियो ट्रांसकोड 90 सेकंड अंत-से-अंत लेता है। आरक्षित उदाहरण ऑन-डिमांड की लागत का 50% चलाते हैं। स्पॉट उदाहरण ऑन-डिमांड की लागत का 30% चलाते हैं लेकिन 2 मिनट की सूचना के साथ समाप्त किए जा सकते हैं।
क्षमता योजना कैरियर
जहाँ क्षमता योजना कौशल भुगतान करते हैं
क्षमता योजना शायद ही कभी अपने आप में एक काम शीर्षक है। कौशल कई भूमिकाओं के तहत दिखाई देते हैं:
साइट विश्वसनीयता इंजीनियर: क्षमता योजना एक मुख्य SRE जिम्मेदारी है। अधिकांश SRE टीमों में एक या दो इंजीनियर हैं जो क्षमता में माहिर हैं, पूर्वानुमान मॉडल, छत परीक्षण, और प्रावधान स्वचालन का मालिक है।
क्लाउड लागत / FinOps इंजीनियर: क्लाउड खर्च अनुकूलन पर ध्यान केंद्रित एक नई भूमिका। क्षमता योजना को वित्तीय मॉडलिंग, अनुबंध वार्ता, और आरक्षित-उदाहरण पोर्टफोलियो प्रबंधन के साथ जोड़ता है। बड़ी क्लाउड-मूल कंपनियों में बेहद भुगतान करता है क्योंकि क्लाउड बिल अक्सर पेरोल के बाद दूसरा सबसे बड़ा खर्च होता है।
प्रदर्शन इंजीनियर: प्रति-नोड दक्षता और छत परीक्षण पर केंद्रित। नौकरी: प्रोफाइलिंग, अनुकूलन, और आर्किटेक्चर परिवर्तन के माध्यम से एक ही हार्डवेयर से अधिक क्षमता निकालें। भारी सिस्टम और भाषा-रनटाइम ज्ञान।
क्षमता योजना विशेषज्ञ: बहुत बड़ी कंपनियों पर (Google, Meta, Amazon, Netflix), समर्पित क्षमता योजना टीमें मौजूद हैं। वे पूरे बेड़े में पूर्वानुमान मॉडल का मालिक हैं, स्केल पर खरीद के लिए वार्ता करते हैं, और बहु-वर्ष हार्डवेयर रोडमैप्स पर वित्त के साथ समन्वय करते हैं।
कौशल जो यौगिक: समय-श्रृंखला विश्लेषण (R, Python statsmodels, पैगंबर), कतार सिद्धांत (M/M/1, M/M/c, Little's Law), कम से कम एक कॉन्फ़िगरेशन प्रबंधन उपकरण, कम से कम एक क्लाउड लागत डैशबोर्ड, और एक पूर्वानुमान रिपोर्ट लिखने की क्षमता जो CFO समझ सकते हैं और कार्य कर सकते हैं। तकनीकी कौशल आपको साक्षात्कार मिलता है; संचार कौशल आपको बजट मिलता है।
लपेटना
आप अब क्या जानते हैं
क्षमता योजना एक निरंतर अनुशासन है, वार्षिक व्यायाम नहीं। आप कवर किया है:
- अल्प-प्रावधान और अत्यधिक-प्रावधान के बीच गलियारा
- कार्यभार बनाम उपयोग माप के दो आयामों के रूप में
- प्रवृत्ति, मौसमीता, और अनिश्चितता सीमा हर पूर्वानुमान की तीन परतों के रूप में
- छत परीक्षण (कृत्रिम, छाया, आग ड्रिल) एकमात्र तरीका वास्तविक क्षमता जानने के लिए
- हेडरूम बफर और क्यों वे बर्बादी नहीं हैं
- विकर्ण स्केलिंग और आरक्षित/ऑन-डिमांड/स्पॉट मूल्य निर्धारण निर्णय
- कैरियर पथ जहाँ ये कौशल बजट प्राधिकार अर्जित करते हैं
दो विचार सबसे अधिक महत्वपूर्ण हैं। सीमा के साथ पूर्वानुमान, कभी एकल बिंदु के साथ नहीं। और उत्पादन इसे करने से पहले अपनी छत को मापें। उन दोनों को आगे ले जाएं और बाकी का अनुसरण करता है।
सुझाई गई पढ़ाई: अलस्पॉ की 'द आर्ट ऑफ कैपेसिटी प्लानिंग' (ओ'रीली, 2017 दूसरा संस्करण), गूगल की SRE पुस्तक में प्रासंगिक अध्याय (sre.google/books/ पर मुफ्त), और ब्रेंडन ग्रेग का 'सिस्टम प्रदर्शन' अंतर्निहित सिस्टम कार्य के लिए। ज्यामिति-of साथी पाठ गहराई से जाता है दृश्य संरचना पर: Little's Law एक क्षेत्र, कतार वक्र, प्रवृत्ति ढलान, और हेडरूम लिफाफे।