← All posts

स्केल-टू-ज़ीरो एक तक गिन नहीं सकता

Authagonal·July 6, 2026
authinfrastructurekubernetesaksserverlessazurearchitecture

सलाह हमेशा एक जैसी ही रही। आपका ऑथ ट्रैफ़िक अचानक उछाल वाला है। आपका Kubernetes क्लस्टर ज़्यादातर शांत रहता है। Azure Container Apps शून्य तक स्केल करता है और आप जो उपयोग करते हैं उसी के लिए शुल्क लेता है। आप एक ऐसे क्लस्टर के लिए चौबीसों घंटे भुगतान कर रहे हैं जो अपना अधिकांश जीवन प्रतीक्षा में बिताता है।

हमने इसे इतनी गंभीरता से लिया कि माइग्रेशन की लागत ठीक से आँक ली। फिर हमने उसे रद्द कर दिया। कटओवर की कीमत की वजह से नहीं, और न ही कोल्ड स्टार्ट की वजह से, हालाँकि अकेले कोल्ड स्टार्ट ही काफ़ी होने चाहिए थे। हमने उसे इसलिए रद्द किया क्योंकि प्लेटफ़ॉर्म की शब्दावली में एक संख्या ग़ायब है, और वही एकमात्र संख्या है जिसकी हमारे ऑथ कोर को वास्तव में परवाह है।

सर्वरलेस शून्य तक और N तक गिनता है

स्केल-टू-ज़ीरो रनटाइम दो संख्याएँ जानते हैं। शून्य, जब कोई कॉल नहीं कर रहा होता। N, जब कॉल आ रही होती हैं, और N माँग के साथ घटता-बढ़ता है। स्टेटलेस अनुरोधों के लिए यह शब्दावली एकदम सही है, इसीलिए यह सलाह इतनी सही लगती है। अधिकांश वेब बैकएंड वाकई उसी आकार के होते हैं: हर अनुरोध स्वतंत्र, हर इंस्टेंस डिस्पोजेबल, शून्य ट्रैफ़िक शून्य बिल का हकदार।

एक ऑथ सिस्टम का सार्वजनिक चेहरा भी ऐसा ही दिखता है। टोकन एंडपॉइंट, लॉगिन पेज, JWKS। स्टेटलेस, उछाल वाला, कैश-फ्रेंडली।

लेकिन उसके नीचे एक परत है जो इनमें से कुछ भी नहीं है।

वह संख्या एक है

एंडपॉइंट के नीचे, हमारा बैकप्लेन एक समन्वय परत चलाता है। किसी भी क्षण ठीक एक प्रतिकृति क्लस्टर नेतृत्व का पट्टा (lease) रखती है (आजकल एक ब्लॉब पट्टा, gossip नहीं, जो एक और पोस्ट की कहानी है) और सिंगलटन जॉब चलाती है: रिटेंशन स्वीप, वेबहुक डिलीवरी पास, वह काम जहाँ दो समवर्ती रनर का मतलब है दो बार चले साइड इफ़ेक्ट, और शून्य रनर का मतलब है कि चीज़ें चुपचाप कभी होती ही नहीं।

उस परत को जिस संख्या की ज़रूरत है वह एक है। शांत समय में शून्य नहीं। लोड में N नहीं। एक, लगातार बनाए रखा हुआ, और धारक के मरने पर सत्यापन-योग्य हैंडओवर के साथ। स्केल-टू-ज़ीरो के पास "एक, हमेशा" कहने का कोई तरीका नहीं है। वह "ट्रैफ़िक होने तक कम से कम एक" कह सकता है, जो एक अलग वादा है, और इन दो वादों के बीच का अंतर ठीक वही विफलता है जिसे रोकने के लिए ही लीडर चुनाव मौजूद है।

इसीलिए उपयोगिता ग्राफ़ हमसे झूठ बोल रहा था। एक शांत ऑथ क्लस्टर खाली नहीं बैठा है। वह एक पट्टा थामे हुए है, साइनिंग कुंजियों को गर्म रखे हुए है, और कुछ ही मिलीसेकंड में अगले टोकन सत्यापन का जवाब देने के लिए तैयार खड़ा है। शांत और निष्क्रिय अलग-अलग अवस्थाएँ हैं, और बिलिंग डैशबोर्ड आपको उनमें से केवल एक दिखाते हैं।

आप इसका दिखावा कर सकते हैं, और वह और भी बुरा है

आप सर्वरलेस रनटाइम पर "ठीक एक" थोप सकते हैं। न्यूनतम प्रतिकृतियों को एक पर पिन कीजिए और आपने एक ऐसे प्लेटफ़ॉर्म पर हमेशा-चालू सर्वर खरीद लिया है जिसकी पूरी प्रवृत्ति ही शांत इंस्टेंस आपसे छीन लेने की है। हर स्केल इवेंट, हर प्लेटफ़ॉर्म-आरंभित पुनरारंभ, हर रिवीज़न स्वैप एक नेतृत्व का सवाल बन जाता है जिसके समय पर आपका नियंत्रण नहीं है। हम अपने व्यवहार को बचाने के लिए रनटाइम के मूल व्यवहार से हमेशा लड़ते रहेंगे, और इस "सुविधा" के लिए भुगतान भी करेंगे।

और विफलता सबसे ग़लत व्यक्ति पर पड़ती है। कोल्ड स्टार्ट की कीमत चुकाने वाला अनुरोध एक इंसान है जो लॉग इन करने की कोशिश कर रहा है। "आपका साइन-इन धीमा था क्योंकि हमारी ऑथ सेवा सो रही थी" ऐसा वाक्य किसी को भी शिप नहीं करना चाहिए।

बिल का समाधान उबाऊ निकला

और वह पैसा जिससे यह सब शुरू हुआ? एक शेड्यूलर और एक SKU से ही काम हो गया। जब कोई उपयोग नहीं कर रहा होता तो देव क्लस्टर अब डीएलोकेट हो जाता है, और नोड पूल एक सस्ते SKU पर चला गया। यह बस एक पैराग्राफ के लायक है, और यही असली बात है: "निष्क्रियता के लिए भुगतान बंद करो" एक लक्ष्य है, आर्किटेक्चर नहीं, और अधिकांश लक्ष्य री-प्लेटफ़ॉर्मिंग के बजाय एक कॉन्फ़िगरेशन बदलाव से ही हासिल हो गया।

आकार की कसौटी

हमने जो नियम रखा: रनटाइम को वर्कलोड के वास्तविक आकार से मिलाइए, उसके ट्रैफ़िक ग्राफ़ से नहीं। सर्वरलेस स्टेटलेस और उछाल वाले काम को पुरस्कृत करता है। वह हर उस चीज़ को दंडित करता है जिसे एक सतत, अनन्य भूमिका निभानी होती है, और एक ऑथ कोर जो साइनिंग कुंजियों की रक्षा करता है और यह चुनता है कि विनाशकारी जॉब कौन चलाएगा, उस दूसरी किस्म का सबसे शुद्ध उदाहरण है जो हम जानते हैं।

हम सर्वरलेस के ख़िलाफ़ नहीं हैं। हमारी स्टेटलेस सतह का बड़ा हिस्सा उस पर आराम से रह सकता है। लेकिन जिस परत को ठीक एक तक गिनना है, वह उबाऊ, हमेशा-चालू, निरीक्षण-योग्य बुनियादी ढाँचे पर ही बनी रहेगी।

और यही वह परत है जिसे चलाना आप छोड़ देते हैं, जब आप बैकप्लेन खुद चलाने के बजाय Authagonal पर ऑथ चलाते हैं।