सर्विस मेश क्या है?

Zhihuang Lin

December 9, 2022

Technology

सर्विस मेश का परिचय

सर्विस मेश एक कॉन्फ़िगरेबल इंफ्रास्ट्रक्चर है जिसका उपयोग माइक्रोसर्विस सिस्टम के इंटरसर्विस संचार को प्रबंधित करने के लिए किया जाता है। इसका उद्देश्य माइक्रोसर्विस के बीच के ट्रैफ़िक को प्रोसेस करना है, जिसे ईस्ट-वेस्ट ट्रैफ़िक भी कहा जाता है।

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

सर्विस मेश माइक्रोसर्विस के बीच TCP/IP की तरह है, जो नेटवर्क कॉल, रेट लिमिटिंग, मॉनिटरिंग आदि जैसे इंटरसर्विस फंक्शन को संभालता है। हम मुख्य रूप से सर्विस मेश को Kubernetes प्लेटफॉर्म पर लागू करते हैं। साथ ही, सबसे क्लासिक पैटर्न को साइडकार कहा जाता है, जो कुछ सामान्य फंक्शन को साइडकार कंटेनर में एब्स्ट्रैक्ट करता है और इसे सर्विस कंटेनर के साथ एक ही पॉड में माउंट करता है। नीचे दी गई छवि दर्शाती है कि इसे सर्विस मेश क्यों कहा जाता है।

सर्विस मेश आर्किटेक्चर

साइडकार एकमात्र पैटर्न नहीं है जो सर्विस मेश को लागू करता है; इसके अलावा, हमारे पास DaemonSet पैटर्न और Ambient मेश पैटर्न भी हैं:

  • DaemonSet पैटर्न और साइडकार पैटर्न के बीच अंतर यह है कि DaemonSet पैटर्न Kubernetes क्लस्टर में प्रत्येक नोड पर केवल एक पॉड चलाने की अनुमति देता है, और यह पॉड साइडकार प्रॉक्सी के रूप में काम करता है। साइडकार पैटर्न की तुलना में, DaemonSet पैटर्न मशीन संसाधनों का बहुत कम उपयोग करता है, लेकिन इसमें खराब आइसोलेशन, संसाधन कॉल की भविष्यवाणी करने में कठिनाई जैसी कमियां हैं। आप इस लेख में अधिक अंतर पा सकते हैं: साइडकार और DaemonSet: कंटेनराइजेशन पैटर्न की लड़ाई.

  • Ambient मेश Istio द्वारा 7 सितंबर 2022 को पेश किया गया एक नया डेटा प्लेन मोड है। मेश के इंफ्रास्ट्रक्चर और डिप्लॉयमेंट के कपलिंग समस्या को हल करने के लिए, Ambient मेश डेटा प्लेन प्रॉक्सी को एप्लिकेशन पॉड से अलग करता है ताकि इसे अलग से डिप्लॉय किया जा सके।

Ambient मेश डेटा प्लेन को एक सुरक्षित ओवरले लेयर और एक L7 प्रोसेसिंग लेयर में विभाजित करता है: सुरक्षित ओवरले लेयर TCP रूटिंग, मॉनिटरिंग मेट्रिक्स, एक्सेस लॉगिंग, mTLS टनलिंग जैसे फंक्शन को संभालता है; सुरक्षित ओवरले लेयर के सभी फंक्शन के अलावा, L7 प्रोसेसिंग लेयर में HTTP रूटिंग पर ट्रैफ़िक कंट्रोल, ऑब्जर्वेबिलिटी, और समृद्ध L7 अथॉराइजेशन पॉलिसी जैसे कई और फंक्शन हैं।

इसके अलावा, Ambient मेश एक साझा एजेंट का उपयोग करता है जिसे ztunnel (जीरो-ट्रस्ट टनल) कहा जाता है, जो Kubernetes क्लस्टर के अंदर हर नोड पर चलता है और मेश के अंदर के वर्कलोड को सुरक्षित रूप से जोड़ता है और प्रमाणित करता है। यदि आप Ambient मेश मोड के बारे में विस्तार से जानना चाहते हैं, तो आप इस लेख को पढ़ सकते हैं: Ambient मेश का परिचय

हमें सर्विस मेश की आवश्यकता क्यों है?

सर्विस मेश के लोकप्रिय होने से पहले, कई माइक्रोसर्विस आर्किटेक्चर की सर्विस गवर्नेंस माइक्रोसर्विस फ्रेमवर्क और कंट्रोल प्लेटफॉर्म के सहयोग से प्राप्त की जाती थी। हालांकि, इस विधि में निम्नलिखित समस्याएं हैं:

  1. फ्रेमवर्क और सर्विस के बीच मजबूत कपलिंग, जिससे इसकी समग्र रखरखाव की कठिनाई और जटिलता बहुत अधिक हो जाती है। साथ ही, डेवलपर्स को पब्लिक लाइब्रेरी को समझने की आवश्यकता होती है, जिससे वे सर्विस इम्प्लीमेंटेशन पर ध्यान केंद्रित नहीं कर पाते।
  2. इसे मल्टी-लैंग्वेज फ्रेमवर्क को बनाए रखने की आवश्यकता होती है, जिससे रखरखाव की लागत बढ़ जाती है।
  3. माइक्रोसर्विस में अपग्रेड की लागत अधिक होती है, और आमतौर पर अपग्रेड के दौरान सर्विस को रिबूट करने की आवश्यकता होती है।
  4. ऑनलाइन संस्करणों के साथ कई अलग-अलग फ्रेमवर्क मौजूद हैं, जो लोगों को जटिल संगतता पर विचार करने के लिए मजबूर करते हैं।

उपरोक्त समस्याओं को हल करने के लिए, पूर्व ट्विटर इंजीनियर विलियन मॉर्गन, Linkerd के संस्थापकों में से एक, ने "सर्विस मेश" की अवधारणा प्रस्तावित की। सर्विस मेश साइडकार पैटर्न का उपयोग करके इंफ्रास्ट्रक्चर को सर्विस लॉजिक से डिकपल करता है बिना एप्लिकेशन को प्रभावित किए, जिससे एक भाषा-एकीकृत अपग्रेड और O&M प्राप्त होता है।

माइक्रोसर्विस फ्रेमवर्क से सर्विस मेश

सर्विस मेश ट्रैफ़िक कंट्रोल, ऑब्जर्वेबिलिटी, और सुरक्षित संचार जैसे फंक्शन को बेसिक कंपोनेंट में ले जाता है; इस प्रकार, डेवलपर्स को संचार लेयर और सर्विस मैनेजमेंट के कंक्रीट इम्प्लीमेंटेशन की चिंता करने की आवश्यकता नहीं होती। डेवलपर्स संचार से संबंधित सभी गंदे काम को सर्विस मेश पर छोड़ सकते हैं और सर्विस डेवलपमेंट पर ध्यान केंद्रित कर सकते हैं। इन विशेषताओं के आधार पर, सर्विस मेश हमें उन पहले बताई गई समस्याओं को हल करने में मदद कर सकता है।

सर्विस मेश कैसे काम करता है?

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

वर्तमान में, अधिकांश सर्विस मेश डेटा प्लेन + कंट्रोल प्लेन आर्किटेक्चर का उपयोग करते हैं, जो नीचे दिखाया गया है:

डेटा प्लेन और कंट्रोल प्लेन

कंट्रोल प्लेन

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

कंट्रोल प्लेन सुरक्षा, ऑब्जर्वेबिलिटी, और ट्रैफ़िक कंट्रोल जैसी डिलीवरी और रणनीतियों पर अधिक ध्यान केंद्रित करता है। यह डेटा प्लेन के टेलीमेट्री डेटा को भी एकत्रित और संग्रहित करेगा ताकि DevOps उनका उपयोग कर सके।

डेटा प्लेन

डेटा प्लेन आमतौर पर एक प्रॉक्सी के रूप में काम करता है और कई साइडकार प्रॉक्सी से बना होता है। साइडकार सर्विस इंस्टेंस के साथ समानांतर में चलेगा और सर्विस एप्लिकेशन के ट्रैफ़िक को सर्विस डेटा फ्लो को इंटरसेप्ट करके नियंत्रित करेगा।

जैसा कि हमने पहले उल्लेख किया है, सर्विस मेश Kubernetes में साइडकार पैटर्न को लागू करके और इसे एक कंटेनर के रूप में रैप करके प्राप्त किया जाता है। साइडकार मुख्य कंटेनर को विस्तारित और मजबूत करने के लिए एक अतिरिक्त कंटेनर का उपयोग करने का सुझाव देता है, और इस अतिरिक्त कंटेनर को साइडकार कंटेनर कहा जाता है, जो सर्विस कंटेनर के साथ एक ही पॉड में आवंटित होता है। दूसरी ओर, सर्विस मेश उन साइडकार प्रॉक्सी से बना एक मेश नेटवर्क है।

सर्विस मेश के अनुप्रयोग

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

क्लस्टर के आंतरिक ट्रैफ़िक के खिलाफ हमलों से बचने के लिए, हम ट्रैफ़िक डेटा को एन्क्रिप्ट करने के लिए mTLS का उपयोग करते हैं। mTLS सर्विस मेश के भीतर माइक्रोसर्विस के बीच संचार सुरक्षा को सुरक्षित कर सकता है। यह प्रत्येक माइक्रोसर्विस को प्रमाणित करने और इंटरसर्विस ट्रैफ़िक को पारस्परिक रूप से एन्क्रिप्ट करने के लिए एन्क्रिप्शन तकनीक का उपयोग करता है।

mTLS तुलना

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

इसके बजाय, यदि हम सर्विस मेश का उपयोग करते हैं, तो हम मूल सर्विस को जागरूक किए बिना mTLS संचार प्रदान कर सकते हैं। इसलिए, सर्विस मेश में, हम सभी संचार-संबंधित फंक्शन को साइडकार प्रॉक्सी में ले जाते हैं।

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

mTLS

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

निष्कर्ष

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

हालांकि सर्विस मेश माइक्रोसर्विस आर्किटेक्चर में कई दर्द बिंदुओं को हल करता है, फिर भी इसकी सीमाएं हैं। सॉफ्टवेयर डेवलपमेंट की जटिलता शाश्वत है, और यह सिर्फ एक हिस्से से दूसरे हिस्से में स्थानांतरित होती है। जब हम सर्विस मैनेजमेंट को एक अलग लेयर में एब्स्ट्रैक्ट करते हैं, तो हमें अतिरिक्त O&M कठिनाइयों और ट्रैफ़िक लिंक में वृद्धि का सामना करना पड़ता है। इसके अलावा, सर्विस मेश को क्लाउड-नेटिव एनवायरनमेंट के तहत उपयोग करने की आवश्यकता होती है, जो DevOps की पेशेवर क्षमता और इंजीनियरिंग कार्य अनुभव के लिए एक उच्च बार सेट करता है। यही कारण है कि हम कहते हैं कि तकनीक सिर्फ समस्याओं को हल करने का एक उपकरण है, लेकिन हमें सर्विस मेश के व्यावहारिक अनुप्रयोग के अनुसार इसके द्वारा लाए गए लाभों को तौलना होगा।

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

यदि आप API प्रबंधन के बारे में अधिक जानना चाहते हैं, तो हमसे कभी भी संपर्क करें: https://api7.ai/contact.

Tags: