Dynamic Workers باختصار: sandbox بحجم tab في المتصفح
الفكرة مش جديدة على Cloudflare، لكن الإعلان الجديد إنها بقت API مفتوحة. بدل ما الـ agent بتاعك يشغّل كود في حاوية منفصلة، هو بيعمل loader.get(...) وبيرجعله isolate جاهز في ميلي ثانية. الـ isolate ده نفس التكنولوجيا اللي Chrome بيستخدمها علشان يفصل الـ tabs عن بعضها.
المشكلة باختصار
AI agents دلوقتي بتعمل حاجة متكرّرة: الـ LLM يولّد كود، و التطبيق لازم ينفّذه بأمان. لو عندك 10 آلاف طلب في الساعة، كل واحد فيهم كود مختلف، الحل الشائع هو حاوية لكل طلب. النتيجة: فاتورة CPU وذاكرة بتطير، وتأخير 1–3 ثواني في كل طلب مجرّد "setup".
ركّز في النقطة دي: المشكلة مش في تنفيذ الكود، المشكلة في كم مرة بتجهّز البيئة في الثانية. ده اللي Dynamic Workers بتحاول تحلّه.
مثال بسيط قبل ما ندخل في الفني
تخيّل إن عندك مطعم. الطريقة الأولى: كل زبون يدخل، تفتحله مطبخ كامل جديد — فرن، ثلاجة، أدوات — يطبخ طلبه، ثم تقفل المطبخ بالكامل. ده الـ Container. مناسب جدًا لو الأكل معقّد، لكن بطيء ومكلف لو كل الزبائن بيطلبوا ساندويتش.
الطريقة التانية: مطبخ واحد مشترك فيه 1000 طاولة تقطيع منفصلة، معزولة عن بعضها بزجاج. كل زبون ياخد طاولة، يحضّر طلبه في ثواني، ويمشي. ده الـ V8 Isolate. أسرع بكتير، بس مينفعش لو الطلب محتاج فرن (يعني OS-level access).
الـ trade-off هنا واضح: كسبت السرعة، خسرت القدرة على عمل أي شيء برّا JavaScript.
V8 Isolate بشكل علمي
V8 Isolate هو instance مستقل من محرّك JavaScript، بحالة heap خاصة و global scope منفصل. كل isolate معزول عن البقية بضمانات الـ runtime نفسه — مش ضمانات الـ kernel زي الحاوية. ده بيخلّيه:
- خفيف جدًا: مفيش kernel processes، مفيش filesystem layers. بس JS heap و WebAssembly memory.
- سريع البدء: V8 بيعمل snapshot للحالة الابتدائية ويعيد استخدامه. النتيجة: cold start ~5ms بدل 200–2000ms للحاوية.
- محدود بـ JavaScript/WebAssembly: مفيش
exec()، مفيش syscalls مباشرة، مفيش بنية ملفات حقيقية.
الأرقام اللي أعلنتها Cloudflare: كل isolate بحد أقصى 128MB من الذاكرة (heap + WASM)، ومسموحله بنفس الـ scale اللي Workers بتدعمه — ملايين الطلبات في الثانية.
كود تنفيذي: شغّل كود LLM جوّا Worker
ده مثال بـ TypeScript يستخدم Dynamic Worker Loader. الـ Worker الأساسي بياخد كود من LLM ويشغّله في isolate منفصل:
]]>