Firebase Cloud Functions एक प्रबंधित Node.js वातावरण में कोड निष्पादित करने का सर्वर-साइड प्लेटफ़ॉर्म है, जो Firebase इवेंट्स, HTTPS अनुरोधों और Google क्लाउड सेवाओं में परिवर्तनों पर प्रतिक्रिया करता है। पारंपरिक बैकएंड के विपरीत, डेवलपर को सर्वर कॉन्फ़िगर करने, वेब सर्वर स्थापित करने या स्केलिंग के बारे में चिंता करने की आवश्यकता नहीं है — प्रत्येक फंक्शन एक पृथक कंटेनर में चलता है और स्वचालित रूप से आवश्यक संसाधन प्राप्त करता है। Google Firebase (2026) के अनुसार, प्लेटफ़ॉर्म प्रतिदिन 2 बिलियन से अधिक फंक्शन कॉल प्रोसेस करता है, जो लाखों मोबाइल ऐप्लिकेशन के लिए सर्वरलेस आर्किटेक्चर प्रदान करता है।
मुख्य बिंदु
Firebase Cloud Functions एक कंप्यूटिंग प्लेटफ़ॉर्म है जो Google Cloud Functions (GCF) के शीर्ष पर बनाया गया है, जो Firebase पारिस्थितिकी तंत्र के लिए अनुकूलित है। फंक्शन सामान्य JavaScript या TypeScript कोड होते हैं जो एक मॉड्यूल से निर्यात किए जाते हैं और एक विशिष्ट इवेंट प्रकार के लिए पंजीकृत होते हैं। जब कोई इवेंट होता है (उदाहरण के लिए, कोई उपयोगकर्ता रजिस्टर करता है या फ़ाइल अपलोड करता है), Firebase Cloud Functions संबंधित कोड निष्पादित करता है, उसे इवेंट संदर्भ प्रदान करता है।
Cloud Functions की आर्किटेक्चर एकल जिम्मेदारी सिद्धांत का पालन करती है: एक फंक्शन एक इवेंट प्रकार को संभालता है और एक परमाणु ऑपरेशन करता है। उदाहरण के लिए, sendWelcomeEmail फंक्शन Firebase Authentication में नया उपयोगकर्ता बनने पर ट्रिगर होता है और स्वागत ईमेल भेजता है। ऐसा पृथक्करण डिबगिंग, परीक्षण और विभिन्न प्रोजेक्ट्स में फंक्शन के पुन: उपयोग को सरल बनाता है।
प्रत्येक फंक्शन एक अस्थायी जीवनचक्र के साथ पृथक कंटेनर में चलता है। अधिकतम निष्पादन समय डिफ़ॉल्ट रूप से 60 सेकंड है (HTTPS फंक्शन — 9 मिनट)। यदि कोई फंक्शन टाइमआउट के भीतर पूरा नहीं होता है, तो अनुरोध त्रुटि 500 के साथ विफल हो जाता है। लंबे समय तक चलने वाले ऑपरेशन के लिए, रीट्राई के साथ Cloud Tasks या Pub/Sub का उपयोग करें। कंटेनर बाद की कॉल के लिए पुन: उपयोग किए जा सकते हैं (keep-alive), जो पहली कॉल के बाद कोल्ड स्टार्ट पर विलंबता को कम करता है।
Firebase Cloud Functions कई Node.js संस्करणों का समर्थन करता है: 18, 20 और 22 (नए प्रोजेक्ट के लिए अनुशंसित)। संस्करण package.json फ़ाइल के engines फ़ील्ड में निर्दिष्ट किया जाता है। Firebase CLI निर्दिष्ट संस्करण के आधार पर स्वचालित रूप से रनटाइम वातावरण कॉन्फ़िगर करता है। महत्वपूर्ण: Firebase Cloud Functions मनमाने Docker कंटेनर चलाने का समर्थन नहीं करता — वातावरण Google Cloud Functions द्वारा सख्ती से निर्धारित है।
नए प्रोजेक्ट के लिए, Node.js 22 अनुशंसित है, क्योंकि इसमें नवीनतम V8 ऑप्टिमाइज़ेशन, बेहतर ESM मॉड्यूल समर्थन और प्लेटफ़ॉर्म स्तर पर WebSocket समर्थन शामिल है। यदि कोई प्रोजेक्ट किसी विशिष्ट Node संस्करण के लिए बनाई गई निर्भरताओं का उपयोग करता है (उदाहरण के लिए, देशी C++ मॉड्यूल), तो संगतता की व्यक्तिगत रूप से जाँच की जानी चाहिए — सभी देशी मॉड्यूल GCF वातावरण में संकलित नहीं होते हैं।
Firebase Cloud Functions, Google Cloud Functions के ऊपर एक आवरण है जिसमें प्री-इंस्टॉल्ड Firebase SDK और Firebase सेवाओं के साथ एकीकरण है। डेवलपर firebase-functions SDK का उपयोग करके कोड लिखता है, जो सभी Firebase सेवाओं के लिए टाइप किए गए ट्रिगर प्रदान करता है। Google Cloud Functions एक निचले स्तर का प्लेटफ़ॉर्म है जहाँ ट्रिगर Eventarc या Pub/Sub के माध्यम से स्पष्ट रूप से कॉन्फ़िगर किए जाते हैं।
मुख्य अंतर: Firebase Cloud Functions में, एक ट्रिगर functions.firestore.document('path').onWrite() के माध्यम से घोषणात्मक रूप से पंजीकृत किया जाता है, जबकि Google Cloud Functions में इसे इवेंट विशेषता फ़िल्टरिंग के साथ Eventarc के माध्यम से कॉन्फ़िगर किया जाता है। Firebase Cloud Functions प्रोजेक्ट के सेवा खाता क्रेडेंशियल के साथ स्वचालित रूप से प्रारंभ किए गए Admin SDK के साथ भी आता है, जो अतिरिक्त सेटअप के बिना सभी Firebase सेवाओं तक पूर्ण पहुँच प्रदान करता है।
Firebase Cloud Functions 8 श्रेणियों के ट्रिगर का समर्थन करता है, प्रत्येक एक विशिष्ट Firebase या Google Cloud सेवा के अनुरूप है। ट्रिगर एक ऐसी शर्त है जो पूरी होने पर स्वचालित रूप से फंक्शन को आमंत्रित करती है। डेवलपर सीधे फंक्शन के जीवनचक्र का प्रबंधन नहीं करता: Firebase CLI ट्रिगर को Google Cloud Eventarc में पंजीकृत करता है, और क्लाउड प्लेटफ़ॉर्म इवेंट होने पर फंक्शन चलाता है।
सबसे लोकप्रिय ट्रिगर Firestore ट्रिगर हैं: onWrite, onCreate, onUpdate, onDelete। वे Firestore कलेक्शन में दस्तावेज़ बदलने पर सक्रिय होते हैं। फंक्शन को बदलाव से पहले और बाद में दस्तावेज़ के स्नैपशॉट मिलते हैं, जिससे मानों की तुलना करना और केवल विशिष्ट परिवर्तनों पर प्रतिक्रिया देना संभव होता है। उदाहरण के लिए, जब ऑर्डर की स्थिति “lंबित” से “भेज दिया गया” में बदलती है, तो उपयोगकर्ता को पुश सूचना भेजी जा सकती है।
Authentication ट्रिगर (onCreate, onDelete) उपयोगकर्ता खाता बनने या हटाए जाने पर सक्रिय होते हैं। इनका उपयोग उपयोगकर्ता डेटा प्रारंभ करने के लिए किया जाता है: Firestore में उपयोगकर्ता दस्तावेज़ बनाना, स्वागत ईमेल भेजना, एनालिटिक्स में लिखना। नोट: फंक्शन उपयोगकर्ता निर्माण को रद्द नहीं कर सकता — यह खाता पहले ही बन जाने के बाद निष्पादित होता है। पूर्व-सत्यापन के लिए, Identity Platform पर उपलब्ध Blocking Functions का उपयोग करें।
| ट्रिगर श्रेणी | इवेंट | उपयोग उदाहरण |
|---|---|---|
| Firestore | onWrite, onCreate, onUpdate, onDelete | लाइक जोड़ने पर लाइक काउंटर अपडेट करना |
| Authentication | onCreate, onDelete | रजिस्ट्रेशन पर उपयोगकर्ता प्रोफ़ाइल बनाना |
| Realtime DB | onWrite, onCreate, onUpdate, onDelete | चैट संदेश मॉडरेशन |
| Storage | onFinalize, onArchive, onDelete | इमेज अपलोड के बाद थंबनेल जनरेट करना |
| Pub/Sub | onPublish | Cloud Scheduler के माध्यम से अनुसूचित निष्पादन (cron) |
| HTTPS | onRequest | बाहरी सेवाओं के लिए REST API एंडपॉइंट |
HTTPS फंक्शन (onRequest) HTTP के माध्यम से सुलभ पूर्ण REST API एंडपॉइंट बनाने की अनुमति देते हैं। इवेंट-संचालित ट्रिगर के विपरीत, HTTPS फंक्शन https://{region}-{project}.cloudfunctions.net/{functionName} फ़ॉर्म के URL के माध्यम से कॉल किए जाते हैं। यदि एंडपॉइंट को ब्राउज़र या मोबाइल ऐप्लिकेशन से कॉल किया जाता है, तो CORS को सही ढंग से कॉन्फ़िगर करना महत्वपूर्ण है। Firebase SDK स्वचालित रूप से CORS हेडर शामिल नहीं करता — उन्हें मिडलवेयर के माध्यम से मैन्युअल रूप से जोड़ा जाना चाहिए।
मोबाइल क्लाइंट (Android, iOS) के लिए, CORS आवश्यक नहीं है क्योंकि देशी HTTP क्लाइंट क्रॉस-ओरिजिन नीति द्वारा प्रतिबंधित नहीं हैं। CORS केवल वेब अनुरोधों के लिए प्रासंगिक है। यदि आपका HTTPS फंक्शन ऐप और वेब दोनों से कॉल किया जाता है, तो सार्वभौमिक CORS हैंडलिंग जोड़ें: डेवलपमेंट के लिए res.set('Access-Control-Allow-Origin', '*') या प्रोडक्शन के लिए अनुमत डोमेन की सूची।
आवधिक निष्पादन (cron कार्य) के लिए, Cloud Scheduler और Pub/Sub के संयोजन का उपयोग करें। Cloud Scheduler एक शेड्यूल पर Pub/Sub टॉपिक को संदेश भेजता है, और Cloud Functions का onPublish ट्रिगर उस संदेश को प्रोसेस करता है। Firebase CLI प्रत्यक्ष cron सिंटैक्स का समर्थन नहीं करता — शेड्यूल Google Cloud कंसोल या Terraform के माध्यम से unix-cron फ़ॉर्मेट में कॉन्फ़िगर किया जाता है: 0 3 * * * (प्रतिदिन 3:00 बजे)।
उदाहरण कार्य: दैनिक न्यूज़लेटर, पुराने डेटा की सफाई, रिपोर्ट जनरेट करना, बाहरी APIs के साथ सिंक्रोनाइज़ेशन। महत्वपूर्ण: Cloud Scheduler एक भुगतान वाली Google Cloud सेवा है (प्रति कार्य लगभग $2 प्रति माह)। प्रत्येक सक्रियण एक अलग फंक्शन कॉल के रूप में गिना जाता है और मानक Cloud Functions दरों पर बिल किया जाता है।
Cloud Functions डेवलपमेंट Firebase CLI के माध्यम से प्रोजेक्ट इनिशियलाइज़ करने से शुरू होता है: firebase init functions। यह कमांड index.js (या index.ts) टेम्पलेट, package.json फ़ाइल और TypeScript कॉन्फ़िगरेशन (यदि चुना गया है) के साथ functions/ निर्देशिका बनाता है। इनिशियलाइज़ेशन के बाद, बस एक फंक्शन लिखें, इसे मॉड्यूल से निर्यात करें, और डिप्लॉय करने के लिए firebase deploy --only functions चलाएँ।
प्रत्येक फंक्शन उपयुक्त ट्रिगर विधि को कॉल करके पंजीकृत किया जाता है। HTTPS फंक्शन का उदाहरण: exports.helloWorld = functions.https.onRequest((req, res) => { res.send(“Hello!”); })। Firebase Functions एक अतुल्यकालिक मॉडल का उपयोग करते हैं: इवेंट-संचालित ट्रिगर (गैर-HTTPS) के लिए, फंक्शन को Promise लौटाना चाहिए। Firebase कंटेनर समाप्त करने से पहले Promise के पूरा होने की प्रतीक्षा करता है। यदि Promise वापस नहीं किया जाता है, तो फंक्शन अतुल्यकालिक संचालन समाप्त होने से पहले ही समाप्त हो सकता है।
स्थानीय डेवलपमेंट Firebase Emulator Suite के माध्यम से किया जाता है, जिसमें Cloud Functions एमुलेटर शामिल है। कमांड firebase emulators:start http://localhost:5001 पर सुलभ फंक्शन के साथ एक स्थानीय सर्वर शुरू करता है। एमुलेटर कोड बदलने पर हॉट रीलोड का समर्थन करता है और प्रोडक्शन वातावरण से पूरी तरह पृथक है, जो वास्तविक डेटा को जोखिम के बिना परीक्षण की अनुमति देता है।
निर्भरताएँ Cloud Functions के लिए package.json के माध्यम से प्रबंधित की जाती हैं। Firebase केवल प्रोडक्शन निर्भरताएँ (dependencies, devDependencies नहीं) स्थापित करता है। फंक्शन पैकेज का आकार कोल्ड स्टार्ट समय को प्रभावित करता है: निर्भरताओं की संख्या को कम करने की अनुशंसा की जाती है। Firebase Admin SDK के लिए firebase-admin निर्भरता पूर्व-स्थापित है — इसे मैन्युअल रूप से जोड़ने की आवश्यकता नहीं है।
गोपनीय डेटा (API कुंजियाँ, टोकन) फंक्शन कोड में संग्रहीत नहीं किया जाना चाहिए। कॉन्फ़िगरेशन संग्रहीत करने के लिए functions.config() का उपयोग करें: firebase functions:config:set stripe.key=“sk_...”। मान एन्क्रिप्टेड होते हैं और functions.config().stripe.key के माध्यम से रनटाइम पर उपलब्ध होते हैं। बड़े सीरियलाइज़्ड कॉन्फ़िगरेशन के लिए, Google Cloud Secret Manager का उपयोग करें।
लॉगिंग Cloud Functions में console.log, console.warn और console.error के माध्यम से की जाती है। सभी लॉग स्वचालित रूप से Google Cloud Logging में एकत्र किए जाते हैं और Firebase कंसोल (Functions > Logs) में उपलब्ध होते हैं। संरचित लॉगिंग के लिए, winston या pino लाइब्रेरी का उपयोग करें, जो JSON फ़ॉर्मेटिंग और लॉग स्तरों का समर्थन करती हैं।
त्रुटि प्रबंधन विश्वसनीयता के लिए महत्वपूर्ण है: Promise में एक अनहैंडल्ड अपवाद फंक्शन को त्रुटि के साथ समाप्त करता है, जिसके बाद Firebase स्वचालित रूप से एक्सपोनेंशियल बैकऑफ़ के साथ पुनः प्रयास करता है। पुनः प्रयासों की संख्या कॉन्फ़िगर करने योग्य है: 0 से अनंत तक। इवेंट-संचालित ट्रिगर के लिए, अस्थायी बाहरी सेवा विफलताओं के दौरान भी प्रत्येक इवेंट के प्रसंस्करण को सुनिश्चित करने के लिए पुनः प्रयास सक्षम करने की अनुशंसा की जाती है।
कोल्ड स्टार्ट (cold start) निष्क्रियता की अवधि के बाद फंक्शन के पहले आह्वान पर विलंब है, जब कोड वाला कंटेनर फिर से लोड और प्रारंभ किया जाता है। Firebase दस्तावेज़ीकरण (2026) के अनुसार, कोल्ड स्टार्ट पैकेज आकार, निर्भरताओं की संख्या और क्षेत्र के आधार पर 200 मिलीसेकंड से 2 सेकंड तक लेता है। उपयोगकर्ता इंटरफ़ेस के लिए, 1 सेकंड से अधिक की देरी ध्यान देने योग्य है और उपयोगकर्ता अनुभव को प्रभावित कर सकती है।
कोल्ड स्टार्ट को कम करने के तरीके: निर्भरताएँ कम करें, CommonJS में संकलित TypeScript का उपयोग करें, फंक्शन पैकेज का आकार कम करें, सक्रिय इंस्टेंस की न्यूनतम संख्या निर्धारित करें। Firebase Cloud Functions v2 (दूसरी पीढ़ी) minInstances सेट करने की अनुमति देता है — हमेशा अनुरोधों को संसाधित करने के लिए तैयार गर्म कंटेनरों की न्यूनतम संख्या। कंटेनरों को गर्म रखने पर निष्क्रिय समय के लिए शुल्क लगता है।
स्केलिंग Cloud Functions में स्वचालित रूप से होती है: अनुरोधों की मात्रा बढ़ने पर, Firebase नए कंटेनर बनाता है। डिफ़ॉल्ट रूप से, समानांतर इंस्टेंस की अधिकतम संख्या 3000 है (Google Cloud प्रोजेक्ट कोटा)। प्रत्येक इंस्टेंस एक समय में एक अनुरोध संभालता है। यदि कोई फंक्शन तेज़ है (100 मिलीसेकंड से कम), तो एक इंस्टेंस प्रति सेकंड 10 अनुरोधों तक संभाल सकता है, जो प्रति प्रोजेक्ट प्रति सेकंड 30,000 अनुरोधों तक की पीक थ्रूपुट प्रदान करता है।
minInstances एक पैरामीटर है जो कंटेनरों की एक निर्दिष्ट संख्या आरक्षित करता है और उन्हें गर्म रखता है। यह महत्वपूर्ण HTTPS फंक्शन के लिए अनुशंसित है जहाँ कोल्ड स्टार्ट विलंबता अस्वीकार्य है। उदाहरण के लिए, प्रमाणीकरण एंडपॉइंट के लिए, minInstances: 1 सेट करें। maxInstances समानांतर इंस्टेंस की अधिकतम संख्या को सीमित करता है, जो अचानक ट्रैफ़िक स्पाइक के दौरान अनियंत्रित लागत वृद्धि को रोकने के लिए उपयोगी है।
कॉन्फ़िगरेशन कोड में किया जाता है: functions.runWith({ minInstances: 1, maxInstances: 10 })। महत्वपूर्ण: minInstances लागत बढ़ाता है क्योंकि कंटेनर लगातार चलते रहते हैं। परीक्षण प्रोजेक्ट के लिए, minInstances अक्षम किया जाना चाहिए। प्रोडक्शन के लिए, सभी सार्वजनिक HTTPS फंक्शन के लिए minInstances अनुशंसित है और इवेंट-संचालित ट्रिगर के लिए 0 जहाँ 1 सेकंड की देरी महत्वपूर्ण नहीं है।
डिप्लॉयमेंट क्षेत्र अंतिम उपयोगकर्ताओं के लिए विलंबता और आउटगोइंग ट्रैफ़िक की लागत को प्रभावित करता है। Firebase Cloud Functions 30+ Google Cloud क्षेत्रों में उपलब्ध है। मोबाइल ऐप्लिकेशन के लिए, अपने लक्षित दर्शकों के सबसे निकट का क्षेत्र चुनें: अमेरिका के लिए us-central1, यूरोप के लिए europe-west1, एशिया के लिए asia-east2। फंक्शन को पुनः डिप्लॉय किए बिना क्षेत्र को बदला नहीं जा सकता।
क्षेत्र बदलना कोड में region पैरामीटर के माध्यम से किया जाता है: functions.region('europe-west1')। एक फ़ाइल में सभी फंक्शन के अलग-अलग क्षेत्र हो सकते हैं। वैश्विक प्रोजेक्ट के लिए, कई क्षेत्रों में फंक्शन डिप्लॉय करने और ट्रैफ़िक वितरण के लिए Cloud Load Balancing का उपयोग करने की अनुशंसा की जाती है, हालाँकि अधिकांश मोबाइल ऐप्लिकेशन के लिए सही ढंग से चुने जाने पर एक क्षेत्र पर्याप्त है।
आइए TypeScript में Cloud Functions के व्यावहारिक उदाहरण देखें। कोड ES मॉड्यूल सिंटैक्स के साथ Firebase Functions SDK v2 (दूसरी पीढ़ी) का उपयोग करता है। उदाहरणों में उपयोगकर्ता निर्माण इवेंट को संभालना, इमेज अपलोड पर थंबनेल जनरेट करना और REST API के लिए एक सरल HTTPS एंडपॉइंट शामिल है। सभी फंक्शन अतुल्यकालिक हैं और उचित कंटेनर समाप्ति के लिए Promise लौटाते हैं।
चलाने से पहले, सुनिश्चित करें कि Firebase CLI संस्करण 13+ में अपडेट किया गया है: npm install -g firebase-tools। फंक्शन v2 के लिए Blaze मूल्य योजना आवश्यक है। इनिशियलाइज़ेशन: TypeScript चयनित के साथ firebase init functions।
पहला उदाहरण — जब कोई नया उपयोगकर्ता रजिस्टर करता है तो Firestore में दस्तावेज़ बनाना। फंक्शन auth.user().onCreate इवेंट द्वारा ट्रिगर होता है और users/{uid} कलेक्शन में एक बुनियादी प्रोफ़ाइल लिखता है। यह सुनिश्चित करता है कि प्रत्येक पंजीकृत उपयोगकर्ता के पास आवश्यक फ़ील्ड वाला एक दस्तावेज़ हो।
import * as functions from "firebase-functions"
import * as admin from "firebase-admin"
admin.initializeApp()
export const createUserProfile = functions.auth
.user()
.onCreate(async (user) => {
const profile = {
email: user.email,
displayName: user.displayName ?? "User",
createdAt: admin.firestore.Timestamp.now(),
role: "free",
avatarUrl: null,
}
await admin.firestore()
.collection("users")
.doc(user.uid)
.set(profile)
console.log(`Profile created for ${user.uid}`)
})
createUserProfile फंक्शन अतुल्यकालिक है — यह एक Promise लौटाता है जिसे Firebase समाप्ति से पहले प्रतीक्षा करता है। यदि Firestore में लिखना विफल होता है (उदाहरण के लिए, अपर्याप्त अनुमतियों के कारण), तो फंक्शन स्वचालित रूप से पुनः प्रयास किया जाएगा (यदि पुनः प्रयास सक्षम है)। “free” मान वाला role फ़ील्ड resource.data.role की आवश्यक पहुँच स्तर से तुलना करके सीधे Firestore Security Rules में मुफ्त योजना प्रतिबंधों को लागू करने की अनुमति देता है।
दूसरा उदाहरण — इमेज अपलोड होने के बाद स्वचालित रूप से थंबनेल जनरेट करने के लिए एक Storage ट्रिगर। फंक्शन 200×200 पिक्सेल की एक छोटी प्रतिलिपि बनाता है और इसे thumb_ उपसर्ग के साथ मूल फ़ाइल के पथ पर सहेजता है। इमेज प्रोसेसिंग sharp लाइब्रेरी का उपयोग करती है, जो सभी सामान्य फ़ॉर्मेट का समर्थन करती है और सिस्टम निर्भरताओं के बिना Node.js वातावरण में काम करती है।
import * as path from "path"
import * as os from "os"
import * as sharp from "sharp"
export const generateThumbnail = functions.storage
.object()
.onFinalize(async (object) => {
if (!object.contentType?.startsWith("image/")) return
const filePath = object.name!
const thumbPath = filePath.replace(
/(\.\w+)$/, "_thumb$1"
)
const bucket = admin.storage().bucket()
const tempDir = os.tmpdir()
const tempFile = path.join(tempDir, path.basename(filePath))
await bucket.file(filePath).download({ destination: tempFile })
await sharp(tempFile)
.resize(200, 200, { fit: "cover" })
.toFile(tempFile.replace(/(\.\w+)$/, "_thumb$1"))
await bucket.upload(tempFile.replace(
/(\.\w+)$/, "_thumb$1"
), { destination: thumbPath })
})
generateThumbnail फंक्शन ऑब्जेक्ट के Content-Type की जाँच करता है और गैर-इमेज को अनदेखा करता है, जिससे संसाधनों की बचत होती है। sharp का उपयोग करने के लिए, निर्भरता को package.json में जोड़ा जाना चाहिए। थंबनेल fit: “cover” पैरामीटर के साथ बनाया जाता है, जो इमेज को केंद्र से 200×200 पिक्सेल वर्ग में क्रॉप करता है। निर्माण के बाद, थंबनेल को संशोधित नाम के साथ उसी बकेट में वापस अपलोड किया जाता है।
तीसरा उदाहरण — एक HTTPS फंक्शन जो सर्वर स्थिति की जाँच के लिए REST API एंडपॉइंट लागू करता है। फंक्शन GET अनुरोध स्वीकार करता है और प्रोजेक्ट से जुड़ी Firebase सेवाओं की स्थिति के बारे में JSON लौटाता है। यह एंडपॉइंट निगरानी और बाहरी सिस्टम के लिए उपयोगी है जिन्हें डेटा भेजने से पहले बैकएंड की उपलब्धता सत्यापित करनी होती है।
import * as express from "express"
const app = express.Router()
app.get("/status", async (req, res) => {
try {
const db = admin.firestore()
await db.collection("_health").doc("check").get()
res.json({ status: "ok", timestamp: Date.now() })
} catch (error) {
res.status(503).json({ status: "error", message: error })
}
})
export const api = functions.https.onRequest(app)
api फंक्शन रूटिंग के लिए express Router का उपयोग करता है, जो एक फंक्शन में कई एंडपॉइंट बनाते समय सुविधाजनक है। हेल्थ चेक _health कलेक्शन में Firestore में लिखता है, जो एक साथ Firestore की उपलब्धता सत्यापित करने की अनुमति देता है। प्रोडक्शन के लिए, सार्वजनिक एंडपॉइंट के दुरुपयोग को रोकने के लिए API कुंजी या Firebase Auth टोकन के माध्यम से अनुरोध प्रमाणीकरण जोड़ने की अनुशंसा की जाती है।
Cloud Functions का उपयोग आमतौर पर उन कार्यों के लिए किया जाता है जो क्लाइंट पर नहीं किए जा सकते या नहीं किए जाने चाहिए: पुश सूचनाएँ भेजना, अपलोड की गई इमेज के पूर्वावलोकन जनरेट करना, बाहरी भुगतान प्रणालियों के साथ एकीकरण, सामग्री मॉडरेशन, Firebase और तृतीय-पक्ष सेवाओं के बीच डेटा सिंक्रोनाइज़ेशन। सर्वरलेस मॉडल इन कार्यों को लागत-प्रभावी बनाता है: आप केवल वास्तविक कोड निष्पादन समय के लिए भुगतान करते हैं।
भुगतान प्रणाली एकीकरण इन-ऐप खरीदारी वाले ऐप के लिए एक विशिष्ट परिदृश्य है। Cloud Functions भुगतान प्रदाता (Stripe, PayPal) से एक वेबहुक प्राप्त करता है, अनुरोध हस्ताक्षर सत्यापित करता है, Firestore में सदस्यता स्थिति अपडेट करता है, और उपयोगकर्ता को एक पुष्टिकरण भेजता है। सभी कोड सर्वर पर चलता है जिसमें क्लाइंट पर डेटा छेड़छाड़ का कोई जोखिम नहीं है। Stripe दस्तावेज़ीकरण (2026) के अनुसार, वेबहुक प्रसंस्करण में 500 मिलीसेकंड से कम समय लगता है।
स्मार्ट सामग्री मॉडरेशन Google Cloud Vision API के माध्यम से अपलोड की गई इमेज की स्वचालित जाँच के लिए Cloud Function Storage ट्रिगर का उपयोग करता है। फंक्शन असुरक्षित सामग्री (हिंसा, वयस्क सामग्री) का पता लगाने के लिए Vision API को इमेज भेजता है और, यदि सीमा पार हो जाती है, तो फ़ाइल हटा देता है और व्यवस्थापक को सूचित करता है। यह परिदृश्य उपयोगकर्ता गैलरी वाले UGC ऐप्लिकेशन के लिए महत्वपूर्ण है।
डेटा एग्रीगेशन — Firebase Realtime Database काउंटर के प्रतिस्थापन के रूप में Cloud Functions। क्लाइंट पर काउंटर पढ़ने और लिखने (जो रेस कंडीशन का कारण बनता है) के बजाय, एकत्रित फ़ील्ड के परमाणु अपडेट के लिए Firestore onWrite ट्रिगर का उपयोग करें। उदाहरण के लिए, एक फंक्शन /posts/{postId}/likes/{userId} उप-संग्रह में दस्तावेज़ जोड़े या हटाए जाने पर पोस्ट लाइक की संख्या गिनता है और मूल दस्तावेज़ में likesCount फ़ील्ड अपडेट करता है।
अक्सर पूछे जाने वाले प्रश्न
अधिकतम निष्पादन समय प्रकार पर निर्भर करता है: HTTPS फंक्शन — 9 मिनट, इवेंट-संचालित ट्रिगर — 60 सेकंड (v2: 60 मिनट तक)। लंबे समय तक चलने वाले ऑपरेशन के लिए, अतुल्यकालिक प्रसंस्करण के साथ Cloud Tasks या Pub/Sub का उपयोग करें। टाइमआउट कोड में runWith({ timeoutSeconds: 120 }) के माध्यम से कॉन्फ़िगर किया जाता है।
Firebase Emulator Suite का उपयोग करें: firebase emulators:start --only functions। एमुलेटर हॉट रीलोड समर्थन के साथ पोर्ट 5001 पर स्थानीय रूप से फंक्शन चलाता है। Firestore और Auth ट्रिगर के लिए, एमुलेटर वास्तविक सेवाओं को बदल देता है, जिससे प्रोडक्शन डेटा को जोखिम के बिना परिदृश्य परीक्षण की अनुमति मिलती है।
दूसरी पीढ़ी Google Cloud Run और Eventarc का उपयोग करती है, जो लंबा टाइमआउट (60 मिनट तक), एक इंस्टेंस द्वारा समवर्ती अनुरोध प्रसंस्करण और Google Cloud सेवाओं के साथ बेहतर एकीकरण प्रदान करती है। पहली पीढ़ी Google Cloud Functions का उपयोग करती है और इवेंट-संचालित फंक्शन के लिए 60 सेकंड तक सीमित है। Firebase नए प्रोजेक्ट दूसरी पीढ़ी के साथ शुरू करने की अनुशंसा करता है।
Firebase Cloud Functions आधिकारिक तौर पर केवल Node.js (JavaScript और TypeScript) का समर्थन करता है। Python के लिए, Python के लिए Firebase Admin SDK के साथ सीधे Google Cloud Functions का उपयोग करें। Firebase Admin SDK Python केवल कुछ Firebase-विशिष्ट ट्रिगर को छोड़कर सभी संचालन का समर्थन करता है जो केवल Node.js के माध्यम से उपलब्ध हैं।
प्रमाणित पहुँच के लिए, Authorization हेडर में Firebase ID टोकन सत्यापित करें: admin.auth().verifyIdToken(token)। सर्वर-टू-सर्वर एकीकरण के लिए, सेवा खाते या API कुंजियों के साथ Firebase Admin SDK का उपयोग करें। दर सीमित करने वाले सार्वजनिक एंडपॉइंट के लिए, Cloud Armor या मिडलवेयर के माध्यम से दर सीमित करने का उपयोग करें।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें