Cloudflare Workers و Containers حالا از اتصالهای ورودی TCP و پروتکل gRPC پشتیبانی میکنند — پیشرفتی که به خصوص برای سرویسهای بلادرنگ مثل دستیارهای صوتی و سیستمهای پردازش بلادرنگ مفید است. 🚀
چرا این مهم است؟ امروز اپلیکیشنهای مبتنی بر AI و رابطهای صوتی نیاز به مسیرهای کمتاخیر و قابل اعتماد بین کلاینتها، مدلها و سرویسهای پشتصحنه دارند. بسیاری از توسعهدهندگان برای این شبکهی ارتباطی از gRPC استفاده میکنند؛ یک فریمورک RPC مبتنی بر HTTP/2 و TCP که برای ارتباطات با کارایی بالا طراحی شده است.
در این بهروزرسانی مهم، سه قابلیت اصلی معرفی شدهاند: ✅
• اجرای handler جدیدی در runtime Workers که به Worker اجازه میدهد یک سوکت TCP ورودی را بپذیرد؛
• پشتیبانی full-duplex و دوطرفه gRPC در Cloudflare Containers که با فوروارد کردن سوکت از Worker به سرور gRPC در کانتینر انجام میشود؛
• امکان استفاده از gRPC توسط Workers برای سرو کردن APIهای unary و server-streaming و همچنین فراخوانی gRPC servers با نوشتن کد با gRPC-web؛ Cloudflare بهطور خودکار درخواستهای ورودی و خروجی را به gRPC نگاشت میکند. 🎯
برای پذیرش سوکت در داخل Worker از handler جدید استفاده میکنیم. نام این handler به شکل زیر است:
connect(socket)
این handler این امکان را میدهد که سوکت ارائهشده توسط Spectrum (پراکسی ورودی Cloudflare برای ترافیک غیر-HTTP) مستقیماً در Worker دریافت و مدیریت شود.
جریان معمول کاری وقتی که نیاز به full-duplex gRPC دارید اینطور است: Worker سوکت را قبول میکند، آن را فوروارد میکند به یک Container که سرور gRPC شما داخلش اجرا میشود، و از آنجا ارتباط دوطرفه و بیدرنگ برقرار میماند. اگر میخواهید مستقیماً در Worker از gRPC استفاده کنید، کافیست کد سمت Worker را با gRPC-web بنویسید و Cloudflare تبدیلهای لازم برای incoming/outgoing gRPC را انجام میدهد؛ این باعث میشود توسعه سادهتر شود و نیازی به بازنویسی کامل پروتکل در لایه اپلیکیشن نباشد. 🔁
نکات عملی و توصیههای عملیاتی برای SRE/DevOps:
• زمانبندی و timeouts: رفتار زمانبندی سوکتها و keepalive را مرور کنید و با نیازهای latency-sensitive هماهنگ کنید.
• مقیاسپذیری: چون اتصالها TCP stateful هستند، برای scale افقی کانتینرها نیاز به استراتژیهای session affinity یا load-balancing سوکت دارید.
• مشاهدهپذیری و لاگینگ: متریکهای اتصال، latency و خطاها را در سطح Workers و Containers جمعآوری کنید تا گلوگاهها و نشتهای منابع را سریع پیدا کنید.
• امنیت و TLS: Spectrum میتواند TLS termination را در لبه انجام دهد؛ تصمیم بگیرید کجا TLS terminate شود و چطور mutual TLS یا احراز هویت gRPC را پیادهسازی کنید.
• منابع و محدودیتها: محدودیتهای runtime Workers و quotaهای کانتینرها را در نظر بگیرید تا اتصالهای طولانیمدت باعث خاموشی یا OOM نشوند. 🛡️
این قابلیتها در حال حاضر در private beta عرضه شدهاند و مناسب پروژههایی هستند که نیاز به ارتباطات کمتاخیر، دوطرفه و قابل مقیاس با استفاده از gRPC دارند. برای تیمهایی که روی latency، reliability و معماری لبه-محور تمرکز دارند، این تغییر پتانسیل کاهش hops شبکه و سادهسازی مسیر داده را دارد. اگر سؤال فنی یا نیاز به جزئیات معماری دارید، میتوانم نکات پیادهسازی، مثالهای معماری و چکلیست عملیاتی را بیشتر توضیح بدهم. 😉