ऐप्लिकेशन होस्टिंग और इसके काम करने के तरीके को समझना

ऐप्लिकेशन होस्टिंग के ज़रिए आपके ऐप्लिकेशन के डिप्लॉयमेंट को आसान बनाने के लिए, बैकग्राउंड से जुड़े कई टास्क मैनेज किए जाते हैं. इस पेज पर टास्क के मुख्य हिस्सों के बारे में बताया गया है. साथ ही, इसमें उन पॉइंट के बारे में जानकारी दी गई है जहां अपने ऐप्लिकेशन की ज़रूरत के हिसाब से, फ़्लो को अपने हिसाब से बदला जा सकता है.

फ़्रेमवर्क सहायता

ऐप्लिकेशन होस्टिंग की सुविधा, इन फ़्रेमवर्क में डेवलप किए गए वेब ऐप्लिकेशन के लिए ज़रूरी बिल्ड और डिप्लॉय सहायता उपलब्ध कराती है:

  • Next.js 13+
  • ऐंग्युलर 17.2+

ऐप्लिकेशन होस्टिंग की मदद से, आपके रिपॉज़िटरी में मौजूद package-lock.json फ़ाइल या लॉक फ़ाइल की जांच करके यह पता लगाया जाता है कि कौनसा फ़्रेमवर्क इस्तेमाल किया जा रहा है. अगर ऐसे Node.js ऐप्लिकेशन को डिप्लॉय करने की कोशिश की जाती है जिसमें लॉक फ़ाइल मौजूद नहीं है, तो ऐप्लिकेशन होस्टिंग की सुविधा आपका ऐप्लिकेशन नहीं बना पाएगी. इसके अलावा, रूट डायरेक्ट्री में npm install चलाकर package-lock.json बनाया जा सकता है.

ऐप्लिकेशन होस्टिंग फ़्रेमवर्क अडैप्टर की दो मुख्य भूमिकाएं होती हैं:

  1. ये आपके ऐप्लिकेशन के कॉन्फ़िगर किए गए व्यवहार को समझने के लिए, आपके सोर्स कोड और फ़्रेमवर्क के हिसाब से कॉन्फ़िगर की गई किसी भी कॉन्फ़िगरेशन फ़ाइल (जैसे, next.config.js) को पार्स करते हैं.
  2. वे स्टैटिक ऐसेट जनरेट करने और प्रोडक्शन के लिए आपके ऐप्लिकेशन का ऑप्टिमाइज़ किया गया वर्शन बनाने के लिए, आपके ऐप्लिकेशन का बिल्ड कमांड इस्तेमाल करते हैं.

फ़्रेमवर्क अडैप्टर npm run build के साथ आपका Node.js ऐप्लिकेशन बनाते हैं, जो हर फ़्रेमवर्क के लिए डिफ़ॉल्ट बिल्ड स्क्रिप्ट के साथ सबसे अच्छी तरह काम करते हैं: Next.js के लिए next build और Angular के लिए ng build. ऐप्लिकेशन होस्टिंग की मदद से, कस्टम बिल्ड कमांड के साथ बिल्ड बनाने की कोशिश की जाएगी, लेकिन यह सफलता की गारंटी नहीं दे सकता.

ऐप्लिकेशन होस्टिंग के डेटा को स्टोर करने की जगह के इंटिग्रेशन के काम करने का तरीका

आपके GitHub रिपॉज़िटरी और ऐप्लिकेशन होस्टिंग बैकएंड के बीच के अहम कनेक्शन को, Developer Connect मैनेज करता है. यह बाहरी DevOps टूल के लिए, Google Cloud का कनेक्टिविटी प्लैटफ़ॉर्म है. ऐप्लिकेशन होस्टिंग बैकएंड बनाने के दौरान, Developer Connect के यूज़र इंटरफ़ेस (यूआई) का वर्कफ़्लो, Firebase GitHub ऐप्लिकेशन को इंस्टॉल करने में आपकी मदद करता है. इस प्रक्रिया के मुख्य चरण ये हैं:

  1. आपने डेवलपर कनेक्ट को सीक्रेट मैनेजर एडमिन की भूमिका असाइन की है. इससे सिस्टम, क्रेडेंशियल को Cloud Secret Manager में सुरक्षित तरीके से "सीक्रेट" के तौर पर सेव कर पाता है.
  2. आपने Firebase GitHub ऐप्लिकेशन को GitHub का डेटा स्टोर करने की जगह ऐक्सेस करने की अनुमति दी है.
  3. Developer Connect, आपके प्रोजेक्ट के सीक्रेट मैनेजर रिपॉज़िटरी में, एक खास GitHub ऑथराइज़ेशन टोकन सेव करता है. इस टोकन में न तो बदलाव करें और न ही इसे मिटाएं.

इसके अलावा, ऐप्लिकेशन होस्टिंग, GitHub की जांच करने वाले एपीआई के साथ इंटिग्रेट होती है, ताकि रोल आउट की जांच की जा सके. इसकी मदद से, GitHub में अपने रोल आउट की स्थिति देखी जा सकती है. साथ ही, कोई गड़बड़ी होने पर, डिप्लॉयमेंट की प्रोसेस को डीबग किया जा सकता है.

Firebase और Google की अन्य सेवाओं के साथ इंटिग्रेशन

ऐप्लिकेशन होस्टिंग की सुविधा, आपके बिल्ड और रनटाइम एनवायरमेंट, दोनों को सेट अप करती है, ताकि आप Google ऐप्लिकेशन के डिफ़ॉल्ट क्रेडेंशियल की मदद से Firebase एडमिन SDK टूल को शुरू कर सकें. इस तरह आपका बैकएंड, बिल्ड और डिप्लॉयमेंट, दोनों के दौरान अन्य Firebase प्रॉडक्ट के साथ संपर्क कर सकता है.

ऐप्लिकेशन होस्टिंग बैकएंड सेवा खाता

बिल्ड और रनटाइम के दौरान, आपका ऐप्लिकेशन होस्टिंग बैकएंड, सेवा खाते से Google की अन्य सेवाओं की पुष्टि करता है. Firebase प्रोजेक्ट में पहली बार ऐप्लिकेशन होस्टिंग की सुविधा चालू करने पर, इन कामों के लिए एक डिफ़ॉल्ट सेवा खाता बन जाता है:

firebase-app-hosting-compute@PROJECT ID.iam.gserviceaccount.com

यह सेवा खाता डिफ़ॉल्ट रूप से सभी बैकएंड पर लागू होता है. साथ ही, इसके पास अपना ऐप्लिकेशन बनाने, चलाने, और उसकी निगरानी करने के लिए अनुमतियों की कम से कम संख्या है. Cloud Firestore से डेटा लोड करने जैसे काम करने के लिए, ऐप्लिकेशन के डिफ़ॉल्ट क्रेडेंशियल से एडमिन SDK की पुष्टि भी की जा सकती है. Firebase ऐप्लिकेशन होस्टिंग की भूमिकाएं देखें.

अगर आपके ऐप्लिकेशन को बिल्ड के समय या किसी चालू बैकएंड के ज़रिए Google की अतिरिक्त सेवाओं के साथ इंटरैक्ट करना हो, तो आप भूमिकाएं जोड़कर डिफ़ॉल्ट सेवा खाते को अपनी पसंद के मुताबिक बना सकते हैं. उदाहरण के लिए, अगर आपके ऐप्लिकेशन को Vertex AI के लिए अनुमतियां चाहिए, तो आपको roles/aiplatform.user या कुछ मिलती-जुलती भूमिका जोड़नी पड़ सकती है.

मुख्य शब्द और परिभाषाएं

  • बैकएंड: मैनेज किए जा रहे संसाधनों का कलेक्शन, जिसे ऐप्लिकेशन होस्टिंग की सुविधा आपके वेब ऐप्लिकेशन को बनाने और चलाने के लिए बनाती है.
  • रोलआउट: आपके लाइव ऐप्लिकेशन का खास वर्शन, जो गिट कमिट से लिंक होता है.
  • लाइव ब्रांच: आपके GitHub रिपॉज़िटरी की वह ब्रांच जिसे आपके लाइव यूआरएल पर डिप्लॉय किया जाता है. अक्सर, यह वह शाखा होती है जिसमें सुविधा की ब्रांच या डेवलपमेंट की ब्रांच मर्ज की जाती हैं.

आम तौर पर होने वाली समस्याएं और सीमाएं

ऐप्लिकेशन होस्टिंग की झलक की कुछ सीमाएं हैं, जिनके बारे में पहले से जानकारी है:

  • कुछ मामलों में, ऐप्लिकेशन होस्टिंग बैकएंड, आपके ऐप्लिकेशन के यूआरएल पर Intermittent connection error मैसेज दिखा सकता है. बाद में रिलीज़ में, समस्या को ठीक करने का विकल्प उपलब्ध होगा.
  • सीडीएन कैश मेमोरी को 60 सेकंड तक सीमित करने के लिए कैश हेडर में बदलाव किए गए हैं. आने वाले समय में, जब ऐप्लिकेशन होस्टिंग के ज़रिए डिप्लॉयमेंट पर कैश मेमोरी को तुरंत पूरी तरह मिटाया जा सकेगा, तब यह सीमा हटा दी जाएगी.
  • कैश नहीं की गई स्टैटिक फ़ाइलें Cloud Run से बाहर की जाती हैं. बाद में रिलीज़ होने वाले वर्शन में, बेहतर परफ़ॉर्मेंस के लिए उन्हें ऐप्लिकेशन होस्टिंग ऑरिजिन से सेव और दिखाया जाएगा.
  • कस्टम डोमेन के रूप में वाइल्डकार्ड सबडोमेन बाद में रिलीज़ होने में उपलब्ध रहेंगे.
  • ऐप्लिकेशन होस्टिंग SKU को Firebase कंसोल में बैकएंड इस्तेमाल के पेज पर न दिखाया जाए. ये बाद में रिलीज़ होने वाले वर्शन में उपलब्ध होंगे.
  • बैकएंड बनाने पर, Firebase कंसोल बीच-बीच में "बिल नहीं मिला और अमान्य है" गड़बड़ी दिखा सकता है.
  • फ़िलहाल, नेस्ट की गई package.json फ़ाइलों वाले प्रोजेक्ट काम नहीं करते. इस बात से कोई फ़र्क़ नहीं पड़ता कि root\_directory को Firebase कंसोल के साथ कॉन्फ़िगर किया गया है या सीएलआई के साथ. बाद में रिलीज़ करने में, समस्या का हल उपलब्ध होगा.
  • फ़िलहाल, एक ही प्रोजेक्ट में सभी बैकएंड के साथ एक GitHub संगठन/खाता शेयर किया जाता है. वे उस संगठन/खाते के तहत, डेटा स्टोर करने की अलग-अलग जगहों से कनेक्ट किए जा सकते हैं. अलग-अलग GitHub खातों से कनेक्ट किए गए बैकएंड बनाने के लिए, उन्हें अलग-अलग प्रोजेक्ट में रखें.