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