विश्वसनीय APIs बनाने के लिए सर्वोत्तम प्रथाएं

Navendu Pottekkat

Navendu Pottekkat

August 18, 2022

Technology

जैसे-जैसे आपके API स्केल होते हैं, उन्हें विश्वसनीय और मजबूत बनाने की आवश्यकता बढ़ती जाती है।

यह लेख API गेटवे नामक एक विशेष प्रकार के रिवर्स प्रॉक्सी को पेश करके विश्वसनीय API बनाने के सर्वोत्तम अभ्यासों पर चर्चा करता है।

हम निम्नलिखित पर विचार करेंगे:

  1. पारंपरिक API डिज़ाइन की समस्याएं
  2. API गेटवे क्या हैं
  3. API गेटवे API को कैसे बेहतर बनाते हैं और
  4. API गेटवे का उपयोग करके पैटर्न और उदाहरण

लेकिन पहले, "विश्वसनीय" API क्या हैं?

एक API को विश्वसनीय क्या बनाता है?

एक सेवा प्रदाता के रूप में, आपके पास अपने ग्राहकों के साथ सेवा-स्तरीय समझौते (SLAs) हो सकते हैं, जो आमतौर पर अपटाइम में उद्धृत होते हैं—वह समय जब सेवा ऑनलाइन और संचालन में होने की गारंटी होती है।

अपटाइम विश्वसनीयता का एक संकीर्ण दृष्टिकोण है। यह समझने के लिए कि विश्वसनीय होने का क्या अर्थ है, आपको उन कारकों को देखना होगा जो अपटाइम को प्रभावित करते हैं। एक बार जब आप इन कारकों को समझ लेते हैं, तो आप विश्वसनीय सेवाएं बनाने की बेहतर स्थिति में होंगे।

आइए इन कारकों और उनके द्वारा उठाए गए प्रश्नों को देखें:

  1. लेटेंसी: आपका API अनुरोधों का जवाब कितनी तेजी से देता है?
  2. सुरक्षा: आपके API तक कौन पहुंच सकता है? क्या यह सुरक्षित है?
  3. डाउनटाइम आवृत्ति: आपका API कितनी बार डाउन होता है?
  4. संगति: क्या आपके API एंडपॉइंट्स स्थिर हैं? क्या उपभोक्ताओं को अपना कोड अक्सर बदलने की आवश्यकता होती है?
  5. मॉनिटरिंग और रिपोर्टिंग: क्या आप अपने API में समस्याओं और विफलताओं का निरीक्षण कर सकते हैं? क्या आप उन्हें अपने उपभोक्ताओं को रिपोर्ट कर रहे हैं?

नेटवर्क त्रुटि/api.png

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

API गेटवे, एकीकृत प्रवेश बिंदु

एक API गेटवे आपके क्लाइंट और आपके API के बीच एक मध्यस्थ के रूप में कार्य करता है। यह सभी ट्रैफिक (API कॉल) को रिवर्स प्रॉक्सी की तरह स्वीकार करेगा, अनुरोध को आपके बैकएंड में आवश्यक सेवाओं तक फॉरवर्ड करेगा, और आवश्यक परिणाम वापस करेगा।

नेटवर्क त्रुटि/api gateway.png

एक API गेटवे वह केंद्रीय बिंदु हो सकता है जो सभी प्रमाणीकरण, सुरक्षा, ट्रैफिक नियंत्रण, और मॉनिटरिंग संबंधी चिंताओं को संभालता है, जिससे API डेवलपर्स को व्यावसायिक आवश्यकताओं पर ध्यान केंद्रित करने और विश्वसनीयता को बेहतर बनाने में आसानी होती है।

नेटवर्क त्रुटि/api gateway reliability.png

बहुत सारे ओपन सोर्स और प्रबंधित API गेटवे ऑफरिंग्स उपलब्ध हैं। इस लेख में, मैं Apache APISIX का उपयोग करूंगा।

निम्नलिखित अनुभाग में API गेटवे का उपयोग करके अपने API को विश्वसनीय बनाने के लिए कुछ सर्वोत्तम अभ्यासों का वर्णन किया जाएगा।

API गेटवे के साथ विश्वसनीयता के सर्वोत्तम अभ्यास

हम वास्तविक कार्यान्वयन की तुलना में अधिक अंतर्निहित पैटर्न पर ध्यान केंद्रित करेंगे, क्योंकि यह आपके API गेटवे चुनाव के आधार पर भिन्न हो सकता है।

मैं इन पैटर्न को तीन श्रेणियों में विभाजित करूंगा:

  1. प्रमाणीकरण और सुरक्षा
  2. मॉनिटरिंग और ऑब्जर्वेबिलिटी
  3. संस्करण नियंत्रण और शून्य डाउनटाइम

हम नीचे प्रत्येक श्रेणी को विस्तार से देखेंगे।

प्रमाणीकरण और सुरक्षा

उपयोगकर्ता प्रमाणीकरण

API गेटवे के साथ प्रमाणित अनुरोध क्लाइंट-API इंटरैक्शन को सुरक्षित करते हैं। एक बार क्लाइंट प्रमाणित हो जाने के बाद, आपका API गेटवे प्राप्त क्लाइंट विवरण का उपयोग सूक्ष्म नियंत्रण के लिए कर सकता है।

नेटवर्क त्रुटि/user authentication.png

APISIX प्रमाणीकरण को सीधे key-auth और jwt-auth जैसे प्लगइन्स के माध्यम से संभालता है। APISIX OAuth प्रमाणीकरण और रोल-आधारित एक्सेस कंट्रोल सिस्टम जैसे wolf को openid-connect और wolf-rbac प्लगइन्स के माध्यम से समर्थन करता है।

दर सीमित करना

जानबूझकर (DoS हमले) और अनजाने में (क्लाइंट द्वारा बहुत अधिक अनुरोध करना) आपके API पर ट्रैफिक स्पाइक्स उन्हें ताश के पत्तों की तरह गिरा सकते हैं। दर सीमित करना सेट करने से आपके सिस्टम की विश्वसनीयता ऐसे परिदृश्यों को संभालने में सुधार होगी।

आप अपने API गेटवे पर दर सीमित करना सेट कर सकते हैं, और यदि अनुरोधों की संख्या एक सीमा से ऊपर बढ़ जाती है, तो API गेटवे अतिरिक्त अनुरोधों को विलंबित या अस्वीकार कर सकता है।

नेटवर्क त्रुटि/rate limiting.png

APISIX के साथ, आप तीन प्लगइन्स में से किसी का उपयोग करके अनुरोधों की संख्या, प्रति क्लाइंट समवर्ती अनुरोधों की संख्या, और गिनती (limit-req, limit-conn, limit-count) के आधार पर दर सीमित करना कॉन्फ़िगर कर सकते हैं।

मॉनिटरिंग और ऑब्जर्वेबिलिटी

आपके API की विश्वसनीयता और आपकी मॉनिटरिंग सेटअप हाथ में हाथ डालकर चलते हैं। और आप अपने API गेटवे पर मॉनिटरिंग सेट करके अपनी विश्वसनीयता मेट्रिक्स को मॉनिटर कर सकते हैं।

नेटवर्क त्रुटि/monitoring and observability.png

API लॉग और ट्रेस एक API कॉल के बारे में विस्तृत जानकारी प्रदान करते हैं। यह जानकारी आपको यह जानने में मदद करेगी कि आपका API कब विफल हुआ है या त्रुटि हुई है जितनी जल्दी हो सके। चुपचाप विफल होने से अनसुलझी त्रुटियां हो सकती हैं जो भविष्य में समस्याएं पैदा कर सकती हैं।

कुछ कॉन्फ़िगरेशन के साथ, आप भविष्य के लिए ट्रैफिक का अनुमान लगाने और पूर्वानुमान लगाने में सक्षम होंगे, जिससे आप विश्वसनीय रूप से स्केल कर सकेंगे।

APISIX में प्लगइन्स हैं जो लॉगिंग (Apache SkyWalking, RocketMQ), मेट्रिक्स (Prometheus, Datadog), और ट्रेसिंग (OpenTelemetry, Zipkin) प्लेटफॉर्म/स्पेसिफिकेशन के साथ इंटीग्रेट होते हैं। आप APISIX प्लगइन्स के साथ API ऑब्जर्वेबिलिटी पर अधिक पढ़ सकते हैं।

संस्करण नियंत्रण और शून्य डाउनटाइम

कैनरी रिलीज़

जब आप अपने API के नए संस्करणों पर स्विच करते हैं, तो आपको यह सुनिश्चित करना होगा कि आप अपना ट्रैफिक न गिराएं। क्लाइंट अभी भी आपके API को अनुरोध भेज सकते हैं और सही प्रतिक्रिया प्राप्त कर सकते हैं।

एक API गेटवे के साथ, आप कैनरी रिलीज़ सेट कर सकते हैं। यह सुनिश्चित करेगा कि आपका API संक्रमण के दौरान कार्यात्मक रहे, और यदि कोई समस्या होती है तो आप पुराने संस्करण पर वापस लौट सकते हैं।

शुरू में, API गेटवे सभी ट्रैफिक को आपके API के पुराने संस्करण पर रूट करेगा।

नेटवर्क त्रुटि/old version.png

जब आपके पास एक नया संस्करण होता है, तो आप API गेटवे को कॉन्फ़िगर कर सकते हैं कि वह आपके ट्रैफिक का कुछ हिस्सा इस नए संस्करण पर रूट करे। आप अपनी नई सेवा पर ट्रैफिक का प्रतिशत बढ़ाते रह सकते हैं और जांच सकते हैं कि सब कुछ अपेक्षित रूप से काम कर रहा है या नहीं।

नेटवर्क त्रुटि/canary release.png

अंत में, आप सभी ट्रैफिक को अपने नए API पर रूट कर सकते हैं।

नेटवर्क त्रुटि/new API

APISIX ट्रैफिक-स्प्लिट प्लगइन का उपयोग करता है जो आपको अपनी सेवाओं पर ट्रैफिक को नियंत्रित करने देता है। आप इसका उपयोग कैनरी रिलीज़ या अपनी कस्टम रिलीज़ कॉन्फ़िगरेशन सेट करने के लिए कर सकते हैं।

सर्किट ब्रेकिंग

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

जैसे इलेक्ट्रिकल सर्किट ब्रेकर एक सर्किट से दोषपूर्ण घटकों को अलग करते हैं, API गेटवे में एक सर्किट ब्रेकर सुविधा होती है जो दोषपूर्ण सेवाओं को डिस्कनेक्ट करती है, जिससे सिस्टम स्वस्थ रहता है। इन सेवाओं पर ट्रैफिक को रीरूट या विलंबित किया जाता है जब तक कि सेवा स्वस्थ न हो जाए।

नेटवर्क त्रुटि/circuit breaking.png

APISIX में एक api-breaker प्लगइन होता है जो इस पैटर्न को लागू करता है।

रीडायरेक्ट्स

जैसे-जैसे आप अपने API को अपडेट करते हैं, उनके एंडपॉइंट्स में कुछ बदलाव हो सकते हैं। पारंपरिक रूप से, इसका मतलब होगा कि क्लाइंट एप्लिकेशन को /old-api-endpoint के बजाय /new-api-endpoint पर अनुरोध भेजना चाहिए, जिसका अर्थ है कि आपके उपभोक्ताओं को इस API एंडपॉइंट के प्रत्येक कॉल को मैन्युअल रूप से बदलना होगा।

यदि अनपेक्षित होता है, तो यह क्लाइंट एप्लिकेशन को तोड़ सकता है।

एक API गेटवे के साथ, आप एक एब्स्ट्रैक्शन लेयर प्रदान कर सकते हैं और क्लाइंट को अपने अनुरोध बदलने के बिना /new-api-endpoint पर अनुरोध रीडायरेक्ट कर सकते हैं। उचित रीडायरेक्ट स्टेटस कोड और संदेशों के साथ, आप /old-api-endpoint को धीरे-धीरे डिप्रिसिएट कर सकते हैं बिना आपके उपभोक्ताओं को किसी डाउनटाइम का अनुभव कराए।

नेटवर्क त्रुटि/redirect.png

APISIX के साथ, आप रीडायरेक्ट प्लगइन का उपयोग करके रीडायरेक्ट कॉन्फ़िगर कर सकते हैं।

निष्कर्ष

जब विश्वसनीयता एक प्राथमिक चिंता बन जाती है, तो यह स्पष्ट है कि API गेटवे आवश्यक हैं क्योंकि अधिक संगठन अपने मोनोलिथ को माइक्रोसर्विसेज में विभाजित करते हैं और क्लाउड-नेटिव आर्किटेक्चर की ओर बढ़ते हैं।

हालांकि, इसका मतलब यह नहीं है कि API गेटवे हर किसी के लिए हैं। आपके API के आकार और उपयोग के आधार पर, एक API गेटवे अत्यधिक हो सकता है, और आप बुनियादी रूटिंग और लोड बैलेंसिंग क्षमताओं वाले रिवर्स प्रॉक्सी का उपयोग करके काम चला सकते हैं।

यहां उल्लिखित उपयोग केस केवल एक API गेटवे की क्षमताओं की सतह को छूते हैं। आप apisix.apache.org पर API गेटवे और Apache APISIX के बारे में अधिक जान सकते हैं।

Tags: