App Hosting, बैकग्राउंड में होने वाले टास्क की जटिल सीरीज़ को मैनेज करता है, ताकि आपके ऐप्लिकेशन को डिप्लॉय करना आसान हो. इस पेज पर, टास्क फ़्लो के मुख्य हिस्सों के बारे में बताया गया है. साथ ही, उन पॉइंट के बारे में जानकारी दी गई है जहां आपको अपने ऐप्लिकेशन की ज़रूरतों के हिसाब से फ़्लो को पसंद के मुताबिक बनाना पड़ सकता है.
फ़्रेमवर्क से जुड़ी सहायता
App Hosting, इन फ़्रेमवर्क में बनाए गए वेब ऐप्लिकेशन के लिए, कॉन्फ़िगरेशन की ज़रूरत नहीं है और सहायता उपलब्ध कराता है:
- Next.js 13+
- Angular 17.2 और उसके बाद के वर्शन
App Hosting, आपकी रिपॉज़िटरी में मौजूद package-lock.json
फ़ाइल या अन्य लॉक फ़ाइल की जांच करके, यह पता लगाता है कि कौनसा फ़्रेमवर्क इस्तेमाल किया जा रहा है. अगर किसी ऐसे Node.js ऐप्लिकेशन को डिप्लॉय करने की कोशिश की जाती है जिसमें लॉक फ़ाइल मौजूद नहीं है, तो App Hosting आपके ऐप्लिकेशन को बिल्ड और चला नहीं पाएगा. अपनी रूट डायरेक्ट्री में npm
install
चलाकर, package-lock.json
बनाया जा सकता है.
App Hosting फ़्रेमवर्क अडैप्टर की दो मुख्य भूमिकाएं होती हैं:
- ये आपके सोर्स कोड और फ़्रेमवर्क से जुड़ी कॉन्फ़िगरेशन फ़ाइलों (जैसे,
next.config.js
) को पार्स करते हैं, ताकि आपके ऐप्लिकेशन के कॉन्फ़िगर किए गए व्यवहार को समझा जा सके. - ये स्टैटिक एसेट जनरेट करने के लिए, आपके ऐप्लिकेशन के बिल्ड कमांड को चलाते हैं. साथ ही, प्रोडक्शन के लिए आपके ऐप्लिकेशन का ऑप्टिमाइज़ किया गया वर्शन बनाते हैं.
फ़्रेमवर्क अडैप्टर, npm run build
की मदद से आपके Node.js ऐप्लिकेशन को बनाते हैं. ये हर फ़्रेमवर्क के लिए डिफ़ॉल्ट बिल्ड स्क्रिप्ट के साथ सबसे बेहतर तरीके से काम करते हैं: Next.js के लिए next build
और Angular के लिए ng build
. App Hosting, कस्टम बिल्ड कमांड की मदद से बिल्ड करने की कोशिश करेगा. हालांकि, इस बात की गारंटी नहीं है कि बिल्ड हो जाएगा.
App Hosting रिपॉज़िटरी इंटिग्रेशन के काम करने का तरीका
आपके GitHub रिपॉज़िटरी और App Hosting के बैकएंड के बीच के अहम कनेक्शन को Developer Connect मैनेज करता है. यह Google Cloud का कनेक्टिविटी प्लैटफ़ॉर्म है, जो बाहरी DevOps टूल के लिए उपलब्ध है. App Hosting बैकएंड बनाते समय, Developer Connect के यूज़र इंटरफ़ेस (यूआई) वर्कफ़्लो की मदद से, Firebase GitHub ऐप्लिकेशन को इंस्टॉल किया जा सकता है. इस प्रोसेस के मुख्य चरण ये हैं:
- आपने Developer Connect को Secret Manager एडमिन की भूमिका दी हो. इससे सिस्टम, Cloud Secret Manager में क्रेडेंशियल को "सीक्रेट" के तौर पर सुरक्षित तरीके से सेव कर सकता है.
- आपने Firebase GitHub ऐप्लिकेशन को GitHub डेटा स्टोर करने की जगह ऐक्सेस करने की अनुमति दी है.
- Developer Connect, आपके प्रोजेक्ट के Secret Manager रिपॉज़िटरी में, GitHub से जुड़ा एक खास अनुमति टोकन सेव करता है. इस टोकन में बदलाव न करें या उसे मिटाएं नहीं.
साथ ही, App Hosting, GitHub की जांच करने वाले एपीआई के साथ इंटिग्रेट होता है, ताकि रोल आउट की जांच की जा सके. इस जांच की मदद से, GitHub में रोल आउट का स्टेटस देखा जा सकता है. साथ ही, किसी भी गड़बड़ी के मामले में डिप्लॉयमेंट की प्रोसेस को डीबग किया जा सकता है.
Firebase और Google की अन्य सेवाओं के साथ इंटिग्रेशन
App Hosting, आपके बिल्ड और रनटाइम, दोनों एनवायरमेंट सेट अप करता है, ताकि आप Google ऐप्लिकेशन के डिफ़ॉल्ट क्रेडेंशियल की मदद से, Firebase Admin SDK टूल को शुरू कर सकें. इससे, आपका बैकएंड, बिल्ड और डिप्लॉय, दोनों के दौरान Firebase के अन्य प्रॉडक्ट के साथ कम्यूनिकेट कर सकता है.
App Hosting जगहें
App Hosting डिप्लॉयमेंट की मदद से, किसी खास जगह पर आपके बैकएंड संसाधन बनाए जाते हैं. अपने वेब ऐप्लिकेशन की जगह में बदलाव करने की सुविधा के ये मुख्य फ़ायदे हैं:
- डेटा को भौगोलिक रूप से करीब पहुंचाकर, परफ़ॉर्मेंस में सुधार और इंतज़ार का समय कम किया जा सकता है.
- किसी एक इलाके में App Hosting के काम न करने से, दूसरे इलाकों में डिप्लॉय किए गए वेब ऐप्लिकेशन पर कोई असर नहीं पड़ेगा.
कंसोल या Firebase सीएलआई से App Hosting बैकएंड बनाते समय, इनमें से किसी भी क्षेत्र को चुना जा सकता है:
us-central1
(आयोवा)asia-east1
(ताइवान)europe-west4
(नीदरलैंड्स)
App Hosting बैकएंड सेवा खाता
बिल्ड और रनटाइम के दौरान, आपका App Hosting बैकएंड, सेवा खाते की मदद से Google की अन्य सेवाओं की पुष्टि करता है. इन कामों के लिए, डिफ़ॉल्ट सेवा खाता तब बनाया जाता है, जब Firebase प्रोजेक्ट में App Hosting को पहली बार चालू किया जाता है:
firebase-app-hosting-compute@PROJECT ID.iam.gserviceaccount.com
यह सेवा खाता डिफ़ॉल्ट रूप से सभी बैकएंड पर लागू होता है. साथ ही, इसमें कम से कम अनुमतियां होती हैं, ताकि आप अपने ऐप्लिकेशन को बनाएं, चलाएं, और उसका निगरानी कर सकें. इसमें Cloud Firestore से डेटा लोड करने जैसे काम करने के लिए, ऐप्लिकेशन के डिफ़ॉल्ट क्रेडेंशियल की मदद से एडमिन एसडीके की पुष्टि करने की अनुमति भी होती है. Firebase App Hosting की भूमिकाएं देखें.
अगर आपके ऐप्लिकेशन को बिल्ड के समय या चल रहे बैकएंड से, Google की अन्य सेवाओं के साथ इंटरैक्ट करना है, तो भूमिकाएं जोड़कर डिफ़ॉल्ट सेवा खाते को पसंद के मुताबिक बनाया जा सकता है. उदाहरण के लिए, अगर आपके ऐप्लिकेशन को Vertex AI के लिए अनुमतियां चाहिए, तो आपको roles/aiplatform.user
या उससे जुड़ी कोई भूमिका जोड़नी पड़ सकती है.
मुख्य शब्द और परिभाषाएं
- बैकएंड: मैनेज किए जा रहे संसाधनों का कलेक्शन. इसे App Hosting आपका वेब ऐप्लिकेशन बनाने और चलाने के लिए बनाया जाता है.
- रोल आउट: आपके लाइव ऐप्लिकेशन का कोई खास वर्शन, जो किसी Git कमिट से जुड़ा हो.
- लाइव ब्रांच: यह आपके GitHub रिपॉज़िटरी की वह ब्रांच होती है जिसे आपके लाइव यूआरएल पर डिप्लॉय किया जाता है. आम तौर पर, यह वह शाखा होती है जिसमें सुविधा वाली शाखाएं या डेवलपमेंट शाखाएं मर्ज की जाती हैं.
पहले से मालूम समस्याएं और सीमाएं
App Hosting की झलक में कुछ सीमाएं हैं जिनके बारे में पता है:
- कुछ मामलों में, App Hosting बैकएंड आपके ऐप्लिकेशन के यूआरएल पर
Intermittent connection error
मैसेज दिखा सकता है. इस समस्या को ठीक करने के लिए, अगले वर्शन में अपडेट उपलब्ध कराया जाएगा. - कैश-कंट्रोल हेडर में बदलाव करके, सीडीएन कैश मेमोरी को 60 सेकंड तक सीमित किया जा सकता है. आने वाले समय में, जब App Hosting डिप्लॉयमेंट के दौरान कैश मेमोरी को तुरंत पूरी तरह मिटा देगा, तब यह सीमा हटा दी जाएगी.
- इमेज ऑप्टिमाइज़ेशन, डिफ़ॉल्ट रूप से Cloud Run में किया जाता है. साथ ही, ऑप्टिमाइज़ की गई इमेज सेव नहीं की जातीं. हमारा सुझाव है कि बेहतर समाधान उपलब्ध होने तक, इमेज ऑप्टिमाइज़ेशन की सुविधा बंद करें या लोडर को मैन्युअल तरीके से तय करें.
- कैश नहीं की गई स्टैटिक फ़ाइलें, Cloud Run से बाहर रखी जाती हैं. बाद में, बेहतर परफ़ॉर्मेंस के लिए इन फ़ाइलों को App Hosting ऑरिजिन से सेव करके दिखाया जाएगा.
- App Hosting हो सकता है कि SKU, Firebase कंसोल में बैकएंड के इस्तेमाल वाले पेज पर न दिखें. ये सुविधाएं, आने वाले समय में रिलीज़ होने वाले नए वर्शन में उपलब्ध होंगी.
- Firebase कंसोल, बैकएंड बनाने पर "बिल्ड नहीं मिला और वह अमान्य है" गड़बड़ी दिखा सकता है.
- फ़िलहाल, एक ही प्रोजेक्ट में सभी बैकएंड, GitHub संगठन/खाता शेयर करते हैं. उन्हें उस संगठन/खाते के तहत अलग-अलग डेटा स्टोर करने की जगहों से कनेक्ट किया जा सकता है. अलग-अलग GitHub खातों से कनेक्ट किए गए बैकएंड बनाने के लिए, उन्हें अलग-अलग प्रोजेक्ट में डालें.
- Next.js मिडलवेयर, रीराइट, और रीडायरेक्ट, CDN के पीछे Cloud Run में लागू किए जाते हैं. ये कैश मेमोरी में सेव किए गए रिस्पॉन्स को सुरक्षित नहीं रखेंगे. इसलिए, रेंडर किए जा रहे कॉन्टेंट के लिए, ज़रूरी कंट्रोल डायरेक्टिव सेट करना न भूलें.