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

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

फ़्रेमवर्क से जुड़ी सहायता

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

  • Next.js 13 और उसके बाद के वर्शन
  • ऐंग्युलर 17.2+

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

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

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

फ़्रेमवर्क अडैप्टर आपके Node.js ऐप्लिकेशन को npm run build के साथ बनाते हैं. यह हर फ़्रेमवर्क के लिए डिफ़ॉल्ट बिल्ड स्क्रिप्ट के साथ सबसे अच्छी तरह काम करता है: 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 या इससे जुड़ी कोई भूमिका जोड़नी पड़ सकती है.

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

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

पहले से मालूम समस्याएं और सीमाएं

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

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