माइक्रोसेवाओं को सिंक्रोनस रिक्वेस्ट/रिस्पांस और एसिंक्रोनस इवेंट-ड्रिवन कम्युनिकेशन दोनों की आवश्यकता होती है।
→सिंक्रोनस कॉल्स के लिए gRPC या HTTP का उपयोग करें। एसिंक्रोनस इवेंटिंग और फैन-आउट के लिए Pub/Sub का उपयोग करें।
क्यों: Pub/Sub विश्वसनीयता और स्वतंत्र स्केलिंग के लिए सेवाओं को पूरी तरह से डीकपल करता है। डायरेक्ट कॉल कम-विलंबता वाले सिंक्रोनस रिस्पांस प्रदान करते हैं।
संदर्भ↗
एक स्टेटलेस कंप्यूट सेवा (Cloud Run, Cloud Functions) को अस्थायी फ़ाइलों को प्रोसेस करने की आवश्यकता है।
→सभी अस्थायी फ़ाइल I/O के लिए Cloud Storage का उपयोग करें।
क्यों: सर्वरलेस प्लेटफ़ॉर्म का लोकल फ़ाइलसिस्टम क्षणभंगुर, इन-मेमोरी होता है और साझा नहीं होता है। Cloud Storage सभी इंस्टेंस द्वारा एक्सेस किया जा सकने वाला टिकाऊ, स्केलेबल स्टोरेज प्रदान करता है।
12-फैक्टर सिद्धांतों का पालन करते हुए GKE वर्कलोड के लिए वातावरण-विशिष्ट कॉन्फ़िगरेशन और सीक्रेट्स का प्रबंधन करें।
→गैर-संवेदनशील कॉन्फ़िग के लिए K8s ConfigMaps का उपयोग करें। संवेदनशील मानों के लिए Secret Manager का उपयोग करें, जिन्हें Workload Identity के माध्यम से सुरक्षित रूप से एक्सेस किया जाता है।
क्यों: Secret Manager, K8s Secrets की तुलना में अधिक सुरक्षित, प्रबंधित और ऑडिट योग्य समाधान है। Workload Identity सेवा खाते की कुंजियों को प्रबंधित और वितरित करने से बचाता है।
संदर्भ↗
एप्लिकेशन में अत्यधिक ट्रैफ़िक पीक होते हैं, लेकिन लंबे निष्क्रिय समय भी होते हैं जहाँ लागत को कम किया जाना चाहिए।
→`min-instances` को 0 पर सेट करके Cloud Run का उपयोग करें।
क्यों: Cloud Run शून्य तक स्केल डाउन हो सकता है, जिससे निष्क्रिय अवधि के दौरान सभी कंप्यूट लागत समाप्त हो जाती हैं। GKE और Compute Engine को न्यूनतम चलने वाले नोड्स/इंस्टेंसेस की आवश्यकता होती है।
एप्लिकेशन कोड में बदलाव किए बिना माइक्रोसेवाओं में रिट्राई, सर्किट ब्रेकर और mTLS को लगातार लागू करें।
→GKE पर एक सर्विस मेश (Anthos Service Mesh) डिप्लॉय करें।
क्यों: एक सर्विस मेश प्लेटफ़ॉर्म स्तर पर लचीलापन, सुरक्षा और ऑब्जर्बिलिटी डालता है, जिससे एप्लिकेशन कोड स्वच्छ रहता है और सुसंगत व्यवहार सुनिश्चित होता है।
रेट लिमिटिंग, API कुंजियों और उपयोग एनालिटिक्स के साथ बैकएंड सेवाओं को बाहरी भागीदारों या मोबाइल ऐप्स के सामने उजागर करें।
→बैकएंड सेवाओं (जैसे, Cloud Run, GKE) के सामने API Gateway का उपयोग करें।
क्यों: API Gateway API जीवनचक्र संबंधी चिंताओं (सुरक्षा, निगरानी, संस्करण) के लिए एक पूरी तरह से प्रबंधित समाधान प्रदान करता है, उन्हें बैकएंड सेवा से ऑफलोड करता है।
संदर्भ↗
इवेंट्स के केवल-जोड़ने वाले लॉग के लिए एक टिकाऊ, स्केलेबल और दृढ़ता से सुसंगत स्टोर का चयन करें।
→इवेंट स्टोर के लिए Cloud Spanner का उपयोग करें।
क्यों: Spanner मजबूत वैश्विक स्थिरता के साथ क्षैतिज स्केलेबिलिटी प्रदान करता है, जो बड़े पैमाने पर एक इवेंट लॉग की अखंडता बनाए रखने के लिए महत्वपूर्ण है।
एक लंबे समय तक चलने वाले कार्य के लिए एक API को तुरंत प्रतिक्रिया देनी चाहिए, जबकि पृष्ठभूमि में प्रोसेसिंग जारी रहती है।
→API एंडपॉइंट Pub/Sub या Cloud Tasks में एक कार्य को कतारबद्ध करता है और एक जॉब ID के साथ 202 Accepted लौटाता है। एक अलग वर्कर (Cloud Run, Cloud Function) कार्य को प्रोसेस करता है।
क्यों: यह उपयोगकर्ता-सामने वाली प्रतिक्रिया समय को बैकएंड प्रोसेसिंग समय से अलग करता है, UX और सिस्टम विश्वसनीयता में सुधार करता है। स्थिति अपडेट के लिए Cloud Storage का उपयोग करें।
साझा डेटाबेस के बिना कई माइक्रोसेवाओं में डेटा स्थिरता बनाए रखें।
→एक ऑर्केस्ट्रेटर (Cloud Workflows) या कोरियोग्राफी (Pub/Sub इवेंट्स) का उपयोग करके क्षतिपूर्ति लेनदेन के साथ सागा पैटर्न को लागू करें।
क्यों: जटिल और लॉकिंग-प्रोन टू-फेज कमिट्स से बचा जाता है, अंततः निरंतरता को प्राथमिकता दी जाती है जो डिस्ट्रीब्यूटेड सिस्टम के लिए बेहतर है।
एप्लिकेशन एक रेट-लिमिटेड थर्ड-पार्टी API को कॉल करता है जहाँ डेटा शायद ही कभी बदलता है।
→एक डिस्ट्रीब्यूटेड कैश के रूप में Redis के लिए Memorystore का उपयोग करें। TTL के साथ कैश-साइड पैटर्न लागू करें। कैश स्टैम्पीस को रोकने के लिए एक डिस्ट्रीब्यूटेड लॉक (जैसे, Redis SETNX) का उपयोग करें।
क्यों: एक डिस्ट्रीब्यूटेड कैश सभी ऐप इंस्टेंस में डेटा साझा करता है, बाहरी API के लिए कॉल को नाटकीय रूप से कम करता है, विलंबता में सुधार करता है और रेट लिमिट का सम्मान करता है।
एक डेवलपमेंट टीम को निजी VPC संसाधनों तक पहुंच के साथ सुसंगत, पूर्व-कॉन्फ़िगर, सुरक्षित डेवलपमेंट वातावरण की आवश्यकता होती है।
→Cloud Workstations का उपयोग करें।
क्यों: Cloud Workstations एकीकृत सुरक्षा और VPC एक्सेस के साथ प्रबंधित, कंटेनर-आधारित डेवलपमेंट वातावरण प्रदान करता है, जो "यह मेरी मशीन पर काम करता है" समस्या को हल करता है।
संदर्भ↗
एक SaaS एप्लिकेशन को किरायेदारों के लिए पूरी तरह से अलग डेटा, एन्क्रिप्शन कुंजी और डेटा रेजिडेंसी की आवश्यकता होती है।
→प्रति-किरायेदार मॉडल का उपयोग करें। IaC (Terraform) का उपयोग करके प्रावधान और कॉन्फ़िगरेशन को केंद्रीय रूप से प्रबंधित करें।
क्यों: IAM, बिलिंग, कोटा, नेटवर्किंग और डेटा स्थान के लिए उच्चतम स्तर का अलगाव प्रदान करता है, जिसकी अक्सर उद्यम या विनियमित ग्राहकों द्वारा आवश्यकता होती है।