Cloudflare Dynamic Workers ने Sandboxes को बनाया 100 गुना तेज़

BBetter Stack
AI/미래기술창업/스타트업컴퓨터/소프트웨어

Transcript

00:00:00(उत्साहपूर्ण संगीत)
00:00:01तो Cloudflare ने हाल ही में डायनेमिक वर्कर्स की घोषणा की है,
00:00:04जो एक लो-लेवल वर्कर प्रिमिटिव है
00:00:06जिसे किसी मौजूदा वर्कर द्वारा प्रोग्रामेटिक रूप से बनाया जा सकता है।
00:00:09ये पारंपरिक कंटेनर की तुलना में सौ गुना तेज़
00:00:12और मेमोरी के मामले में अधिक कुशल हैं क्योंकि ये V8 आइसोलेट्स पर चलते हैं।
00:00:16और क्योंकि ये इतने सस्ते हैं,
00:00:18तो आप जितने चाहें उतने वर्कर बना सकते हैं
00:00:20AI द्वारा जनरेटेड कोड चलाने, डेवलपमेंट प्रीव्यू,
00:00:23कस्टम ऑटोमेशन और बहुत कुछ करने के लिए।
00:00:25मेरा मतलब है, उन्होंने यहाँ तक कहा कि आप चाहें तो
00:00:29प्रति सेकंड 10 लाख डायनेमिक वर्कर्स चला सकते हैं।
00:00:31लेकिन क्या इस पर केवल जावास्क्रिप्ट ही
00:00:33चला पाने की मजबूरी इसके उपयोग को सीमित करती है?
00:00:36सब्सक्राइब बटन दबाएं और आइए इसका पता लगाते हैं।
00:00:37(उत्साहपूर्ण संगीत)
00:00:40पिछले साल, मैंने Cloudflare सैंडबॉक्स पर एक वीडियो बनाया था,
00:00:44जो मूल रूप से कम समय के लिए चलने वाले लिनक्स कंटेनर हैं
00:00:47जो ड्यूरेबल ऑब्जेक्ट पर चलते हैं।
00:00:49अगर आपको यह समझ नहीं आया,
00:00:50तो आप जाकर वह वीडियो देख सकते हैं।
00:00:52लेकिन अगर आप फ़ाइल सिस्टम वाला एक पूरा OS कंटेनर चाहते हैं
00:00:55जो लगभग किसी भी भाषा और किसी भी बाइनरी
00:00:59को चलाने में सक्षम हो, तो वे इसके लिए एकदम सही हैं।
00:01:01लेकिन अगर आप कुछ ऐसा चाहते हैं जो थोड़ा तेज़ हो,
00:01:03वास्तव में बहुत अधिक तेज़ और बहुत हल्का हो
00:01:06जिसमें असीमित कंकरेंट सैंडबॉक्स चलाने की क्षमता हो
00:01:09और जिसकी सीमाएं एक सामान्य वर्कर जैसी ही हों,
00:01:12तो आप डायनेमिक वर्कर का चुनाव कर सकते हैं।
00:01:15आइए देखते हैं कि इसे सेटअप कैसे करना है।
00:01:16तो यहाँ एक बेसिक वर्कर है जिसे मैंने अभी Wrangler से बनाया है,
00:01:19जिसमें कुछ टाइपस्क्रिप्ट एरर्स हैं,
00:01:21शायद इसलिए क्योंकि मैं Wrangler types चलाना भूल गया।
00:01:23लेकिन हमारी Wrangler कॉन्फ़िगरेशन फ़ाइल में,
00:01:26मैंने यह 'worker loaders' एरे जोड़ा है
00:01:28जिसमें एक बाइंडिंग है जिसे 'loader' कहा जाता है।
00:01:30अब इसे आप जो चाहें कह सकते हैं,
00:01:32लेकिन मैंने 'loader' चुना है क्योंकि यह अधिक पारंपरिक है।
00:01:34और यह बाइंडिंग हमें अन्य वर्कर्स को
00:01:37बनाने और नियंत्रित करने की अनुमति देती है।
00:01:38तो अपडेटेड कोड में, हमारे पास एक नया वर्कर कॉन्स्टेंट है,
00:01:42जो इन वैल्यूज के साथ लोडर बाइंडिंग का उपयोग करता है।
00:01:45अब आप इसकी कल्पना नेस्टेड वर्कर के लिए
00:01:49एक Wrangler कॉन्फ़िग फ़ाइल की तरह कर सकते हैं,
00:01:50जहाँ कॉम्पैटिबिलिटी डेट वर्कर को बताती है
00:01:53कि उसे किस रनटाइम वर्ज़न का उपयोग करना चाहिए।
00:01:55और यहाँ वह कोड है जिसे यह चलाने वाला है।
00:01:57तो जैसा कि आप देख सकते हैं, कोड बिल्कुल
00:01:59एक वर्कर की तरह ही है।
00:02:00इसमें एक फ़ेच (fetch) फ़ंक्शन है
00:02:02जिसमें रिक्वेस्ट, env और कॉन्टेक्स्ट आर्ग्युमेंट्स हैं।
00:02:05और यह यहाँ बस सैंडबॉक्स से
00:02:06"Hello World" का रिस्पॉन्स दे रहा है।
00:02:08इसके बाद हमने सभी नेटवर्क एक्सेस को रोक दिया है,
00:02:10शुरुआती वर्कर के रिक्वेस्ट आर्ग्युमेंट्स के साथ फ़ेच फ़ंक्शन चला रहे हैं
00:02:13और रिजल्ट्स वापस कर रहे हैं।
00:02:16तो अगर हम अपना वर्कर लोकली चलाएं और फिर curl localhost करें,
00:02:19तो हमें सैंडबॉक्स से "Hello World" दिखना चाहिए।
00:02:21लेकिन अगर हम वही curl रिक्वेस्ट दोबारा चलाते हैं,
00:02:24तो हमें एक एरर मिलेगा।
00:02:24और ऐसा इसलिए है क्योंकि अभी
00:02:26हम एक बिल्कुल नया वर्कर लोड कर रहे हैं।
00:02:28लेकिन इसके बजाय हम एक मौजूदा वर्कर प्राप्त कर सकते हैं,
00:02:31जिसे हम 'worker 1' नाम देंगे
00:02:33और फिर कोड को एक async फ़ंक्शन के रूप में चलाएंगे।
00:02:35इसका मतलब है कि अब अगर हम curl चलाते हैं, तो हमें सैंडबॉक्स से रिस्पॉन्स मिलता है।
00:02:38लेकिन अगर हम इसे फिर से चलाते हैं, तो यह मौजूदा
00:02:41'worker 1' सैंडबॉक्स से जानकारी प्राप्त करता है।
00:02:43अब, मैंने अभी जो दिखाया
00:02:45वह निश्चित रूप से एक बहुत ही सरल उदाहरण था,
00:02:47लेकिन आप डायनेमिक वर्कर्स के साथ कुछ बेहतरीन चीज़ें कर सकते हैं
00:02:50जैसे कस्टम बाइंडिंग्स को डिफाइन करना,
00:02:52जैसे स्टब बनाने के लिए यह 'chatroom post' मेथड,” जिससे
00:02:55वर्कर cap-and-web का उपयोग करके कम्युनिकेट करता है,
00:02:57जिस पर हमने एक वीडियो बनाया है,
00:02:59तो अगर आपकी रुचि हो तो उसे ज़रूर देखें।
00:03:00आप Hono जैसी NPM डिपेंडेंसीज़ का उपयोग कर सकते हैं
00:03:03और 'create worker' फ़ंक्शन का उपयोग करके उन्हें बंडल कर सकते हैं।
00:03:05और आप क्रेडेंशियल्स इंजेक्ट करने जैसी चीज़ें करने के लिए
00:03:08आउटबाउंड रिक्वेस्ट्स को इंटरसेप्ट भी कर सकते हैं।
00:03:10लेकिन डायनेमिक वर्कर्स का उपयोग करने का एक बड़ा कारण
00:03:13AI एजेंटों द्वारा जनरेटेड कोड को चलाना है।
00:03:17तो चलिए ऐसा करने की कोशिश करते हैं।
00:03:18यहाँ E2B कुकबुक का कुछ कोड है
00:03:21जो Sonnet 3.5 चलाने के लिए Anthropic SDK का उपयोग करता है
00:03:25इस सिस्टम प्रॉम्प्ट और एक कस्टम टूल के साथ
00:03:28जुपिटर नोटबुक में कुछ पायथन कोड चलाने के लिए।
00:03:31तो यह इस तरह काम करता है कि यह पता लगाएगा
00:03:33कि कस्टम टूल का उपयोग कब किया जाता है
00:03:34और फिर उसे E2B सैंडबॉक्स के अंदर चलाएगा,
00:03:38जिसका कोड हम यहाँ देख सकते हैं।
00:03:40अब यह इसे इस बहुत ही विशिष्ट प्रॉम्प्ट के साथ चलाता है
00:03:42ताकि 1000 इटरेशन्स पर मोंटे कार्लो मेथड का उपयोग करके
00:03:46पाई (pi) की वैल्यू की गणना की जा सके।
00:03:47और क्योंकि इसके पास फ़ाइल सिस्टम का एक्सेस है,
00:03:50तो यह यह image.png बना सकता है
00:03:52और इसे यूज़र द्वारा डाउनलोड करने के लिए सेव कर सकता है
00:03:54या यूज़र जो भी चाहे वो कर सकता है।
00:03:56दुर्भाग्य से, डायनेमिक वर्कर्स के पास
00:03:58फ़ाइल सिस्टम का एक्सेस नहीं होता है,
00:04:00भले ही वे इस शेल लाइब्रेरी के साथ
00:04:02एक वर्चुअल फ़ाइल सिस्टम बना सकते हैं।
00:04:04लेकिन क्योंकि वे एक वर्कर के माध्यम से चलते हैं,
00:04:06तो हम इसे R2 बकेट जैसी डिटेल्स दे सकते हैं,
00:04:08जो Cloudflare का S3 वर्ज़न है
00:04:11जहाँ इमेज को सेव किया जा सकता है।
00:04:12तो अगर हम कोड को देखें,
00:04:14जो E2B वाले कोड के समान ही है,
00:04:16तो हम सबसे पहले इस्तेमाल किए जा रहे सिस्टम प्रॉम्प्ट को देख सकते हैं।
00:04:19और कस्टम पायथन एक्ज़ीक्यूशन टूल,
00:04:22जो इस मामले में जुपिटर नोटबुक का उपयोग नहीं करता है,
00:04:25लेकिन विज़ुअल्स की एक SVG ज़रूर जनरेट करता है।
00:04:28और यहाँ हमारे पास वर्कर का कोड है
00:04:30जो जावास्क्रिप्ट के साथ-साथ पायथन भी चला सकता है।
00:04:33तो हम यहाँ देख सकते हैं कि यह Sonnet 4.6 का उपयोग कर रहा है।
00:04:35यहाँ वह प्रॉम्प्ट है जिसका उपयोग किया जाता है।
00:04:37यहाँ एजेंट का कोड सैंडबॉक्स में एक्ज़ीक्यूट होता है।
00:04:41और सैंडबॉक्स से मिलने वाला रिस्पॉन्स
00:04:43वापस मुख्य वर्कर के पास जाता है,
00:04:45जो इसमें SVG कोड ढूंढता है
00:04:47और फिर उसे R2 में सेव कर देता है।
00:04:49तो अगर हम उस URL पर जाएं, तो इसमें थोड़ा समय लगता है,
00:04:51लेकिन यह क्लाउड (Claude) से प्राप्त
00:04:53सम्बन्धित जानकारी के साथ पेज जनरेट कर देता है।
00:04:55और अगर हम नीचे स्क्रॉल करें,
00:04:56तो हम इस SVG को देख सकते हैं जो R2 से लोड हो रही है।
00:05:01यह E2B वाले से काफी अलग दिख रहा है,
00:05:03लेकिन मुझे भरोसा है कि Claude Sonnet ने
00:05:04सही जानकारी ही दी होगी।
00:05:06और ज़ाहिर है कि मैंने ज़िक्र किया था कि प्रोग्रामेटिक रूप से
00:05:09जितने चाहें उतने डायनेमिक वर्कर बनाना भी संभव है,
00:05:13जिसे आप इस तरह के कोड से कर सकते हैं।
00:05:16यह एक 'for loop' है जो API से मिलने वाली वैल्यू के
00:05:19आधार पर बिल्कुल नए वर्कर्स बनाता है।
00:05:21और यह यह भी चेक करता है कि क्या कोई वर्कर पहले से मौजूद है
00:05:23और अगर है, तो उसे ही दोबारा इस्तेमाल करता है।
00:05:25यह जो कोड चलाता है वह मूल रूप से एक कंसोल लॉग है
00:05:27और वर्कर से मिलने वाला रिस्पॉन्स है
00:05:29जिसमें 'for loop' के इंडेक्स के आधार पर
00:05:31वर्कर की विशिष्ट ID होती है।
00:05:32तो कोड चलने के साथ,
00:05:34मैं 50 बिल्कुल नए डायनेमिक वर्कर्स बना सकता हूँ
00:05:36और हम देख सकते हैं कि वे सभी तुरंत बन जाते हैं।
00:05:40यह बहुत तेज़ था।
00:05:41अब चलिए 10,000 वर्कर्स के साथ कोशिश करते हैं,
00:05:43लेकिन मैं इसे लोकली नहीं करूँगा
00:05:44क्योंकि मैं अपनी मशीन को उड़ाना नहीं चाहता।
00:05:46इसलिए मैंने अपने पैरेंट वर्कर को Cloudflare पर डिप्लॉय कर दिया है
00:05:49ताकि मैं उनके इंफ्रास्ट्रक्चर का उपयोग कर सकूँ।
00:05:50तो यहाँ मैं 10,000 अलग-अलग वर्कर बनाने जा रहा हूँ।
00:05:53और अगर मैं एंटर दबाता हूँ, तो वे सभी बेहद तेज़ी से बन जाते हैं।
00:05:56हम देख सकते हैं कि यहाँ उनमें से 30 का एक पेज है
00:05:59तो मैं अलग-अलग वर्कर ID देखने के लिए आगे बढ़ सकता हूँ।
00:06:03और जैसे-जैसे मैं आगे बढ़ता हूँ, यह और अधिक पेज दिखाता जाता है।
00:06:05और मैं किसी विशिष्ट वर्कर से बात कर सकता हूँ
00:06:07जैसे 'worker 1156',
00:06:09जो रिस्पॉन्स देता है: "Hello from worker 1156"।
00:06:12तो यह डायनेमिक वर्कर्स का एक त्वरित अवलोकन था,
00:06:15जिनका उपयोग Cloudflare पहले से ही कोड मोड के लिए
00:06:18और Zite, LLM द्वारा जनरेटेड ऐप्स चलाने के लिए कर रहे हैं।
00:06:21लेकिन मुझे यह बताना चाहिए कि हालांकि वे अभी मुफ़्त हैं,
00:06:24वे हमेशा के लिए मुफ़्त नहीं रहेंगे।
00:06:25तो भले ही आप प्रति सेकंड 10 लाख
00:06:28डायनेमिक वर्कर चला सकते हैं, फिर भी आप रुकना चाह सकते हैं
00:06:30जब तक कि आपकी जेब बहुत भारी न हो।
00:06:32और जब हम Cloudflare के विषय पर बात कर रहे हैं,
00:06:34अगर आप उनके ओपन सोर्स VIVE SDK के बारे में अधिक जानना चाहते हैं
00:06:38जो आपको vZero और Lovable जैसे ऐप जनरेटर बनाने की सुविधा देता है,
00:06:42तो अगला वीडियो देखें।

Key Takeaway

Cloudflare Dynamic Workers डेवलपर्स को अत्यधिक तेज़, हल्के और किफायती सैंडबॉक्स प्रदान करते हैं जो प्रति सेकंड लाखों की संख्या में स्केल हो सकते हैं और विशेष रूप से AI-जनरेटेड कोड निष्पादन के लिए डिज़ाइन किए गए हैं।

Highlights

Cloudflare ने 'Dynamic Workers' पेश किया है, जो पारंपरिक कंटेनरों की तुलना में 100 गुना तेज़ और अधिक मेमोरी कुशल हैं।

ये वर्कर्स V8 आइसोलेट्स पर चलते हैं, जिससे इन्हें प्रोग्रामेटिक रूप से बनाना और बहुत कम लागत पर स्केल करना संभव होता है।

डायनेमिक वर्कर्स AI एजेंटों द्वारा जनरेट किए गए कोड को सुरक्षित रूप से चलाने और कस्टम ऑटोमेशन के लिए एक बेहतरीन समाधान हैं।

हालांकि इनके पास सीधा फ़ाइल सिस्टम एक्सेस नहीं है, लेकिन इन्हें R2 बकेट जैसी सेवाओं के साथ जोड़ा जा सकता है।

प्रयोगात्मक परीक्षणों में Cloudflare के इंफ्रास्ट्रक्चर पर 10,000 से अधिक वर्कर्स को तुरंत बनाना और चलाना प्रदर्शित किया गया है।

Timeline

डायनेमिक वर्कर्स का परिचय और लाभ

इस शुरुआती खंड में Cloudflare के नए 'Dynamic Workers' की घोषणा की गई है जो एक लो-लेवल वर्कर प्रिमिटिव है। वक्ता बताते हैं कि ये V8 आइसोलेट्स का उपयोग करते हैं, जिसके कारण ये पारंपरिक लिनक्स कंटेनरों की तुलना में 100 गुना अधिक तेज़ और मेमोरी कुशल हैं। इनका मुख्य लाभ यह है कि इन्हें मौजूदा वर्कर्स के भीतर से प्रोग्रामेटिक रूप से बनाया जा सकता है। यह तकनीक AI कोड चलाने, डेवलपमेंट प्रीव्यू और कस्टम ऑटोमेशन के लिए असीमित सैंडबॉक्स बनाने की क्षमता देती है। यहाँ तक कि प्रति सेकंड 10 लाख वर्कर्स चलाने की संभावना का भी उल्लेख किया गया है।

Wrangler के साथ सेटअप और बाइंडिंग

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

वर्कर का पुन: उपयोग और उन्नत सुविधाएँ

इस भाग में स्थानीय स्तर पर वर्कर को चलाने और 'curl' रिक्वेस्ट के माध्यम से परिणाम प्राप्त करने का प्रदर्शन किया गया है। वक्ता बताते हैं कि कैसे एक ही वर्कर सैंडबॉक्स को नाम देकर दोबारा इस्तेमाल किया जा सकता है, जिससे हर बार नया वर्कर लोड करने की आवश्यकता नहीं होती। इसके अलावा, डायनेमिक वर्कर्स की उन्नत क्षमताओं जैसे कस्टम बाइंडिंग्स को परिभाषित करना और 'cap-and-web' का उपयोग करके संचार करना भी बताया गया है। डेवलपर्स Hono जैसी NPM डिपेंडेंसीज़ का उपयोग कर सकते हैं और आउटबाउंड रिक्वेस्ट को इंटरसेप्ट करके क्रेडेंशियल्स इंजेक्ट कर सकते हैं। यह लचीलापन जटिल वेब अनुप्रयोगों और सुरक्षित संचार के लिए बहुत महत्वपूर्ण है।

AI एजेंटों के साथ एकीकरण और R2 स्टोरेज

वक्ता यहाँ एक व्यावहारिक उदाहरण देते हैं कि कैसे Anthropic के Claude Sonnet का उपयोग करके AI-जनरेटेड कोड को डायनेमिक वर्कर में चलाया जाता है। चूँकि इन वर्कर्स के पास अपना फ़ाइल सिस्टम नहीं होता, इसलिए वक्ता दिखाते हैं कि डेटा और इमेज को सहेजने के लिए Cloudflare R2 (S3 का विकल्प) का उपयोग कैसे किया जाता है। प्रदर्शन में मोंटे कार्लो पद्धति का उपयोग करके पाई के मान की गणना की जाती है और एक SVG विज़ुअलाइज़ेशन बनाया जाता है। एजेंट द्वारा बनाया गया यह SVG कोड R2 बकेट में स्टोर किया जाता है और फिर वेब पेज पर प्रदर्शित किया जाता है। यह उदाहरण सिद्ध करता है कि डायनेमिक वर्कर्स AI वर्कफ़्लो के लिए एक सुरक्षित और प्रभावी वातावरण प्रदान करते हैं।

बड़े पैमाने पर स्केलिंग और अंतिम विचार

वीडियो के अंतिम भाग में डायनेमिक वर्कर्स की वास्तविक शक्ति का प्रदर्शन 10,000 वर्कर्स को एक साथ चलाकर किया गया है। वक्ता 'for loop' का उपयोग करके क्लाउड इंफ्रास्ट्रक्चर पर हज़ारों विशिष्ट वर्कर ID के साथ तुरंत सैंडबॉक्स बनाते हैं, जो अविश्वसनीय रूप से तेज़ है। यह क्षमता Zite जैसे प्लेटफ़ॉर्म के लिए उपयोगी है जो LLM द्वारा जनरेट किए गए ऐप्स को रियल-टाइम में होस्ट करते हैं। अंत में, एक महत्वपूर्ण चेतावनी दी गई है कि हालांकि ये अभी मुफ़्त हैं, भविष्य में इनके लिए शुल्क लिया जा सकता है। वक्ता Cloudflare के VIVE SDK और अगले वीडियो में ऐप जनरेटर बनाने की चर्चा के साथ बात समाप्त करते हैं।

Community Posts

View all posts