Vercel Workflows अब सामान्य रूप से उपलब्ध (GA) है

VVercel
Computing/SoftwareSmall Business/StartupsBusiness NewsInternet Technology

Transcript

00:00:00- हे, शुभ प्रभात, सभी को।
00:00:02आज हमारे साथ जुड़ने के लिए बहुत-बहुत धन्यवाद।
00:00:03हम जो साझा करने वाले हैं, उसके लिए मैं बहुत उत्साहित हूँ।
00:00:06तो अब एक दशक से, Vercel पर चलने वाला कोड
00:00:10मुख्य रूप से तत्काल वेब अनुरोधों के लिए बनाया गया था।
00:00:14लेकिन आज हमारे ग्राहक जो सबसे दिलचस्प सॉफ्टवेयर बनाते हैं
00:00:17वह अब उस मॉडल में फिट नहीं बैठता।
00:00:20और इन नए प्रोजेक्ट्स की संख्या तेजी से बढ़ रही है।
00:00:23सिर्फ पिछले कुछ महीनों में ही,
00:00:25Vercel में साप्ताहिक डिप्लॉयमेंट दोगुना हो गया है।
00:00:28और उन नए डिप्लॉयमेंट्स में से एक तिहाई कोडिंग एजेंटों से आते हैं,
00:00:31एक ऐसी संख्या जो एक हजार प्रतिशत बढ़ गई है
00:00:34सिर्फ छह महीनों में।
00:00:35लेकिन मेरे लिए सबसे दिलचस्प हिस्सा
00:00:38यह नहीं है कि हम कितना डिप्लॉय कर रहे हैं, बल्कि यह है कि हम क्या डिप्लॉय कर रहे हैं।
00:00:41वे एजेंट स्वयं एजेंटों को शिप (ship) कर रहे हैं।
00:00:44और जो एजेंट हमारे ग्राहक बनाते हैं,
00:00:48वे केवल एक बार जवाब देकर रुक नहीं जाते।
00:00:50उन्हें तर्क करने, टूल्स को कॉल करने, इंसानों का इंतज़ार करने की ज़रूरत होती है,
00:00:53और फिर यह सब दोबारा करना होता है।
00:00:55और इनमें से प्रत्येक वर्कफ़्लो को एक ऐसे बैकएंड की आवश्यकता होती है जो साथ चल सके।
00:00:58तो मैंने Vercel में जो देखा है,
00:01:02वह यह है कि जो टीम अभी सबसे तेज़ी से शिप कर रही है,
00:01:05वे बुनियादी ढांचे (infrastructure) का पुनर्निर्माण
00:01:07और कोडिंग क्यूज़ (queues) खुद नहीं बना रहे हैं,
00:01:08या स्क्रैच से रिट्राई लॉजिक नहीं लिख रहे हैं,
00:01:11या ऑब्जर्वेबिलिटी (observability) की वायरिंग भी नहीं कर रहे हैं।
00:01:13यह सब काम पहले ही हो चुका है।
00:01:15इसलिए वे हमारे इंफ्रास्ट्रक्चर प्रिमिटिव्स का उपयोग कर रहे हैं,
00:01:17वह चीज़ जिसे बनाने में हमने पिछला दशक बिताया है,
00:01:20ताकि वे अपना पूरा ध्यान अपने प्रोडक्ट पर केंद्रित कर सकें।
00:01:24और यही वह समस्या है जिसे हल करने के लिए हमने Workflows बनाया है।
00:01:27हमने इसे छह महीने पहले बीटा में लॉन्च किया था,
00:01:30और इसकी प्रतिक्रिया अविश्वसनीय थी।
00:01:33और अब, सौ मिलियन रन के बाद,
00:01:36हमें यह घोषणा करते हुए बहुत खुशी हो रही है कि Workflows आज GA (जनरल उपलब्धता) में है।
00:01:41मैं आपको दिखाता हूँ कि यह कैसे काम करता है।
00:01:43जो ऐप मैं आपको दिखाने जा रहा हूँ
00:01:44वह एक बर्थडे कार्ड जनरेटर है जिसे मैंने बनाया है।
00:01:47अब, यह वास्तव में कुछ भी हो सकता है,
00:01:49लेकिन यह उन सभी चीज़ों को छूता है जिनके बारे में हमने अभी बात की।
00:01:51यह एक सिंगल रिक्वेस्ट में फिट नहीं होता,
00:01:54यह इंसानों का इंतज़ार करता है, चीज़ें विफल होने पर रिट्राई करता है,
00:01:57और यूजर को वास्तविक समय में प्रगति स्ट्रीम करता है।
00:02:00तो, यहाँ बताया गया है कि यह कैसे काम करता है।
00:02:02मुझे खुद को एक कार्ड भेजने दें,
00:02:04और मैं अपना ईमेल दर्ज करके शुरुआत करूँगा।
00:02:05इसके बाद, मैं एक तारीख चुनूँगा,
00:02:09और मैं 23 अप्रैल चुनने जा रहा हूँ।
00:02:11अब, मुझे अपने जन्मदिन पर अलाव जलाना पसंद है,
00:02:14इसलिए मैं ओशन बीच बॉनफायर करूँगा,
00:02:17और मैं इसे सिर्फ खुद को भेज रहा हूँ, तो पर्नेट के लिए।
00:02:21और डेमो को आसान बनाने के लिए मैं यहाँ अपना ईमेल दर्ज करूँगा।
00:02:24तो, मैं खुद को अपने जन्मदिन के लिए RSVP करने वाला हूँ।
00:02:27बढ़िया, अब मैं जनरेट और सेंड पर क्लिक करूँगा,
00:02:30और मुझे बर्थडे कार्ड जनरेट होना शुरू होता दिखेगा।
00:02:34मैं Vercel डैशबोर्ड पर जाऊँगा
00:02:35जहाँ मैं देख सकता हूँ कि यह रन अभी-अभी आया है।
00:02:37मुझे अंदर क्लिक करने दें।
00:02:39और मैं इसे वास्तविक समय में देख सकता हूँ क्योंकि यह प्रॉम्प्ट जनरेट करता है,
00:02:42और फिर संदेश जनरेट करता है,
00:02:43और एक इमेज भी जनरेट करता है।
00:02:45यह वही ऑब्जर्वेबिलिटी है जिसके बारे में हम बात कर रहे थे।
00:02:48हर कदम यहाँ दिखाई दे रहा है।
00:02:50आप ठीक-ठीक देख सकते हैं कि क्या चल रहा है,
00:02:52क्या पूरा हो गया है, और क्या इंतज़ार कर रहा है।
00:02:54यूजर की तरफ,
00:02:57मैं देख सकता हूँ कि कार्ड जनरेट हो गया है,
00:02:58और RSVP ईमेल भेज दिए गए हैं।
00:03:01इस बिंदु पर, वर्कफ़्लो निलंबित (suspended) है।
00:03:04वास्तव में कोई कंप्यूटिंग नहीं हो रही है।
00:03:07यह किसी इंसान के जवाब देने का इंतज़ार कर रहा है,
00:03:09और मैं अभी अपने ईमेल में जाकर जवाब दे सकता हूँ,
00:03:12या कुछ घंटों या दिनों तक इंतज़ार करके तब जवाब दे सकता हूँ।
00:03:15यह प्रगति को ट्रैक करना जारी रखेगा।
00:03:18अब, ईमेल दिखाने से पहले,
00:03:20मैं वास्तव में आपको CLI दिखाना चाहता हूँ।
00:03:22Workflow पहले ही दिन CLI के साथ आता है
00:03:25जो आपको उन सभी चीज़ों का निरीक्षण करने देता है
00:03:27जो ऑब्जर्वेबिलिटी डैशबोर्ड पर उपलब्ध हैं।
00:03:29इसका मतलब है कि आपके और आपके एजेंटों के पास
00:03:32पूरी तस्वीर तक पहुँच है
00:03:35जब आप कुछ गलत होने पर उसे डीबग करने की कोशिश कर रहे हों।
00:03:37ठीक है, अब मेरे ईमेल पर चलते हैं।
00:03:40मुझे ईमेल तुरंत आता हुआ दिखना चाहिए।
00:03:43वह रहा।
00:03:44और मैं, यह बस मुझे RSVP करने के लिए कह रहा है।
00:03:46मैं हाँ (yes) पर क्लिक करूँगा, वह हो जाएगा।
00:03:49डैशबोर्ड पर वापस, मैं देख सकता हूँ कि हुक्स फिर से शुरू हो गए हैं,
00:03:53और मुझे स्लीप मोड में चले जाना चाहिए।
00:03:55यूजर डैशबोर्ड पर वापस, और मुझे वही चीज़ दिखेगी।
00:03:58अब हम RSVP का इंतज़ार नहीं कर रहे हैं,
00:04:00और अब यह बस 23 तारीख का इंतज़ार कर रहा है,
00:04:01ताकि यह जन्मदिन का कार्ड भेज सके।
00:04:03अब, मैं आपको दो हफ्ते इंतज़ार नहीं करवाना चाहता,
00:04:05इसलिए मैं डैशबोर्ड पर वापस जाऊँगा
00:04:06और यहीं से स्लीप मोड को जगा दूँगा।
00:04:09इससे वर्कफ़्लो तुरंत फिर से शुरू हो जाना चाहिए,
00:04:12और हम वर्कफ़्लो को पूरा होते देखेंगे।
00:04:14मुझे यूजर डैशबोर्ड पर वापस जाने दें।
00:04:17पोस्टकार्ड भेज दिया गया है।
00:04:18और मेरे ईमेल में, मुझे एक बर्थडे कार्ड मिलना चाहिए
00:04:22RSVP के साथ भी।
00:04:23बढ़िया।
00:04:24अब, मैं आपको कोड दिखाना चाहता हूँ,
00:04:26और उस बात को याद करें जो हमने पहले कही थी।
00:04:29आज जो टीमें सबसे तेज़ी से शिप कर रही हैं वे क्यूज़ (queues) सँभालने
00:04:32और स्टेट (state) तथा इंफ्रास्ट्रक्चर के प्रबंधन में नहीं उलझी हैं।
00:04:34वह पुराना तरीका है।
00:04:35Workflow में, हमने आज जो कुछ भी देखा है
00:04:38वह एक सिंगल फंक्शन है,
00:04:40और यह इस निर्देश से शुरू होता है, useWorkflow।
00:04:43यही एक निर्देश है जो इस फंक्शन को हफ्तों तक चलने,
00:04:48स्टेप्स के बीच रुकने और बिल्कुल वहीं से शुरू करने की अनुमति देता है जहाँ इसने छोड़ा था।
00:04:52तो जब वर्कफ़्लो किसी स्टेप को कॉल करता है,
00:04:53जैसे प्रॉम्प्ट जनरेट करना या इमेज जनरेट करना,
00:04:56वर्कफ़्लो फंक्शन को निलंबित कर देता है,
00:04:58काम को बैकग्राउंड में क्यू (queue) कर देता है।
00:05:00विफल होने पर यह इसे रिट्राई भी करेगा,
00:05:02और काम पूरा होने पर वर्कफ़्लो को फिर से शुरू कर देगा।
00:05:05पूरे समय, मुझे हर स्टेप की पूर्ण ऑब्जर्वेबिलिटी
00:05:07Vercel डैशबोर्ड पर मिलती रहती है।
00:05:11मैं इनमें से किसी एक पर क्लिक भी कर सकता हूँ,
00:05:13और डिफ़ॉल्ट रूप से, Vercel पर सब कुछ एन्क्रिप्टेड है,
00:05:16लेकिन मैं डेटा को डिक्रिप्ट करूँगा ताकि आप इनपुट देख सकें।
00:05:19हाँ, यह डैशबोर्ड और CLI दोनों पर उपलब्ध है।
00:05:22Workflows बिल्ट-इन स्ट्रीमिंग के साथ भी आता है।
00:05:24इसी तरह मैंने क्लाइंट को वास्तविक समय में अपडेट भेजे
00:05:29ताकि लाइव प्रगति को ट्रैक किया जा सके।
00:05:31इसे करने के लिए मुझे किसी डेटाबेस
00:05:33को लाने की ज़रूरत नहीं पड़ी।
00:05:34क्लाइंट डिस्कनेक्ट और रिकनेक्ट भी आसानी से कर सकता है।
00:05:37यह एक पर्सिस्टेंट स्ट्रीम है।
00:05:39ठीक है, और यहाँ हुक (hook) है।
00:05:42हर RSVP के लिए, मैं एक अल्पकालिक (ephemeral) वेबहुक URL बना रहा हूँ
00:05:46हैंड-टू-हैंड, फिर मैं उसे ईमेल में भेज रहा हूँ,
00:05:50और फिर मैं बस यहाँ नीचे उसका इंतज़ार कर सकता हूँ।
00:05:52वर्कफ़्लो यहीं रुक जाता है
00:05:56जब तक कि हर व्यक्ति अपने लिंक पर क्लिक नहीं कर देता।
00:05:59इसमें कोई डेटाबेस शामिल नहीं है,
00:06:01और परिणाम भी केवल स्थानीय जावास्क्रिप्ट वेरिएबल्स में रहते हैं।
00:06:05वर्कफ़्लो अपनी पूरी स्टेट खुद रखता है।
00:06:08यह वह डिस्ट्रीब्यूटेड सिस्टम्स मशीनरी है
00:06:11जिसके बारे में हमने कहा था कि वह अब गायब हो गई है।
00:06:12आपको अब इन चीज़ों के बारे में सोचने की ज़रूरत नहीं है।
00:06:14ठीक है, अंत में, अपने जन्मदिन के लिए
00:06:17स्लीप मोड का उपयोग करते हैं।
00:06:18यह यहीं है।
00:06:19यह स्लीप कुछ सेकंड,
00:06:21दिनों या हफ्तों की भी हो सकती है जैसा हमने अभी किया।
00:06:24और जब यह सो रहा होता है, तो वर्कफ़्लो बस सस्पेंडेड रहता है
00:06:27बिना किसी कंप्यूटिंग के।
00:06:29जब यह जागता है, तो यह बिल्कुल वहीं से जारी रहता है जहाँ से इसने छोड़ा था,
00:06:33और रास्ते भर स्टेट को बनाए रखता है।
00:06:34और बस यही सब कुछ है।
00:06:37यह एक ऐसा फंक्शन है जिसे आप ऊपर से नीचे तक पढ़ सकते हैं
00:06:40और शुरू से अंत तक समझ सकते हैं।
00:06:43हर स्टेप एक क्यू (queue) द्वारा समर्थित है,
00:06:45यह स्वचालित रूप से रिट्राई किया जाता है,
00:06:47और अपने स्वयं के सर्वरलेस फंक्शन पर चलता है।
00:06:49कोई टाइमआउट सीमा नहीं है,
00:06:51इसलिए वर्कफ़्लो जितनी ज़रूरत हो उतनी देर तक चल सकते हैं।
00:06:54हमारा यही मतलब है
00:06:56जब हम कहते हैं कि Vercel नीचे की हर चीज़ को सँभालता है।
00:06:59आप बस लॉजिक लिख सकते हैं और बाकी का ध्यान हम रखेंगे।
00:07:02अब, इस डेमो में, मैंने आपको एक साधारण उपयोग का मामला दिखाया,
00:07:07लेकिन हमारे ग्राहक वर्कफ़्लो का उपयोग
00:07:09ज़बरदस्त पैमाने पर प्रोडक्शन में एजेंट चलाने के लिए करते हैं।
00:07:12Mux वर्कफ़्लो का उपयोग यह सुनिश्चित करने के लिए करता है कि वीडियो जनरेशन पाइपलाइन
00:07:17हर बार विश्वसनीय रूप से चले।
00:07:19और Flora वर्कफ़्लो के साथ 50 इमेज जनरेशन मॉडल्स में
00:07:23समानांतर क्रिएटिव एजेंटों को व्यवस्थित कर रहा है।
00:07:27Durable एक छोटी सी टीम है
00:07:30जो 3 मिलियन ग्राहक वेबसाइटों को होस्ट करती है,
00:07:33और वे अपने यूजर्स को हर दिन नए एजेंट शिप करने के लिए
00:07:35वर्कफ़्लो का उपयोग करते हैं।
00:07:38अब, मैंने इस डेमो की शुरुआत
00:07:40यह कहकर की थी कि सबसे दिलचस्प सॉफ्टवेयर
00:07:42जो हमारे ग्राहक बनाते हैं वह अब एक सिंगल रिक्वेस्ट में फिट नहीं होता।
00:07:46और हम इस तरह के और भी ऐप्स देख रहे हैं
00:07:50जो हर दिन डिप्लॉय किए जा रहे हैं।
00:07:51एजेंट्स, एजेंट्स को शिप कर रहे हैं,
00:07:54और जो टीमें उन्हें बना रही हैं वे क्यूज़ (queues) के बारे में नहीं सोच रही हैं,
00:07:58वे अपने ग्राहक की समस्याओं पर ध्यान केंद्रित कर रही हैं।
00:08:01और यह बदलाव सिर्फ Vercel के अंदर ही नहीं हो रहा है।
00:08:05हमारे ग्राहक डिप्लॉयमेंट दोगुने हो रहे हैं,
00:08:07और पहले से कहीं कम इंजीनियर खुद इंफ्रास्ट्रक्चर तैयार कर रहे हैं।
00:08:11तो आप जो भी ऐप या एजेंट बनाना चाहते हैं,
00:08:16वर्कफ़्लो उसे विश्वसनीय,
00:08:18लंबे समय तक चलने वाला, टिकाऊ और ऑब्जर्वेबल बना देगा।
00:08:22आपके लैपटॉप से लेकर दस लाख यूजर्स तक
00:08:25सब कुछ उसी एप्लिकेशन कोड के साथ।
00:08:27Workflows आज सामान्य रूप से उपलब्ध है,
00:08:31तो जाइए और कुछ ऐसा शिप कीजिए जो काम करे।
00:08:37[खामोश ऑडियो]

Key Takeaway

Vercel Workflows डेवलपर्स को जटिल इंफ्रास्ट्रक्चर कोड के बिना लंबे समय तक चलने वाले, टिकाऊ और स्वचालित रूप से रिट्राई होने वाले एजेंटिक वर्कफ़्लो बनाने की अनुमति देता है।

Highlights

Vercel Workflows अब बीटा के बाद 100 मिलियन रन पूरे करके सामान्य उपलब्धता (GA) चरण में प्रवेश कर चुका है।

पिछले छह महीनों में कोडिंग एजेंटों से होने वाले डिप्लॉयमेंट में 1000% की वृद्धि दर्ज की गई है।

यह सिस्टम जटिल डिस्ट्रीब्यूटेड मशीनरी जैसे क्यू (queues), रिट्राई लॉजिक और डेटाबेस मैनेजमेंट की आवश्यकता को समाप्त करता है।

Workflows बिना किसी टाइमआउट सीमा के चलता है, जिससे फंक्शन्स को हफ्तों तक निलंबित (suspend) रखने और फिर से शुरू करने की सुविधा मिलती है।

Mux और Flora जैसे ग्राहक वीडियो पाइपलाइन और 50 से अधिक इमेज जनरेशन मॉडल्स को समानांतर में व्यवस्थित करने के लिए इसका उपयोग कर रहे हैं।

सभी वर्कफ़्लो स्टेप्स Vercel डैशबोर्ड और CLI के माध्यम से पूरी तरह से एन्क्रिप्टेड और ऑब्जर्वेबल हैं।

Timeline

आधुनिक सॉफ्टवेयर और कोडिंग एजेंटों का उदय

  • Vercel पर साप्ताहिक डिप्लॉयमेंट पिछले कुछ महीनों में दोगुना हो गया है।
  • नए डिप्लॉयमेंट्स में से एक तिहाई हिस्सा अब कोडिंग एजेंटों का है।
  • आधुनिक एप्लिकेशन अब केवल तत्काल वेब अनुरोधों तक सीमित नहीं हैं।

सॉफ्टवेयर विकास का मॉडल बदल रहा है जहाँ एजेंटों को तर्क करने, टूल्स कॉल करने और इंसानों की प्रतिक्रिया का इंतज़ार करने की आवश्यकता होती है। तेजी से शिप करने वाली टीमें अब बुनियादी ढांचे को दोबारा बनाने के बजाय बने-बनाए इंफ्रास्ट्रक्चर प्रिमिटिव्स का उपयोग कर रही हैं। इससे डेवलपर का पूरा ध्यान केवल उत्पाद की मुख्य विशेषताओं पर केंद्रित रहता है।

Workflows की कार्यप्रणाली और ऑब्जर्वेबिलिटी

  • Workflows 100 मिलियन सफल रन के बाद अब आधिकारिक तौर पर GA में उपलब्ध है।
  • सिस्टम वास्तविक समय में यूजर को प्रगति स्ट्रीम करता है और विफलताओं पर स्वतः रिट्राई करता है।
  • काम रुकने पर कोई कंप्यूटिंग लागत नहीं आती है और स्टेट को सुरक्षित रखा जाता है।

एक बर्थडे कार्ड जनरेटर उदाहरण के माध्यम से यह दिखाया गया है कि कैसे वर्कफ़्लो इमेज जनरेशन और संदेश निर्माण जैसे कई स्टेप्स को संभालता है। Vercel डैशबोर्ड प्रत्येक स्टेप की रीयल-टाइम ट्रैकिंग प्रदान करता है जिससे यह पता चलता है कि क्या पूरा हुआ और क्या लंबित है। जब प्रक्रिया किसी मानवीय प्रतिक्रिया का इंतज़ार करती है, तो वर्कफ़्लो निलंबित हो जाता है लेकिन प्रगति को ट्रैक करना जारी रखता है।

CLI एकीकरण और वेबहुक हैंडलिंग

  • Workflow CLI डैशबोर्ड की तरह ही पूरी ऑब्जर्वेबिलिटी और डीबगिंग क्षमताएं प्रदान करता है।
  • अल्पकालिक (ephemeral) वेबहुक URL के माध्यम से बाहरी प्रतिक्रियाओं का इंतज़ार करना सरल है।
  • डेवलपर्स डैशबोर्ड से ही स्लीप मोड में मौजूद वर्कफ़्लो को मैन्युअल रूप से जगा सकते हैं।

CLI टूल डेवलपर्स और उनके एजेंटों को सिस्टम की पूरी स्थिति तक पहुँच प्रदान करता है जो डीबगिंग के लिए आवश्यक है। RSVP जैसे कार्यों के लिए बिना किसी बाहरी डेटाबेस के वेबहुक बनाए जाते हैं। वर्कफ़्लो तब तक रुका रहता है जब तक आवश्यक लिंक पर क्लिक नहीं किया जाता, जिससे जटिल स्टेट मैनेजमेंट आसान हो जाता है।

useWorkflow निर्देश और कोड संरचना

  • useWorkflow निर्देश एक सिंगल फंक्शन को हफ्तों तक चलने और स्टेट बनाए रखने की अनुमति देता है।
  • डेटा को सुरक्षित रखने के लिए Vercel पर डिफ़ॉल्ट रूप से सब कुछ एन्क्रिप्टेड रहता है।
  • पर्सिस्टेंट स्ट्रीमिंग के कारण क्लाइंट बिना डेटा खोए डिस्कनेक्ट और रिकनेक्ट कर सकते हैं।

कोड के नजरिए से वर्कफ़्लो एक सरल जावास्क्रिप्ट फंक्शन है जहाँ प्रत्येक स्टेप एक क्यू (queue) द्वारा समर्थित होता है। यह सर्वरलेस फंक्शन की टाइमआउट सीमाओं को तोड़ता है क्योंकि प्रत्येक स्टेप अपने स्वयं के सर्वरलेस वातावरण में चलता है। लोकल वेरिएबल्स में परिणाम सुरक्षित रहते हैं जिससे डिस्ट्रीब्यूटेड सिस्टम की जटिलता गायब हो जाती है।

उत्पादन में वास्तविक उपयोग और निष्कर्ष

  • Mux और Durable जैसे प्लेटफॉर्म बड़े पैमाने पर वर्कफ़्लो का उपयोग कर रहे हैं।
  • Durable अपनी 3 मिलियन ग्राहक वेबसाइटों के लिए रोज़ाना नए एजेंट शिप करने के लिए इसका उपयोग करता है।
  • एप्लिकेशन कोड लैपटॉप से लेकर लाखों यूजर्स तक समान रूप से स्केल होता है।

वर्कफ़्लो का उपयोग केवल साधारण ऐप्स तक सीमित नहीं है बल्कि यह जटिल उत्पादन प्रणालियों में एजेंटों को व्यवस्थित कर रहा है। Flora जैसी टीमें 50 से अधिक इमेज मॉडल्स को एक साथ प्रबंधित करने के लिए इसकी शक्ति का लाभ उठा रही हैं। यह तकनीक डेवलपर्स को इंफ्रास्ट्रक्चर की चिंता किए बिना केवल ग्राहकों की समस्याओं को हल करने पर ध्यान केंद्रित करने की आजादी देती है।

Community Posts

View all posts