अमेज़ॅन का उपयोग करके Apache APISIX के Ecosystem और Growth को बढ़ावा दें

Chao Zhang

Chao Zhang

October 26, 2022

Ecosystem

लेखक चाओ झांग Apache APISIX के PMC सदस्य और API7.ai में एक तकनीकी विशेषज्ञ हैं। वे API7 क्लाउड के उत्पाद प्रमुख और एक ओपन-सोर्स उत्साही हैं। यह लेख "AWS समिट ग्रेटर चाइना 2022" से चाओ के साझा किए गए विषयों को संकलित करता है।

Apache APISIX

2019 में, दो सॉफ्टवेयर इंजीनियरों ने एक छोटा सा कार्यालय किराए पर लिया, एक API गेटवे प्रोजेक्ट को 0 से 1 तक बनाया, इसे ओपन-सोर्स किया, और इसे Apache सॉफ्टवेयर फाउंडेशन को दान कर दिया। यह प्रोजेक्ट, APISIX, बाद में एक टॉप-लेवल Apache प्रोजेक्ट और सबसे लोकप्रिय ओपन-सोर्स API गेटवे प्रोजेक्ट बन गया, जिसमें एक सक्रिय समुदाय और तेजी से विकास हुआ। ये दो इंजीनियर, जिन्होंने API7.ai की स्थापना की, अब दुनिया भर के कई समान विचारधारा वाले लोगों के साथ जुड़ गए हैं, और Apache APISIX में योगदान कर रहे हैं, इसे API प्रबंधन के क्षेत्र में एक चमकता सितारा बना रहे हैं।

अंतिम प्रदर्शन और समृद्ध एक्सटेंशन

APISIX का जन्म से ही एक क्लाउड-नेटिव API गेटवे के रूप में उच्च प्रदर्शन की मांग रही है। इसलिए, Apache APISIX का उपयोग करते समय, उपयोगकर्ताओं का सबसे सीधा अनुभव इसकी उच्च प्रदर्शन और कम विलंबता होती है। साथ ही, सुविधाओं के मामले में, APISIX में ट्रैफिक को संभालने की व्यापक क्षमता है। इसलिए, APISIX का उपयोग अक्सर कैनरी रिलीज और ब्लू-ग्रीन डिप्लॉयमेंट के लिए किया जाता है। इसके अलावा, APISIX में API सुरक्षा के संबंध में पहचान प्रमाणीकरण की सुविधा भी है, और यह विभिन्न प्रमाणीकरण विधियों को सपोर्ट करता है, जैसे JWT Auth, HMAC Auth, Open ID Connect प्रोटोकॉल आदि।

इसके अलावा, APISIX एक्सटेंशन और कस्टम डेवलपमेंट पर काम करने वाले डेवलपर्स के लिए अनुकूल है। APISIX स्वयं Lua को सपोर्ट कर सकता है, लेकिन आप APISIX Plugin Runner का उपयोग करके उच्च-स्तरीय भाषाओं जैसे Java, Go, Python और WebAssembly का उपयोग करके APISIX को एक्सटेंड कर सकते हैं। मल्टी-लैंग्वेज प्लगइन्स के समर्थन के साथ, आप बिना किसी अतिरिक्त सीखने की लागत के कस्टम डेवलपमेंट कर सकते हैं।

विविध इकोसिस्टम और सक्रिय ओपन-सोर्स समुदाय

APISIX के पास इकोसिस्टम के संबंध में कई कार्य हैं और इसने कई अलग-अलग प्रकार के प्रोजेक्ट्स पर आधारित एकीकृत डेवलपमेंट किया है। APISIX के मुख्य रिपॉजिटरी में 70 से अधिक अलग-अलग प्लगइन्स हैं।

आप इन प्लगइन्स का उपयोग करके AWS जैसे प्लेटफॉर्म्स के साथ तेजी से एकीकरण और डिप्लॉयमेंट प्राप्त कर सकते हैं, और ये उपयोगकर्ताओं के उपयोग के दौरान अतिरिक्त डेवलपमेंट लागत को कम करने में भी मदद कर सकते हैं।

इसके अलावा, APISIX समुदाय के मासिक योगदानकर्ताओं की संख्या आमतौर पर लगभग 30 पर बनी रहती है, जो एक बहुत ही सक्रिय संख्या है। APISIX के Github रिपॉजिटरीज़ में, आप बहुत सारे समुदाय उपयोगकर्ताओं को Discussion में मुद्दों, PRs और प्रश्नों का उत्तर देने और हल करने में मदद करते हुए देख सकते हैं। सकारात्मक समुदाय वातावरण उत्पाद के उन्नयन को तेज करने और इकोसिस्टम को समृद्ध करने में भी मदद करता है।

इसलिए, APISIX ने दुनिया भर में एंटरप्राइज़ क्लाइंट्स प्राप्त करना शुरू कर दिया है, जैसे Airwallex, Sina Weibo, European Factory Platform, NASA और Nayuki आदि। इसके अलावा, अधिक से अधिक उद्यमों के उपयोग और योगदान के कारण, APISIX जनता के लिए और अधिक जाना जाने लगा है। वर्तमान में, APISIX के योगदानकर्ताओं की संख्या 300 से अधिक हो गई है, और समय के साथ APISIX से संबंधित सभी ओपन-सोर्स प्रोजेक्ट्स के योगदानकर्ताओं की संख्या 500 से अधिक हो गई है।

github_contributors.PNG

आर्किटेक्चर अपग्रेड

उत्पाद के आर्किटेक्चर स्तर पर वापस आते हुए, APISIX का आर्किटेक्चर डेटा प्लेन + कंट्रोल प्लेन मोड का उपयोग करता है, जैसा कि निम्नलिखित छवि में दिखाया गया है।

apisix_architecture.PNG

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

multi_language_plugin_architecture.PNG

जैसा कि ऊपर उल्लेख किया गया है, मल्टी-लैंग्वेज प्लगइन्स को बाईं ओर के डेटा प्लेन के आर्किटेक्चर में एम्बेड किया जा सकता है। उदाहरण के लिए, यह उपयोगकर्ताओं को APISIX के अंदर wasm plugin मॉड्यूल के माध्यम से C++ या Rust जैसी प्रोग्रामिंग भाषाओं का उपयोग करके APISIX को एक्सटेंड करने की अनुमति देता है। इसके अलावा, दाईं ओर यह दिखाया गया है कि कैसे Plugin Runner के आधार पर APISIX को एक्सटेंड किया जा सकता है। यह APISIX से अनुरोधों को पारंपरिक Unix domain socket के माध्यम से RPC तरीके से प्राप्त करने के लिए भाषा-विशिष्ट Plugin Runner (जैसे Java Plugin Runner) को कॉल करेगा और APISIX को इस ट्रैफिक को संभालने में मदद करेगा।

Amazon पर APISIX की खोज

वर्तमान में, APISIX ने Amazon पर उत्पादों और प्रदर्शन के संबंध में कुछ खोज की है।

Amazon Marketplace

apisix_amazon_market.PNG नोट: API7.ai को Zhiliu Technology के रूप में भी जाना जाता है

यदि आप Amazon Marketplace में APISIX खोजते हैं, तो आपको उपरोक्त परिणाम दिखाई देंगे। यह 2021 से प्लेटफॉर्म पर सूचीबद्ध है। उपरोक्त सॉफ्टवेयर का उपयोग करके, आप सभी Amazon EC2 इंस्टेंस पर APISIX को तेजी से डिप्लॉय कर सकते हैं। इसके अलावा, यह सॉफ्टवेयर मुफ्त है, इसलिए आपको केवल EC2 इंस्टेंस शुल्क का भुगतान करना होगा।

यह सॉफ्टवेयर EC2 इंस्टेंस में एक APISIX और एक etcd इंस्टेंस चलाएगा। इसलिए, यह मौजूदा Amazon उपयोगकर्ताओं के लिए अधिक उपयुक्त है जब आप सीधे APISIX का उपयोग करना चाहते हैं, या POC(Proof of Concept) का उपयोग करके यह सत्यापित करना चाहते हैं कि APISIX आपके लक्षित परिदृश्यों की आवश्यकताओं को पूरा करता है या नहीं।

CDK APISIX

CDK Amazon द्वारा प्रदान किया गया एक ओपन-सोर्स सॉफ्टवेयर डेवलपमेंट फ्रेमवर्क है जो उपयोगकर्ताओं को कोडिंग के माध्यम से क्लाउड इंफ्रास्ट्रक्चर को मैनिपुलेट करने में मदद करता है।

APISIX समुदाय के कमिटर, Pahud Hsieh ने CDK के आधार पर cdk-apisix विकसित किया। यह प्रोजेक्ट उपयोगकर्ताओं को कोडिंग और ऑटोमेशन तरीकों से APISIX इंस्टेंस बनाने की अनुमति देता है। जैसा कि हमने ऊपर उल्लेख किया है, यह AWS Fargate पर सीधे APISIX को डिप्लॉय कर सकता है। इसलिए, हम कुछ ऐसे परिदृश्यों में ऑटोमैटिक डिप्लॉयमेंट और डिस्ट्रक्शन प्राप्त कर सकते हैं जिन्हें इवेंट ट्रिगर्स की आवश्यकता होती है। पूरी प्रक्रिया में किसी भी मैन्युअल ऑपरेशन की आवश्यकता नहीं होती है और यह अधिक प्रतिक्रियाशील भी हो जाती है।

aws-cdk.PNG

उपरोक्त आर्किटेक्चर के आधार पर, क्लाइंट का ट्रैफिक क्लाउड ELB के माध्यम से APISIX को निर्देशित किया जाएगा, और APISIX इसके बाद कुछ बुनियादी प्रोसेसिंग करेगा, जैसे प्रमाणीकरण, रेट लिमिटिंग आदि। फिर, अंत में, ट्रैफिक को बैकएंड में वास्तविक एप्लिकेशन इंस्टेंस पर भेजा जाएगा।

CDK विधि का उपयोग करके, उपयोगकर्ता अपनी परिचित कोडिंग भाषाओं का उपयोग करके Apache APISIX को डिप्लॉय कर सकते हैं, और यह इन उच्च-स्तरीय भाषाओं के गुणों का उपयोग करके Amazon पर APISIX को अधिक सुविधाजनक तरीके से डिप्लॉय कर सकता है। इसके अलावा, उपयोग के पहलू में, जब आप डिप्लॉयमेंट का एक टेम्प्लेट कॉन्फ़िगरेशन पूरा कर लेते हैं, तो इसे कॉपी और कस्टमाइज़ किया जा सकता है। इसलिए, आप भविष्य में जब भी इस टेम्प्लेट कॉन्फ़िगरेशन की आवश्यकता होगी, इसे सीधे उपयोग कर सकते हैं ताकि आप डिप्लॉयमेंट प्रक्रिया को आसान बना सकें।

Amazon-Lambda Plugin

जब आप Lambda या Serverless का उपयोग करके एप्लिकेशन्स को डिप्लॉय करते हैं, तो संबंधित प्रोजेक्ट्स को चलाने का एक बहुत ही सस्ता तरीका होता है, और यह तत्काल स्केलिंग और कुछ अन्य बिजनेस परिदृश्यों को प्राप्त कर सकता है। एप्लिकेशन्स को इस तरीके से डिप्लॉय करने के लिए, हमें आमतौर पर एक इवेंट ट्रिगर की आवश्यकता होती है ताकि API गेटवे इवेंट ट्रिगर के लिए एक मार्ग बन सके।

जब उपयोगकर्ता APISIX के amazon-lambda प्लगइन को रूटिंग में कॉन्फ़िगर करता है, तो यह पूरे ट्रैफिक को उपयोगकर्ता द्वारा कॉन्फ़िगर किए गए Lambda फ़ंक्शन पते पर रीडायरेक्ट कर सकता है। Lambda फ़ंक्शन इन अनुरोधों को संभालेगा और परिणामों को APISIX के माध्यम से क्लाइंट को वापस भेजेगा।

यह प्लगइन Amazon IAM पहचान और Key AUth को भी सपोर्ट करता है। इस मामले में, बैकएंड पर डिप्लॉय किया गया Lambda फ़ंक्शन APISIX के साथ बेहतर तरीके से एकीकृत हो सकता है बिना सुरक्षा को खोए।

संबंधित प्रदर्शन परीक्षण

मई 2022 में, AWS Graviton 3 प्रोसेसर्स आधिकारिक तौर पर जारी किए गए। DDR5 मेमोरी के कारण, Gravition3 प्रोसेसर्स AWS Graviton2 प्रोसेसर्स की तुलना में 25% बेहतर कंप्यूट प्रदर्शन, 2x उच्च फ्लोटिंग-पॉइंट प्रदर्शन, और 50% अधिक मेमोरी बैंडविड्थ प्रदान करते हैं; Graviton3-आधारित इंस्टेंस समान प्रदर्शन के लिए तुलनीय EC2 इंस्टेंस की तुलना में 60% कम ऊर्जा का उपयोग करते हैं।

AWS Graviton3 प्रोसेसर्स के जारी होने के कुछ ही समय बाद, APISIX ने AWS Graviton3 प्रोसेसर्स पर एक पूर्ण रिग्रेशन टेस्ट किया, जिसका अर्थ है कि उपयोगकर्ता Graviton3 EC2 इंस्टेंस पर APISIX का उपयोग करने में आत्मविश्वास महसूस कर सकते हैं। कोई भी संगतता समस्या नहीं होगी। इसके अलावा, हमने AWS Graviton प्रोसेसर्स के परिवार पर प्रदर्शन परीक्षण भी किए। निम्नलिखित दो परिदृश्यों का संदर्भ लेते हुए, हमने AWS Graviton2 और AWS Graviton3 प्रोसेसर्स पर प्रदर्शन परीक्षण किए।

  • सिंगल अपस्ट्रीम: इस परिदृश्य में हम केवल सिंगल अपस्ट्रीम का उपयोग करते हैं (बिना किसी प्लगइन के), और हम मुख्य रूप से शुद्ध बैक-टू-सोर्स प्रॉक्सी मोड में APISIX के प्रदर्शन का परीक्षण करते हैं।
  • सिंगल अपस्ट्रीम + मल्टीपल प्लगइन्स: इस परिदृश्य में हम सिंगल अपस्ट्रीम और दो प्लगइन्स का उपयोग करते हैं, और हम मुख्य रूप से APISIX के प्रदर्शन का परीक्षण करते हैं जब हम limit-count और prometheus को सक्षम करते हैं, जो दो कोर प्रदर्शन-खपत प्लगइन्स हैं।

aws-graviton.PNG aws-graviton-plugin.PNG

उपरोक्त छवियों से, हम पा सकते हैं कि APISIX का प्रदर्शन स्थिरता या ट्रैफिक संभालने की क्षमता के मामले में बहुत ही उत्कृष्ट है। AWS Graviton3 प्रोसेसर्स API गेटवे जैसे IO-गहन कंप्यूट परिदृश्यों में 76% बेहतर प्रदर्शन प्रदान करते हैं और 38% तक विलंबता को कम करते हैं। यह डेटा AWS द्वारा प्रदान किए गए उपरोक्त आधिकारिक डेटा (25% प्रदर्शन बूस्ट) से भी बेहतर प्रदर्शन दिखाता है।

performance-comparison.PNG

सामान्य तौर पर, AWS Graviton3 जैसे उच्च-प्रदर्शन प्रोसेसर्स पर APISIX का उपयोग करने में इसका प्रदर्शन बहुत ही उत्कृष्ट है। वास्तविक बिजनेस में, APISIX दक्षता को बढ़ाने और संसाधनों और लागत को कम करने में मदद कर सकता है।

API7 क्लाउड Amazon का उपयोग करके उत्पाद विकास को कैसे तेज करता है?

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

API7 क्लाउड APISIX पर आधारित एक SaaS सेवा है और उपयोगकर्ताओं को किसी भी क्लाउड प्लेटफॉर्म पर डिप्लॉय किए गए सभी SaaS उत्पादों को जोड़ने में मदद करता है। API7 क्लाउड पहली बार मार्च 2022 में जारी किया गया था और उपयोगकर्ताओं को एक उपयोग में आसान API प्रबंधन सुविधा, लचीली और समृद्ध ऑब्जर्वेबिलिटी मेट्रिक्स, और API सुरक्षा प्रदान करता है, जो API कनेक्शन को अधिक कुशल, सुरक्षित और विश्वसनीय बनाता है।

यह उत्पाद उपयोगकर्ताओं से API कॉल्स की संख्या के आधार पर शुल्क लेता है, और वर्तमान में, यह डेटा प्लेन को डिप्लॉय करने के लिए दो तरीकों को सपोर्ट करता है। पहला तरीका सेल्फ-होस्ट है, जिसका अर्थ है कि उपयोगकर्ता अपने इंफ्रास्ट्रक्चर तैयार करते हैं और APISIX को इंफ्रास्ट्रक्चर पर डिप्लॉय करते हैं ताकि APISIX API7 क्लाउड के साथ संचार कर सके। दूसरा तरीका सेमी-मैनेज्ड है, जिसे सेमी-होस्टेड भी कहा जाता है। पहले, उपयोगकर्ताओं को API7 क्लाउड को अपने क्लाउड अकाउंट (जैसे Amazon अकाउंट) को प्रबंधित करने के लिए अधिकृत करना होगा। फिर वे API7 क्लाउड कॉन्फ़िगरेशन पैनल पर एक क्लिक के साथ APISIX को अपने अकाउंट के तहत सभी इंफ्रास्ट्रक्चर पर डिप्लॉय कर सकते हैं।

वर्तमान में, पूरे API7 क्लाउड कंपोनेंट्स AWS पर होस्ट किए गए हैं और AWS सेवाओं का उपयोग कर रहे हैं; उत्पाद आर्किटेक्चर नीचे दिखाया गया है: api7_cloud.png

उपरोक्त छवि से, APISIX के साथ डेटा प्लेन को विभिन्न क्लाउड प्लेटफॉर्म्स पर डिप्लॉय किया जा सकता है, और यह उपयोगकर्ता के इंफ्रास्ट्रक्चर या डेटा सेंटर पर भी डिप्लॉय किया जा सकता है। API7 क्लाउड की ओर, यह मुख्य रूप से ऑब्जर्वेबिलिटी, बुनियादी API प्रबंधन, और सुरक्षा जैसे महत्वपूर्ण गुण प्रदान करता है।

Amazon की सेवाओं का उपयोग करके, API7 क्लाउड का उत्पाद प्रदर्शन बेहतर हो गया है।

सबसे पहले, APISIX Amazon EKS सेवा पर निर्भर करता है। एक नए SaaS उत्पाद के रूप में, API7 क्लाउड को शुरू से ही K8s पर डिप्लॉय किया गया था। इसलिए, हम सभी कंपोनेंट्स को EKS क्लस्टर्स पर डिप्लॉय करते हैं; इस प्रकार, हम क्लाउड द्वारा प्रदान की गई कुछ क्षमताओं का उपयोग कर सकते हैं। इसके अलावा, प्रत्येक उपयोगकर्ता के पास अलग-अलग कंपोनेंट्स होंगे, और कोई भी व्यक्तिगत कंपोनेंट क्लस्टर के अंदर चल सकता है। इसलिए, हमने NetworkPolicy पर विकसित टेनेंट आइसोलेशन विधि का उपयोग करके कुछ नेटवर्क आइसोलेशन किया है, ताकि यह सुनिश्चित किया जा सके कि इन टेनेंट्स के नेमस्पेस एक-दूसरे तक पहुंच नहीं सकते। इस सेवा में, हम APISIX Ingress Controller को गेटवे के रूप में उपयोग करते हैं ताकि पूरे ऑपरेशन को सुचारू रूप से चलाया जा सके।

APISIX Ingress Controller Ingress कंट्रोलर का एक कार्यान्वयन है, जो उपयोगकर्ताओं को कॉन्फ़िगर किए गए नियमों को APISIX नियमों में परिवर्तित करने की अनुमति देता है ताकि APISIX वास्तविक ट्रैफिक को संभाल सके।

दूसरा, उत्पाद में सबसे महत्वपूर्ण कंपोनेंट के रूप में, API7 क्लाउड ने Amazon RDS(Postgre SQL) को डेटाबेस के रूप में चुना है। हम उपयोगकर्ताओं के मेटाडेटा को RDS में संग्रहीत करते हैं, जैसे API का स्रोत डेटा और उपयोगकर्ता क्रियाएं। एक SaaS उत्पाद के रूप में, हमें यह जानने की आवश्यकता है कि एक उपयोगकर्ता हमारे उत्पाद का उपयोग कैसे करता है और यह निर्धारित करना है कि क्या हमारे उत्पाद के लेआउट और डेवलपर्स के उपयोगकर्ता अनुभव में कोई समस्या है ताकि हम अपने उत्पाद के भविष्य की दिशा निर्धारित कर सकें।

हम API7 क्लाउड में Amazon ElasticCache कंपोनेंट का भी उपयोग करते हैं और मास्टर-स्लेव मोड में Redis का चयन करते हैं। Redis का उपयोग मुख्य रूप से डेटा प्लेन के इंस्टेंस की स्थिति को संग्रहीत करने के लिए किया जाता है, जो APISIX के API7 क्लाउड से जुड़ने पर समय-समय पर क्लाउड को भेजा जाने वाला स्थिति डेटा है। चूंकि डेटा न तो संवेदनशील है और न ही महत्वपूर्ण है, और डेटा प्लेन को कंट्रोल प्लेन के साथ लगातार संचार करने की आवश्यकता होती है, इसलिए हमने यहां एक रिलेशनल डेटाबेस का चयन नहीं किया है।

इसके अलावा, इस कंपोनेंट का एक और महत्वपूर्ण उपयोग है: इसे एक मैसेज क्यू के रूप में माना जा सकता है। Redis 5.0 Stream डेटा संरचना को पेश करता है, इसलिए हम इसे एक सुपर लाइटवेट मैसेज क्यू के रूप में उपयोग कर सकते हैं ताकि उपयोगकर्ता डेटा को अधिक तेजी से बना सकें, मैनिपुलेट कर सकें और नष्ट कर सकें।

निष्कर्ष

यह लेख APISIX-संबंधित प्रोजेक्ट्स के परिप्रेक्ष्य से उपयोगकर्ता अनुभव साझा करता है। Amazon की सेवाओं और इकोसिस्टम के समर्थन के साथ, APISIX ने अपने इकोसिस्टम की और खोज की है। हम आशा करते हैं कि APISIX और Amazon के बीच और अधिक रोचक एकीकरण होंगे और साथ में एक बेहतर इकोसिस्टम विकसित करेंगे।

Tags: