Last chance! 50% off DataCamp Premium
Sale ends in
Azure Functions, Microsoft की सर्वरलेस कंप्यूट सेवा का हिस्सा हैं। यह आपको घटनाओं (events) के जवाब में छोटे-छोटे कोड चलाने देता है, बिना सर्वर स्वयं प्रबंधित किए।
उदाहरण के लिए, कोई फ़ंक्शन तब चल सकता है जब कोई HTTP अनुरोध आए, कोई फ़ाइल स्टोरेज पर अपलोड हो, या कोई तयशुदा समय आ जाए।
“सर्वरलेस” का अर्थ यह नहीं है कि सर्वर होते ही नहीं। इसका अर्थ है कि Azure आपके लिए अवसंरचना (infrastructure) का प्रबंधन करता है। Azure पर्दे के पीछे प्रोविज़निंग, स्केलिंग और रखरखाव संभालता है।
इस गाइड में, मैं मूल घटकों पर बात करूंगा—यानी ट्रिगर्स, बाइंडिंग्स, होस्टिंग विकल्प, और शुरुआत के लिए एक हैंड्स-ऑन उदाहरण।
Azure Function बस एक छोटा कोड टुकड़ा है जो आपके चुने गए किसी इवेंट से ट्रिगर होने पर चलता है। आप लॉजिक लिखते हैं, और बाकी काम Azure संभाल लेता है।
तीन विचार इस मॉडल को परिभाषित करते हैं।
आदर्श रूप में, एक अकेला फ़ंक्शन एक ही काम करता है, जैसे कोई इमेज का आकार बदलना या कोई संदेश प्रोसेस करना। Function App वह कंटेनर है जो एक या अधिक फ़ंक्शंस को रखता है। यह उनके साझा सेटिंग्स, जैसे कॉन्फ़िगरेशन और परिनियोजन (deployment), का प्रबंधन करता है।
किसी फ़ंक्शन का लाइफ़साइकिल आमतौर पर इस सरल पैटर्न का अनुसरण करता है:
यह प्रवाह भाषा या होस्टिंग विकल्प से लगभग समान रहता है। केवल ट्रिगर, कोड और बाइंडिंग्स बदलते हैं।
हर फ़ंक्शन का ठीक एक ट्रिगर होता है। ट्रिगर यह परिभाषित करता है कि फ़ंक्शन कैसे शुरू होता है। यहां वे सबसे आम प्रकार हैं जिन्हें आपको जानना चाहिए:
अक्सर ट्रिगर्स और बाइंडिंग्स में भ्रम हो जाता है, लेकिन भले ही वे समान दिखें, वे पूरी तरह अलग काम करते हैं। ट्रिगर फ़ंक्शन शुरू करता है, जबकि बाइंडिंग डेटा को पढ़कर या भेजकर फ़ंक्शन को उससे जोड़ती है।
यहां, आप बिना कस्टम इंटिग्रेशन कोड लिखे अपने फ़ंक्शन को डेटा देते हैं। उदाहरण के लिए, केवल बाइंडिंग घोषित करके कोई फ़ंक्शन स्वतः किसी डेटाबेस से रिकॉर्ड पढ़ सकता है।
यह आपके फ़ंक्शन का परिणाम कहीं और भेजने देता है। उदाहरण के लिए, आप प्रोसेस किया गया संदेश किसी क्यू में लिखने के लिए आउटपुट बाइंडिंग्स का उपयोग कर सकते हैं।
समझाने के लिए एक उदाहरण: जब कोई इमेज अपलोड होती है तो एक ब्लॉब स्टोरेज ट्रिगर फ़ंक्शन शुरू करता है। फिर एक आउटपुट बाइंडिंग रीसाइज़ की गई इमेज को किसी दूसरे स्टोरेज कंटेनर में सहेजती है। बाइंडिंग्स स्टोरेज कनेक्शंस संभालती हैं, और किसी मैनुअल स्टोरेज क्लाइंट कोड की ज़रूरत नहीं होती।
यहां एक बहुत ही सरल HTTP-ट्रिगर्ड फ़ंक्शन का उदाहरण है जो अभिवादन लौटाता है। प्रवाह इस प्रकार है:
मैंने यह उदाहरण जान-बूझकर छोटा रखा है ताकि पैटर्न साफ दिखे और बाकी आपकी रचनात्मकता करे।
Azure Functions कई भाषाओं का समर्थन करता है, जैसे:
समर्थन और विकास मॉडल भाषा व संस्करण के अनुसार बदल सकते हैं। इसलिए, नया प्रोजेक्ट शुरू करने से पहले वर्तमान Azure दस्तावेज़ देखना मैं सुझाता हूँ, क्योंकि ये विवरण अक्सर बदलते रहते हैं।
हर Azure Function एक ही तरह से नहीं चलती। Azure कई होस्टिंग प्लान देता है, जिनमें अलग-अलग समझौते (trade-offs) होते हैं। सही विकल्प आपके उपयोग-केस पर निर्भर करता है। मुख्य समझौते ये हैं:
प्रोडक्शन में फ़ंक्शन चलने के बाद दो और अवधारणाएँ मायने रखती हैं। ये हैं:
यहां Azure आपके फ़ंक्शन पर लोड देखता है, और मांग बढ़ने पर अधिक कंप्यूट इंस्टेंस जोड़ता है, तथा गिरने पर उन्हें हटाता है। आपको इसे मैनुअल रूप से प्रबंधित करने की ज़रूरत नहीं।
यदि कोई फ़ंक्शन हाल ही में नहीं चला है, तो नए अनुरोध को संभालने से पहले उसे शुरू होने में एक पल लग सकता है। इस विलंब को कोल्ड स्टार्ट कहते हैं। कुछ होस्टिंग प्लान इंस्टेंस को warm रखकर इसे घटाते या टालते हैं, जैसा ऊपर उल्लेख हुआ।
इवेंट-ड्रिवन मॉडल कई रोज़मर्रा की समस्याओं पर फिट बैठता है। विशेष रूप से:
लगातार पूरा वेब सर्वर चलाए बिना आने वाले HTTP अनुरोधों को संभालने के लिए।
जब भी कोई फ़ाइल स्टोरेज में आए, तब फ़ंक्शन ट्रिगर करें, फिर उसे रीसाइज़, कन्वर्ट या सिर्फ़ स्कैन करें।
किसी समर्पित हमेशा-ऑन सर्वर की आवश्यकता के बिना टाइमर पर क्लीनअप टास्क, रिपोर्ट्स या रिमाइंडर्स चलाने के लिए।
संदेशों या इवेंट्स को उनके आते ही, एक-एक चरण में प्रोसेस करने के लिए।
सेंसर या डिवाइस डेटा की बड़ी मात्रा को स्ट्रीम के रूप में आते ही संभालने के लिए।
धीमे या कभी-कभार के काम, जैसे ईमेल भेजना, को ऑफ़लोड करने के लिए ताकि आपकी मुख्य एप्लिकेशन अवरुद्ध न हो।
एक बार फ़ंक्शन लाइव हो जाए, तो उसके प्रदर्शन पर दृश्यता होना ज़रूरी है।
उदाहरण के लिए, आप लॉग्स देख सकते हैं जो हर रन के दौरान क्या हुआ, उसे सहेजते हैं—डीबगिंग के लिए बहुत उपयोगी। आप Azure टूल्स में Application Insights भी देख सकते हैं, जो प्रदर्शन, अनुरोध और विफलताओं को एक जगह ट्रैक करता है।
आपको इनवोकेशन विफलताओं को भी ट्रैक करना चाहिए ताकि आपको पता रहे कि कोई फ़ंक्शन कब और क्यों पूरा नहीं हुआ। प्रदर्शन मॉनिटरिंग आपको धीमे फ़ंक्शंस को समस्या बनने से पहले ही पकड़ने में मदद करती है, और निश्चित रूप से, रिट्राई व्यवहार कॉन्फ़िगर किया जा सकता है ताकि विफल निष्पादन स्वतः फिर कोशिश करें।
Azure Functions आपको इवेंट्स के जवाब में कोड चलाने का तरीका देती हैं, बिना नीचे के सर्वरों का प्रबंधन किए। ट्रिगर्स तय करते हैं कि फ़ंक्शन कब शुरू होगा। वहीं, बाइंडिंग्स बिना अतिरिक्त इंटिग्रेशन कोड के उस फ़ंक्शन को अन्य सेवाओं से जोड़ना आसान बनाती हैं।
जैसे-जैसे आप किसी साधारण टेस्ट फ़ंक्शन से प्रोडक्शन में चल रही चीज़ तक बढ़ते हैं, होस्टिंग और स्केलिंग के चुनाव बहुत महत्वपूर्ण हो जाते हैं। सही प्लान लागत के साथ-साथ गति और विश्वसनीयता को भी प्रभावित करता है।
मैं विकेंद्रीकृत डेटा और वितरित वर्कलोड पर फेडरेटेड ML पाइपलाइनों के साथ एज इंटेलिजेंस सक्षम करने वाले त्वरित AI सिस्टम पर काम करता/करती हूँ. मेरा काम बड़े मॉडल, स्पीच प्रोसेसिंग, कंप्यूटर विज़न, रिइनफोर्समेंट लर्निंग, और उन्नत ML टोपोलॉजी पर केंद्रित है।
एक सर्वरलेस सेवा जो इवेंट्स के जवाब में छोटे-छोटे कोड चलाती है, बिना आपके सर्वर प्रबंधित किए।
HTTP अनुरोध, टाइमर, फ़ाइल अपलोड, या क्यू संदेश जैसे इवेंट्स।
ट्रिगर फ़ंक्शन शुरू करता है। बाइंडिंग इनपुट या आउटपुट के लिए उसे अन्य सेवाओं से जोड़ती है।
जब फ़ंक्शन निष्क्रिय रहने के बाद शुरू होता है तो लगने वाली हल्की देरी।
C#, JavaScript/TypeScript, Python, Java, और PowerShell।
DataCamp के साथ Azure सीखें
कोर्स
कोर्स
कोर्स