हमारी राय

नेटवर्क-स्तर की रेट लिमिटिंग वह क्या हल करती है जो प्रति कुंजी सीमाएँ नहीं करतीं

केवल API कुंजी से जुड़ी रेट लिमिट एक चुपचाप मान्यता बनाती है: कि एक कुंजी एक वैध उपयोगकर्ता के बराबर है, जो उसे एक उचित रूप से अनुमान योग्य तरीके से इस्तेमाल करता है। यह मान्यता डिज़ाइन की अपेक्षा से कहीं ज़्यादा बार टूटती है। एक कुंजी किसी टीम में साझा की जा सकती है, किसी क्लाइंट-साइड ऐप में एम्बेड की जा सकती है जहाँ कई अलग-अलग विज़िटर एक ही क्रेडेंशियल के तहत अनुरोध ट्रिगर करते हैं, या कोई व्यक्ति जो एक कुंजी की सीमा से बचने के लिए कई कुंजियाँ जमा करने की खास कोशिश कर रहा हो, उसे कई बार बना सकता है।

हम ठीक इसी वजह से कुंजी स्तर के साथ-साथ नेटवर्क स्तर पर भी रेट लिमिट लगाते हैं। हर नेटवर्क, IPv4 के लिए एक /24 ब्लॉक या IPv6 के लिए एक /48 ब्लॉक, को प्रतिदिन 2,500 अनुरोधों का मुफ़्त कोटा मिलता है जो बिना कुंजी वाले उपयोग और उस नेटवर्क के पतों से रजिस्टर की गई किसी भी कुंजी के बीच साझा होता है। कोई व्यक्ति एक ही नेटवर्क से दस कुंजियाँ बनाकर अपना मुफ़्त कोटा दस गुना नहीं कर सकता, क्योंकि नेटवर्क-स्तर की ऊपरी सीमा उस पैटर्न को पकड़ लेती है, चाहे उसके नीचे कितनी भी अलग-अलग कुंजियाँ हों।

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

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

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