Cloudflare Dynamic Workers تجعل بيئات Sandbox أسرع بـ 100 مرة

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

Transcript

00:00:00(موسيقى مبهجة)
00:00:01أعلنت Cloudflare مؤخراً عن الـ Dynamic Workers،
00:00:04وهي وحدة برمجية أساسية ومنخفضة المستوى
00:00:06يمكن إنشاؤها برمجياً بواسطة Worker موجود بالفعل.
00:00:09إنها أسرع بمئة مرة وأكثر كفاءة في استهلاك الذاكرة
00:00:12من الحاويات التقليدية لأنها تعمل على V8 isolates.
00:00:16ولأن تكلفتها زهيدة جداً،
00:00:18يمكنك تشغيل أي عدد تريده منها
00:00:20لتشغيل الأكواد المولدة بالذكاء الاصطناعي، ومعاينات التطوير،
00:00:23والأتمتة المخصصة، وغير ذلك الكثير.
00:00:25لقد ذكروا أنه يمكنك تشغيل مليون Dynamic Worker
00:00:29في الثانية الواحدة إذا أردت ذلك.
00:00:31ولكن، هل كونها لا تدعم سوى لغة JavaScript
00:00:33يحد من استخداماتها؟
00:00:36اشترك في القناة ولنكتشف ذلك معاً.
00:00:37(موسيقى مبهجة)
00:00:40في العام الماضي، قدمت فيديو عن Cloudflare sandboxes،
00:00:44وهي باختصار حاويات Linux قصيرة العمر
00:00:47تعمل على Durable Object.
00:00:49إذا لم تفهم ما أعنيه،
00:00:50فأنصحك بمشاهدة ذلك الفيديو.
00:00:52لكنها مثالية إذا كنت تريد حاوية بنظام تشغيل كامل
00:00:55مع نظام ملفات والقدرة على تشغيل أي لغة تقريباً
00:00:59وأي ملف تنفيذي.
00:01:01أما إذا كنت تبحث عن شيء أسرع،
00:01:03في الواقع أسرع بكثير وأخف وزناً،
00:01:06مع القدرة على تشغيل عدد غير محدود من البيئات المعزولة
00:01:09بنفس قيود الـ Worker العادي،
00:01:12فقد ترغب في استخدام Dynamic Worker.
00:01:15لنرى الآن كيفية إعداده.
00:01:16هذا Worker بسيط قمت بإنشائه باستخدام Wrangler،
00:01:19وهو مليء بأخطاء TypeScript،
00:01:21ربما لأنني نسيت تشغيل Wrangler types.
00:01:23ولكن في ملف إعدادات Wrangler الخاص بنا،
00:01:26أضفت مصفوفة "worker_loaders"
00:01:28مع رابط برمجي (binding) يسمى "loader".
00:01:30يمكنك تسميته بأي اسم تريده،
00:01:32لكنني اخترت "loader" لأنه أكثر تقليدية.
00:01:34وهذا الرابط يسمح لنا بإنشاء
00:01:37والتحكم في Workers آخرين.
00:01:38في الكود المحدث، لدينا ثابت (constant) جديد للـ Worker،
00:01:42والذي يستخدم رابط "loader" بهذه القيم.
00:01:45يمكنك تخيل هذا كملف إعدادات Wrangler
00:01:49للـ Worker المتداخل،
00:01:50حيث يحدد تاريخ التوافق (compatibility date)
00:01:53إصدار بيئة التشغيل التي يجب استخدامها.
00:01:55وهنا الكود الذي سيقوم بتشغيله.
00:01:57كما ترون، الكود مشابه جداً
00:01:59لكود الـ Worker نفسه.
00:02:00يحتوي على دالة fetch
00:02:02مع متغيرات الطلب (request) والبيئة (env) والسياق (context).
00:02:05وكل ما يفعله هنا هو الرد بعبارة
00:02:06"Hello world from the sandbox".
00:02:08لقد منعنا بعد ذلك كل وصول للشبكة،
00:02:10وقمنا بتشغيل دالة fetch بمتغيرات الطلب
00:02:13من الـ Worker الأساسي وإرجاع النتائج.
00:02:16إذا قمنا بتشغيل الـ Worker محلياً وطلبنا رابط localhost،
00:02:19سنرى عبارة "Hello from the sandbox".
00:02:21ولكن إذا كررنا الطلب مرة أخرى،
00:02:24سنحصل على خطأ.
00:02:24والسبب هو أننا حالياً
00:02:26نقوم بتحميل Worker جديد تماماً في كل مرة.
00:02:28بدلاً من ذلك، يمكننا استدعاء Worker موجود بالفعل،
00:02:31وسنطلق عليه اسم "worker1"
00:02:33ثم نقوم بتشغيل الكود كدالة غير متزامنة (async).
00:02:35هذا يعني أننا إذا كررنا الطلب، سنحصل على النتيجة.
00:02:38وعند تشغيله مجدداً، سيجلب المعلومات
00:02:41من بيئة "worker1" الموجودة مسبقاً.
00:02:43بالطبع، ما عرضته للتو
00:02:45كان مثالاً بسيطاً للغاية،
00:02:47لكن يمكنك القيام بأشياء رائعة مع الـ Dynamic Workers
00:02:50مثل تعريف روابط (bindings) مخصصة،
00:02:52مثل طريقة "chatroom post" هذه لإنشاء stub،
00:02:55والذي يتواصل معه الـ Worker باستخدام Cap'n Proto،
00:02:57والذي نعم، قد قدمنا فيديو عنه من قبل،
00:02:59لذا شاهده إذا كنت مهتماً.
00:03:00يمكنك استخدام مكتبات NPM مثل Hono
00:03:03وحزمها باستخدام دالة "create worker".
00:03:05ويمكنك حتى اعتراض الطلبات الخارجية
00:03:08للقيام بأشياء مثل حقن بيانات الاعتماد (credentials).
00:03:10لكن أحد الأسباب الكبرى لاستخدام الـ Dynamic Workers
00:03:13هو تشغيل الأكواد التي تولدها وكلاء الذكاء الاصطناعي.
00:03:17فلنجرب القيام بذلك.
00:03:18هذا كود من دليل E2B
00:03:21يستخدم مكتبة Anthropic لتشغيل موديل Sonnet 3.5
00:03:25بهذا التوجيه (system prompt) وأداة مخصصة
00:03:28لتنفيذ كود Python في Jupyter notebook.
00:03:31آلية العمل هنا هي اكتشاف
00:03:33متى يتم استخدام الأداة المخصصة
00:03:34ثم تشغيلها داخل بيئة E2B معزولة،
00:03:38ويمكننا رؤية الكود الخاص بذلك هنا.
00:03:40يتم التشغيل باستخدام هذا التوجيه المحدد
00:03:42لحساب قيمة ط (pi) باستخدام طريقة مونت كارلو
00:03:46عبر ألف تكرار.
00:03:47وبما أن لديه حق الوصول إلى نظام الملفات،
00:03:50يمكنه إنشاء صورة PNG
00:03:52وحفظها ليتم تحميلها من قبل المستخدم
00:03:54أو أياً كان ما يريده المستخدم.
00:03:56لسوء الحظ، الـ Dynamic Workers ليس لديهم وصول
00:03:58إلى نظام ملفات حقيقي،
00:04:00رغم أنهم يستطيعون إنشاء نظام افتراضي
00:04:02باستخدام هذه المكتبة.
00:04:04ولكن لأنهم يعملون من خلال Worker،
00:04:06يمكننا تزويدهم بتفاصيل مثل R2 bucket،
00:04:08وهي نسخة Cloudflare من خدمة S3
00:04:11حيث يمكن حفظ الصورة فيها.
00:04:12إذا نظرنا إلى الكود،
00:04:14وهو مشابه للكود الموجود في E2B،
00:04:16يمكننا أولاً رؤية التوجيه (system prompt) المستخدم.
00:04:19وأداة تنفيذ Python المخصصة
00:04:22والتي في هذه الحالة لا تستخدم Jupyter notebook،
00:04:25لكنها تولد رسماً بيانياً بصيغة SVG.
00:04:28وهنا لدينا كود الـ Worker
00:04:30الذي يمكنه تشغيل Python بالإضافة إلى JavaScript.
00:04:33كما نرى هنا، فإنه يستخدم Sonnet 3.5.
00:04:35وهذا هو التوجيه المستخدم.
00:04:37وهنا يتم تنفيذ كود العميل في البيئة المعزولة.
00:04:41والاستجابة من البيئة المعزولة
00:04:43تعود إلى الـ Worker الأساسي،
00:04:45الذي يبحث بداخلها عن كود SVG
00:04:47ثم يحفظه في R2.
00:04:49إذا زرنا هذا الرابط، سيستغرق الأمر بعض الوقت،
00:04:51لكنه يقوم بتوليد الصفحة
00:04:53بالمعلومات ذات الصلة من Claude.
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إنشاء أي عدد تريده من الـ Dynamic Workers برمجياً،
00:05:13وهو ما يمكنك فعله باستخدام كود مثل هذا.
00:05:16هذه حلقة تكرار (for loop) تنشئ Workers جدداً
00:05:19بناءً على القيمة القادمة من الواجهة البرمجية (API).
00:05:21كما أنها تتحقق مما إذا كان الـ Worker موجوداً بالفعل
00:05:23وتعيد استخدامه في حال وجوده.
00:05:25الكود الذي يتم تشغيله هو مجرد تسجيل في الكونسول
00:05:27واستجابة من الـ Worker
00:05:29بالمعرف (ID) الخاص به
00:05:31بناءً على مؤشر حلقة التكرار.
00:05:32عند تشغيل الكود،
00:05:34يمكنني إنشاء 50 Dynamic Worker جديد تماماً
00:05:36ونرى أنه يتم إنشاؤهم جميعاً في اللحظة نفسها.
00:05:40كان ذلك سريعاً جداً.
00:05:41الآن لنجرب مع 10,000،
00:05:43لكنني لن أفعل ذلك محلياً
00:05:44لأنني لا أريد تدمير جهازي.
00:05:46لذا قمت برفع الـ Worker الأب إلى Cloudflare
00:05:49لأتمكن من استخدام بنيتهم التحتية.
00:05:50سأقوم هنا بإنشاء 10,000 Worker مختلف.
00:05:53وبمجرد الضغط على Enter، يتم إنشاؤهم بسرعة جنونية.
00:05:56يمكننا رؤية صفحة تضم 30 منهم هنا
00:05:59ويمكنني الاستمرار في التصفح لرؤية جميع المعرفات.
00:06:03وكلما تصفحت أكثر، ظهرت صفحات أكثر.
00:06:05ويمكنني التواصل مع Worker محدد
00:06:07مثل Worker رقم 1156،
00:06:09والذي يرد بعبارة "Hello from worker 1156".
00:06:12كانت هذه نظرة سريعة على الـ Dynamic Workers
00:06:15التي تستخدمها Cloudflare بالفعل في Code Mode
00:06:18وشركة Zite لتشغيل التطبيقات المولدة بالذكاء الاصطناعي.
00:06:21ولكن يجب أن أنوه أنه رغم كونها مجانية حالياً،
00:06:24فلن تظل كذلك للأبد.
00:06:25لذا حتى لو كان بإمكانك تشغيل مليون Dynamic Worker
00:06:28في الثانية، فقد ترغب في التريث
00:06:30ما لم تكن ميزانيتك ضخمة جداً.
00:06:32وبما أننا نتحدث عن Cloudflare،
00:06:34إذا كنت تريد معرفة المزيد عن VIVE SDK مفتوح المصدر
00:06:38الذي يتيح لك بناء مولدات تطبيقات مثل v0 و Lovable،
00:06:42فشاهد الفيديو القادم.

Key Takeaway

تمثل Dynamic Workers من Cloudflare قفزة نوعية في تقنيات الـ Sandbox، حيث توفر سرعة وكفاءة غير مسبوقة لتشغيل الأكواد المعزولة والذكاء الاصطناعي بتكلفة منخفضة.

Highlights

تُعد Dynamic Workers وحدة برمجية منخفضة المستوى أسرع بـ 100 مرة من الحاويات التقليدية بفضل تقنية V8 isolates.

تسمح هذه التقنية بإنشاء والتحكم في Workers آخرين برمجياً من خلال رابط يسمى worker_loaders.

تتميز بكفاءة عالية في استهلاك الذاكرة وتكلفة زهيدة جداً مما يتيح تشغيل عدد هائل من البيئات المعزولة.

تعتبر حلاً مثالياً لتشغيل الأكواد المولدة بواسطة الذكاء الاصطناعي ومعاينات التطوير والأتمتة المخصصة.

على الرغم من دعمها للغة JavaScript بشكل أساسي، إلا أنه يمكن تشغيل Python واستخدام مكتبات NPM مثل Hono.

أثبتت التجارب قدرة البنية التحتية لـ Cloudflare على إنشاء 10,000 Worker في ثوانٍ معدودة وبشكل متزامن.

تستخدمها شركات مثل Zite وCloudflare في بيئات Code Mode لتشغيل التطبيقات المولدة بالذكاء الاصطناعي.

Timeline

مقدمة عن Dynamic Workers ومميزاتها التقنية

يبدأ المتحدث بالإعلان عن Dynamic Workers من Cloudflare كأداة برمجية أساسية ومنخفضة المستوى تتفوق على الحاويات التقليدية. يوضح الفيديو أنها أسرع بـ 100 مرة وأكثر كفاءة في الذاكرة بفضل اعتمادها على V8 isolates بدلاً من نظام التشغيل الكامل. تكمن أهمية هذه التقنية في قدرتها على تشغيل ملايين البيئات المعزولة في الثانية الواحدة للتعامل مع الأكواد المولدة بالذكاء الاصطناعي. يقارن المتحدث بينها وبين sandboxes السابقة التي تعتمد على حاويات Linux، مشيراً إلى أن Dynamic Workers هي الخيار الأخف وزناً والأسرع. هذا القسم يضع الأساس لفهم لماذا يحتاج المطورون لهذه التقنية في تطبيقات الأتمتة المخصصة.

طريقة الإعداد والتحكم البرمجي

يستعرض المتحدث الجانب العملي لإعداد Dynamic Worker باستخدام أداة Wrangler وكود TypeScript. يتم شرح كيفية إضافة مصفوفة worker_loaders وإنشاء رابط برمي يسمح للـ Worker الأساسي بإنشاء والتحكم في Workers تابعين. يتضمن العرض مثالاً لكود بسيط يرد بعبارة "Hello world" مع توضيح كيفية إعادة استخدام البيئات الموجودة بدلاً من تحميلها من الصفر في كل مرة. يذكر الفيديو إمكانيات متقدمة مثل استخدام بروتوكول Cap'n Proto للتواصل ومكتبة Hono من NPM. تبرز هذه التفاصيل مرونة الأداة في اعتراض الطلبات الخارجية وحقن بيانات الاعتماد بشكل آمن.

تشغيل أكواد الذكاء الاصطناعي (AI Agents)

ينتقل الفيديو إلى أحد أهم استخدامات Dynamic Workers وهو تشغيل الأكواد التي يولدها وكلاء الذكاء الاصطناعي مثل Claude Sonnet 3.5. يوضح المتحدث كيفية تنفيذ كود Python داخل البيئة المعزولة لحساب قيمة ط (pi) وتوليد رسومات بيانية بصيغة SVG. نظراً لعدم وجود نظام ملفات حقيقي، يتم شرح كيفية ربط البيئة بخدمة R2 bucket لحفظ المخرجات والملفات. يظهر المثال العملي نجاح الـ Worker في استقبال التعليمات من موديل الذكاء الاصطناعي ومعالجتها وإرجاع النتائج للمستخدم. يعكس هذا القسم قدرة Cloudflare على توفير بيئة تشغيل آمنة وسريعة لمتطلبات الذكاء الاصطناعي الحديثة.

اختبار الأداء والقدرة على التوسع والاستنتاج

يختتم المتحدث الفيديو باختبار حقيقي لقدرة التوسع من خلال إنشاء 10,000 Dynamic Worker في وقت واحد عبر البنية التحتية لـ Cloudflare. تظهر النتائج سرعة جنونية في إنشاء البيئات والقدرة على التواصل مع كل Worker بشكل مستقل باستخدام معرف فريد. يشير الفيديو إلى أن شركات كبرى بدأت بالفعل في تبني هذه التقنية لتشغيل التطبيقات المولدة برمجياً. ورغم الميزات الهائلة، يحذر المتحدث من أن الخدمة لن تظل مجانية للأبد، مما يتطلب تخطيطاً للميزانية عند تشغيل أعداد ضخمة. ينتهي العرض بدعوة لمشاهدة فيديو حول بناء مولدات تطبيقات متقدمة باستخدام أدوات مفتوحة المصدر.

Community Posts

View all posts