Zoom अपने Continuous Delivery Pipeline में APISIX Ingress का उपयोग कैसे करता है?

October 27, 2022

Case Study

पृष्ठभूमि

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

हालांकि, अन्य SaaS और इंटरनेट कंपनियों की तरह, Zoom को भी अपने व्यवसाय के तेजी से विस्तार के साथ तकनीकी चुनौतियों का सामना करना पड़ा है।

  • बड़ी संख्या में माइक्रोसर्विसेज: Zoom के व्यवसाय और टीमों के तेजी से विकास के कारण, 100 से अधिक बैकएंड सेवाओं को वितरित करने की आवश्यकता है। हालांकि, बड़ी संख्या में माइक्रोसर्विसेज को कुशलतापूर्वक प्रबंधित करना मुश्किल है।

  • विभिन्न डिप्लॉयमेंट वातावरण: SaaS उद्यम अक्सर ऐसे परिदृश्यों का सामना करते हैं जहां ग्राहकों को डेडिकेटेड क्लाउड, प्राइवेट क्लाउड और मल्टी-क्लाउड पर डिप्लॉय करना होता है। Zoom के व्यावसायिक सेवाएं दुनिया भर में फैली हुई हैं, इसलिए बड़ी संख्या में हाइब्रिड क्लाउड वातावरण के साथ तकनीकी चुनौतियां हैं।

  • जटिल इंफ्रास्ट्रक्चर: मध्यम और बड़े आकार के इंटरनेट उद्यमों में आमतौर पर समर्पित इंफ्रास्ट्रक्चर टीमें होती हैं जो API गेटवे, कॉन्फिगरेशन सेंटर, कुंजी प्रबंधन, लॉग्स, मॉनिटरिंग अलार्म, डेटाबेस आदि के लिए जिम्मेदार होती हैं। चूंकि Zoom के प्रबंधन R&D टीमें वैश्विक स्तर पर वितरित हैं, इसलिए इन जटिल मिडलवेयर और इंफ्रास्ट्रक्चर को निरंतर डिलीवरी पाइपलाइन में एकीकृत करना एक बड़ी चुनौती है।

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

नीचे विस्तृत कारण दिए गए हैं कि Zoom ने इन पिछले ओपन-सोर्स टूल्स को जारी नहीं रखा।

Helm/KustomizeTerraform/PulumiKubeVela + Crossplane
Kubernetes के अलावा अन्य सिस्टम से कनेक्ट करने में असमर्थKubernetes और मिडलवेयर लेयर में Terraform का उपयोग करना मुश्किल है जब तक कि अतिरिक्त Providers विकसित न किए जाएंबहुत नई तकनीक स्टैक जो तेजी से अपडेट होती है, उत्पादन वातावरण में अपनाने के लिए पर्याप्त सुरक्षित और स्थिर नहीं है
Git सब-रिपॉजिटरी मोड में प्लेटफॉर्म को केंद्रीय रूप से नियंत्रित करना मुश्किलएक और कॉन्फिगरेशन प्रबंधन भाषा: hcl सीखने की लागत बढ़ाता हैKubevela की Trait + Cuelang टेम्प्लेट्स की परिभाषा और इसकी प्रोग्रामिंग अभिव्यक्ति क्षमताएं Kubernetes सिस्टम के बाहर विभिन्न नॉन-क्लाउड-नेटिव मिडलवेयर प्लेटफॉर्म को कवर करने के लिए पर्याप्त नहीं हैं
Helm Chart टेम्प्लेट की जटिल तर्क के कारण रखरखाव और डिबग करना मुश्किलMono Repo केंद्रीय नियंत्रण मोड बल्क टीमों के लिए उपयुक्त नहीं है/
बड़ी संख्या में वातावरणों में डायनामिक पैरामीटर्स को प्रबंधित करने के लिए पर्याप्त शक्तिशाली पैरामीटर सिस्टम नहीं//

उपरोक्त ओपन-सोर्स टूल्स की सीमाओं के कारण, Zoom ने अंततः निरंतर डिलीवरी पाइपलाइन के निर्माण के लिए कुछ मुख्यधारा समाधानों की जांच की।

कुछ दौर की तुलना और सत्यापन के बाद, Zoom ने अंततः अपनी नई निरंतर डिलीवरी पाइपलाइन का समर्थन करने के लिए APISIX Ingress Controller को चुना।

Apache APISIX Ingress Controller

Apache APISIX Ingress Controller क्या है?

Apache APISIX Ingress Controller एक क्लाउड-नेटिव इन्ग्रेस कंट्रोलर है जो Apache APISIX को डेटा प्लेन के रूप में उपयोग करता है और Kubernetes के कार्यक्षमता को CRD (CustomResourceDefinition) का उपयोग करके विस्तारित करता है। यह Kubernetes API सर्वर के साथ इंटरैक्ट करने, रोल-आधारित एक्सेस कंट्रोल (RBAC) के लिए आवेदन करने, परिवर्तनों की निगरानी करने, इन्ग्रेस कंट्रोलर के भीतर ऑब्जेक्ट रूपांतरण को लागू करने, परिवर्तनों की तुलना करने और फिर Apache APISIX के साथ सिंक्रनाइज़ करने के लिए जिम्मेदार है। इसके अलावा, यह कस्टम संसाधनों का समर्थन कर सकता है, जिसमें APISIX Route, APISIX Upstream और Kubernetes के अन्य नेटिव इन्ग्रेस शामिल हैं, ताकि बाहरी ट्रैफ़िक को Kubernetes में डिप्लॉय की गई सेवाओं तक पहुंचने की अनुमति दी जा सके।

नीचे APISIX Ingress Controller का टाइमिंग डायग्राम दिया गया है।

APISIX Ingress का टाइमिंग डायग्राम

Zoom ने APISIX Ingress Controller क्यों चुना?

उपरोक्त पृष्ठभूमि के अनुसार, यह सवाल उठता है: Zoom किस प्रकार की निरंतर डिलीवरी पाइपलाइन बनाना चाहता है, और यह APISIX Ingress को अपनी निरंतर डिलीवरी पाइपलाइन के निर्माण के लिए कैसे अपनाता है?

Zoom पहले NGINX को एक API गेटवे के रूप में उपयोग करता था। हालांकि, व्यवसाय के तेजी से विकास और माइक्रोसर्विसेज की संख्या में वृद्धि के साथ, वर्तमान NGINX समाधान की सीमाएं स्पष्ट हो रही हैं।

विभिन्न टीमों को NGINX को अलग-अलग बनाए रखना पड़ता है, और हजारों लाइनों की NGINX कॉन्फिगरेशन फाइलें रखरखाव को मुश्किल बनाती हैं। इसके अलावा, क्लाउड सर्वर पर बड़ी संख्या में लाइनों को डिप्लॉय करते समय NGINX तेजी से स्केल नहीं कर सकता। NGINX के रीलोडिंग मोड के बारे में, आप इस ब्लॉग को देख सकते हैं। Zoom के व्यवसाय Ingress Controller की ओर विकसित होने लगे।

API गेटवे टीम ने कुछ ओपन-सोर्स समाधानों पर शोध किया। NGINX में वास्तविक व्यावसायिक कॉन्फिगरेशन के माइग्रेशन और विश्लेषण के सिमुलेशन और प्रदर्शन और प्लगइन इकोसिस्टम की तुलना के बाद, Zoom ने अंततः Apache Software Foundation के APISIX Ingress Controller प्रोजेक्ट को चुना, जो एक अधिक उन्नत क्लाउड-नेटिव गेटवे की खोज करता है।

अपने व्यावसायिक परिदृश्यों को ध्यान में रखते हुए, Zoom ने निम्नलिखित दो भागों पर अधिक जोर दिया, जिन्हें APISIX Ingress द्वारा पूरा किया जा सकता है।

  • डेटा सुरक्षा: Zoom ग्राहक गोपनीयता और सेवा सुरक्षा को गंभीरता से लेता है; इसलिए, mTLS प्रमाणीकरण और सत्यापन ऑनलाइन मीटिंग रूम और फोन कॉल में व्यापक रूप से उपयोग किए जाते हैं। हालांकि, कई समान API गेटवे केवल अपने एंटरप्राइज़ संस्करण में ऐसी सेवा प्रदान कर सकते हैं, जबकि APISIX Ingress इस लक्ष्य को प्राप्त करने के लिए महान संभावना और सुविधा प्रदान करता है।

  • सेवा स्थिरता: Zoom के बैकएंड सेवाओं को उच्च उपलब्धता के लिए मल्टी-AZ (मल्टी-अवेलेबिलिटी ज़ोन) डिप्लॉयमेंट की आवश्यकता होती है। आमतौर पर, यह व्यवसायों को अन्य DC में रखता है। यदि मूल DC में कोई त्रुटि होती है, तो क्लाइंट ट्रैफ़िक को दूसरे DC में स्थानांतरित करने की आवश्यकता होती है, जिसमें APISIX Ingress सफलतापूर्वक आवश्यकता को पूरा कर सकता है।

Apache APISIX Ingress Controller की विशेषताएं

Apache APISIX को अपने डेटा प्लेन के रूप में उपयोग करते हुए, Apache APISIX Ingress Controller Apache APISIX से निम्नलिखित लाभ प्राप्त करता है।

  • उच्च प्रदर्शन और स्थिरता: एक उच्च-प्रदर्शन डायनामिक ओपन-सोर्स API गेटवे के रूप में, Apache APISIX अपने प्रदर्शन में लचीला और स्थिर है, और इसे कई उद्यमों के बड़े पैमाने पर ट्रैफ़िक परिदृश्यों में उपयोग किया जाता है।

  • सक्रिय समुदाय: एक शीर्ष-स्तरीय और सबसे सक्रिय ओपन-सोर्स API गेटवे प्रोजेक्ट के रूप में, Apache APISIX में एक सक्रिय समुदाय है और पहले दिन से ही उत्कृष्ट विकास दर बनाए रखा है।

  • समृद्ध इकोसिस्टम: Apache APISIX L7 प्रोटोकॉल का समर्थन करता है, जिसमें HTTP(S), HTTP2, Dubbo, IoT प्रोटोकॉल MQTT आदि शामिल हैं। इसके अलावा, APISIX L4 प्रोटोकॉल जैसे TCP/UDP का भी समर्थन करता है। इसके अलावा, Apache APISIX 3.0 में ARM64 का पूर्ण समर्थन है।

  • कई प्लगइन्स: APISIX ऑफिशियल से लगभग 100 प्लगइन्स जारी किए गए हैं जिन्हें उपयोगकर्ता सरल ड्रैग द्वारा उपयोग कर सकते हैं। प्लगइन्स के हॉट रीलोडिंग और डायनामिक ऑर्केस्ट्रेशन उपयोगकर्ताओं को महान सुविधा प्रदान करते हैं।

इसके अलावा, APISIX Ingress Controller में निम्नलिखित अद्वितीय लाभ भी हैं:

  • अच्छी संगतता: APISIX Ingress Controller इन्ग्रेस संसाधनों के कई संस्करणों का समर्थन करता है और विभिन्न Kubernetes संस्करणों के साथ संगत हो सकता है।

  • डायनामिक अपडेट: रूट्स, सर्टिफिकेट्स और अन्य कॉन्फिगरेशन को संशोधित करते समय सेवा को रीलोड करने की आवश्यकता नहीं है, जो व्यवसाय के सुचारू संचालन को सुनिश्चित करता है।

  • लचीला स्केलिंग: चूंकि APISIX Ingress Controller कंट्रोल प्लेन और डेटा प्लेन को अलग करने वाली संरचना को अपनाता है, इसलिए Apache APISIX का डेटा प्लेन क्लस्टर APISIX Ingress Controller को स्केल किए बिना स्वतंत्र रूप से विस्तारित किया जा सकता है।

APISIX Ingress Controller आर्किटेक्चर

  • ऑपरेशन और रखरखाव के लिए अनुकूल: वर्तमान आर्किटेक्चर के तहत, उपयोगकर्ता वास्तविक स्थिति के अनुसार डेटा प्लेन APISIX क्लस्टर को Kubernetes क्लस्टर या फिजिकल बेयर-मेटल मशीन वातावरण में डिप्लॉय कर सकते हैं। इसके अलावा, APISIX इन्ग्रेस के आर्किटेक्चरल अलगाव के कारण, डेटा प्लेन पर APISIX ट्रैफ़िक को वहन करता है जबकि APISIX इन्ग्रेस कंट्रोलर कंट्रोल प्लेन घटक है। इसलिए, APISIX Ingress Controller की विफलता का व्यवसाय ट्रैफ़िक पर कोई प्रभाव नहीं पड़ेगा।

गेटवे चयन पूरा होने के बाद, API गेटवे टीम को एक नई चुनौती का सामना करना पड़ा: सैकड़ों सेवाओं के मूल API गेटवे कॉन्फिगरेशन को APISIX Ingress में कैसे माइग्रेट किया जाए? Zoom की इंफ्रास्ट्रक्चर टीम निरंतर डिलीवरी पाइपलाइन विकसित कर रही थी, जो nginx.conf और अन्य इन्ग्रेस कॉन्फिगरेशन को APISIX Ingress में परिवर्तित करने की माइग्रेशन लागत को काफी कम कर सकती है।

निरंतर डिलीवरी पाइपलाइन के निर्माण की प्रक्रिया और कार्य

Zoom की निरंतर डिलीवरी पाइपलाइन

निरंतर डिलीवरी पाइपलाइन एक एंड-टू-एंड एप्लिकेशन डिलीवरी सिस्टम है जो सभी एप्लिकेशन डिलीवरी आवश्यकताओं को घोषित करने और सभी निरंतर डिलीवरी चरणों को एक लाइन में व्यवस्थित और निष्पादित करने के लिए एक एकल मॉडल को लागू करता है।

Zoom की निरंतर डिलीवरी पाइपलाइन

निरंतर डिलीवरी पाइपलाइन में छह भाग होते हैं:

  1. तैयारी: इंफ्रास्ट्रक्चर, मिडलवेयर, क्लाउड सेवा संसाधन आदि सहित पूर्वनिर्धारित संसाधनों को तैयार करें;

  2. कॉन्फिगरेशन: एप्लिकेशन द्वारा आवश्यक कॉन्फिगरेशन फाइलें और कुंजियों को तैयार करें;

  3. डिप्लॉयमेंट: क्लाउड-नेटिव परिदृश्यों में K8s का उपयोग करके डिप्लॉय करें (कंटेनर, कंटेनर इमेज, पैरामीटर्स, संस्करण और इंस्टेंस के बारे में जानकारी सहित);

  4. एक्सेस: एक Kubernetes सेवा बनाएं और यदि डिप्लॉयमेंट को बाहरी एक्सेस की आवश्यकता होती है तो Apache APISIX Ingress के रूटिंग नियमों को स्वचालित रूप से कॉन्फिगर करें;

  5. अवलोकन: मॉनिटरिंग, अलार्मिंग, लॉगिंग और ट्रेसिंग विश्लेषण जैसे अवलोकन-संबंधित कॉन्फिगरेशन करें;

  6. स्केल: KEDA (Kubernetes इवेंट-ड्रिवन ऑटोस्केलिंग) के डायनामिक स्केलिंग नियमों को मॉनिटरिंग मेट्रिक्स के माध्यम से घोषित करें।

पाइपलाइन में APISIX Ingress को कैसे अपनाएं

Zoom की पाइपलाइन आर्किटेक्चर अवलोकन

प्रोजेक्ट प्रबंधन

प्रोजेक्ट मैनेजर R&D पुनरावृत्तियों और समयरेखा पर पुनरावृत्तियों के अनुरूप पुनरावृत्ति रिलीज़ प्रगति और कर्मचारी दक्षता को बेहतर ढंग से प्रबंधित करने पर अधिक ध्यान देते हैं। Zoom आंतरिक रूप से एक GitOps वर्कफ़्लो का उपयोग करता है ताकि API गेटवे कॉन्फिगरेशन को एप्लिकेशन डिलीवरी मॉडल में बनाया जा सके। इस मॉडल के तहत, APISIX रूटिंग नियमों की परिभाषा "डिप्लॉय" और अन्य लिंक्स के साथ एकीकृत होती है, जो परिवर्तन नियंत्रण को GitHub को सौंपती है। GitHub शाखाओं के निर्माण और विलय के साथ, पाइपलाइन एप्लिकेशन और गेटवे कॉन्फिगरेशन रिलीज़ और रोलबैक के बीच समयरेखा को सुसंगत बनाती है।

# Zoom की CD पाइपलाइन का कोड स्निपेट Git रिपॉजिटरी में deploy: type: Deployment replicas: ~{ replicas, 2 } version: "latest" containers: - name: my-app image: "busybox" command: "echo 'Demo' && sleep 99d" access: - protocol: https host: my-domain.my-org.com cert: my-tls-cert apisix: routes: http: - name: my-api authentication: # ...... match: paths: - /my-api/*

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

एप्लिकेशन विकास

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

उपरोक्त कोड से, हम देख सकते हैं कि डेवलपर्स को इस निरंतर डिलीवरी पाइपलाइन में केवल Authentication और Match को परिभाषित करने की आवश्यकता है। उन्हें अंतर्निहित तर्क को जानने की आवश्यकता नहीं है:

  • पहले, इसे Kubernetes Deployment और Service में अनुवादित करें।
  • फिर, पथ की शुद्धता को सत्यापित करने के लिए प्लेटफॉर्म API को कॉल करें।
  • अंत में, इसे ApisixRoute ऑब्जेक्ट्स में अनुवादित करें।

APISIX के कॉन्फिगरेशन और निरंतर डिलीवरी पाइपलाइन वर्कफ़्लो को एकीकृत करने से डेवलपर्स को एक अधिक श्रम-बचत वाला तरीका प्रदान किया जाता है।

वातावरण प्रबंधन

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

पर्यावरणीय अंतरों को छिपाने की आवश्यकता को पूरा करने के लिए APISIX इन्ग्रेस के कुछ कॉन्फिगरेशन को लागू किया गया था। इस तरह, सिस्टम प्रबंधक कुछ विषम वातावरणों में अंतरों को व्यापक रूप से नियंत्रित कर सकते हैं। वातावरण में डिप्लॉय की गई सभी सेवाएं प्रभावी होती हैं, जो पर्यावरणीय अंतरों के कारण एप्लिकेशन और ऑप्स डेवलपर्स को होने वाले संज्ञानात्मक बोझ और विशेष डिप्लॉयमेंट ऑपरेशन से बचाती हैं। उदाहरण के लिए, Zoom कुछ वातावरणों के लिए ट्रेसिंग को अक्षम करने, ApisixRoute ऑब्जेक्ट्स को नेटिव इन्ग्रेस ऑब्जेक्ट्स और NGINX इन्ग्रेस एनोटेशन में परिवर्तित करने और विभिन्न इमेज को पुल करने के लिए सीक्रेट्स का उपयोग करने के लिए कस्टम कॉन्फिगरेशन का उपयोग कर सकता है।

इसके अलावा, जब कई व्यावसायिक लाइनें APISIX वातावरण का उपयोग कर रही होती हैं, तो मल्टी-टेनेंट आइसोलेशन की आवश्यकता होती है। APISIX Ingress एक एनोटेशन सेलेक्टर प्रदान करता है जो विभिन्न ApisixRoute ऑब्जेक्ट्स को APISIX Ingress Controller के विभिन्न इंस्टेंस द्वारा चुनने की अनुमति देता है।

इंफ्रास्ट्रक्चर प्रबंधन

API गेटवे टीम को सभी APISIX इंस्टेंस को नियंत्रित करने, सुरक्षा नीतियों को व्यापक रूप से कॉन्फिगर करने, मल्टी-अवेलेबिलिटी ज़ोन को लागू करने आदि की आवश्यकता होती है।

पाइपलाइन के प्रत्येक प्लगइन में इंफ्रास्ट्रक्चर इंजीनियरों के लिए कॉन्फिगरेशन आइटम होते हैं। प्लगइन ingress-apisix में, एक defaultPlugins प्रॉपर्टी होती है।

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

निष्कर्ष

APISIX Ingress Controller Zoom की निरंतर डिलीवरी पाइपलाइन में एक महत्वपूर्ण भूमिका निभाता है, जो प्रोजेक्ट प्रबंधन, एप्लिकेशन विकास, वातावरण प्रबंधन और मिडलवेयर और इंफ्रास्ट्रक्चर प्रबंधन पर दबाव को कम करता है। Zoom का मामला अन्य कंपनियों के लिए सीखने योग्य है, और हम आशा करते हैं कि APISIX Ingress Controller अधिक कंपनियों के नवाचार में योगदान देगा।

इसके अलावा, Apache APISIX Ingress ने अगस्त 2022 में V1.5 को आधिकारिक रूप से जारी किया, जो सभी संसाधन API संस्करणों के प्रस्ताव को एकीकृत करता है और सभी CRD API संस्करणों को V2 में अपग्रेड करता है। साथ ही, यह गेटवे API संसाधनों के अधिकांश का समर्थन करता है। Apache APISIX Ingress ने इन्ग्रेस संसाधनों को एक नए एनोटेशन "k8s.apisix.apache.org/plugin-config-name" को जोड़कर मनमाने APISIX प्लगइन्स का उपयोग करने की अनुमति दी है। इस तरह, यह APISIX Ingress Controller की उपयोगिता को काफी बढ़ाएगा और अन्य इन्ग्रेस कंट्रोलर्स से APISIX Ingress Controller में माइग्रेट करने की लागत को कम करेगा।

अधिक जानकारी के लिए, कृपया Apache APISIX Ingress V1.5 देखें।

Tags: