پرش به محتوای اصلی
پرش به محتوای مقاله

ترکیب Go و TypeScript در معماری مونو لیتیک؛ راهکار TormentNexus برای ۵۰ هزار

·۲ مرداد ۱۴۰۵۵ دقیقه مطالعه۱ بازدید
فراتر از هیاهو: چگونه TormentNexus با یکپارچه‌سازی Go و TypeScript، عملکرد پایدار backend هوش مصنوعی را تضمین می‌کند
فراتر از هیاهو: چگونه TormentNexus با یکپارچه‌سازی Go و TypeScript، عملکرد پایدار backend هوش مصنوعی را تضمین می‌کند
اشتراک‌گذاری
واقعاً چه چیز جدید است؟

استفاده از یک «مونو لیت چندزبانه» (Polyglot Monolith) که در آن Go و TypeScript بدون لایه شبکه و از طریق Protocol Buffers در یک پردازش واحد ارتباط دارند، برای مدیریت ۵۰ هزار درخواست هم‌زمان.

تصور کنید یک خط تولید فوق‌سریع دارید که هر کارگرش در ساختمانی جداگانه است؛ هر جابه‌جایی قطعه، زمان و انرژی تلف می‌کند. حال تصور کنید تمام این نیروها در یک اتاق باشند اما هر کدام دقیقاً بدانند وظیفه آن‌ها چیست و چه زمانی باید قطعه را تحویل دهند.

بسیاری از توسعه‌دهندگان تصور می‌کنند برای مقیاس‌پذیری حتماً باید به سراغ میکروسرویس‌ها بروند، اما TormentNexus ثابت کرد که یک «مونو لیت» ساختاریافته می‌تواند تأخیری کمتر از ۱۰۰ میلی‌ثانیه را برای ۵۰ هزار کاربر هم‌زمان فراهم کند. در ۲۴ ژوئیه ۲۰۲۶، این شرکت جزئیات معماری خود را منتشر کرد و توضیح داد که چگونه با abandon کردن میکروسرویس‌ها به نفع این سنتز معماری خاص، به بک‌اند هوش مصنوعی خود اجازه داده است تا حجم عظیمی از تراکنش‌ها را بدون اصطکاک‌های عملیاتی شبکه‌های توزیع‌شده مدیریت کند.

بک‌اندهای مدرن هوش مصنوعی معمولاً با یک انتخاب سخت روبرو هستند: مونو لیت‌های صلب و خشک یا میکروسرویس‌های پراکنده. اگرچه میکروسرویس‌ها مقیاس‌پذیری را ارائه می‌دهند، اما «پرش‌های شبکه‌ای» (Network Hops) و سربارهای تراکنش‌های توزیع‌شده را معرفی می‌کنند که سرعت استنتاج در لحظه (Real-time Inference) را می‌کشد. همان‌طور که در تحلیل قبلی ما درباره‌ی بهینه‌سازی هزینه‌ی استنتاج اشاره کردیم، هر میلی‌ثانیه در پردازش مدل‌ها حیاتی است. در دنیای واقعی، این تأخیرها باعث می‌شوند سرعت استنتاج — که شبیه به لحظه‌ی واقعی آشپزی است، نه دوره‌ی آموزش آشپز — به‌شدت کاهش یابد. این چالش بهینه‌سازی سرعت، موضوعی است که ابزارهای جدید نیز به آن پرداخته‌اند؛ برای example، راهکارهای DSpark توانست سرعت پاسخ‌دهی مدل‌های DeepSeek را تا ۸۵ درصد ارتقا دهد تا تجربه کاربر در لحظه بهبود یابد.

TormentNexus برای حل این مشکل، کدها را در یک واحد استقراری واحد قرار داده اما مرزهای سخت‌گیرانه‌ای بین ماژول‌ها تعریف کرده است. طبق مستندات منتشر شده در dev.to، این استراتژی اجازه می‌دهد تیم توسعه سرعت پیشرفت خود را حفظ کند و در عین حال، تأخیرهای ذاتی ارتباطات مبتنی بر شبکه بین سرویس‌ها حذف شوند. این یک پذیرش استراتژیک از معماری چندزبانه (Polyglot Architecture) است که دقیقاً برای نیازهای منحصر‌به‌فرد یک بک‌اند هوش مصنوعی بهینه شده است؛ جایی که در درخواست‌های استنتاج در لحظه، هر میلی‌ثانیه اهمیت دارد.

هسته پردازشی با زبان Go

قلب تپنده این سیستم، «کرنل» یا هسته‌ای است که با زبان Go نوشته شده است. این لایه مسئول مدیریت حیاتی‌ترین مسیرهاست: سرور HTTP، مسیریابی (Routing) و چرخه کامل حیات درخواست. این انتخاب بر اساس بنچمارک‌های عملکردی عینی و نیازهای تجربه توسعه‌دهنده (Developer Experience) صورت گرفته است تا اطمینان حاصل شود که بک‌اند در مقیاس بالا، هم به‌شدت سریع و هم قابل نگهداری باقی می‌ماند.

  • این هسته در حال حاضر ۴۴۶ هندلر (Handler) مجزای HTTP را مدیریت می‌کند که هر یک مسئول یک نقطه اتصال API (Endpoint) خاص یا یک تابع داخلی هستند.
  • سیستم از «گوروتین‌ها» (Goroutines) برای مدیریت کارهای I/O-bound استفاده می‌کند. چون گوروتین‌ها اثر جای (Footprint) بسیار کوچکی دارند — اغلب تنها چند کیلوبایت — سیستم می‌تواند هزاران مورد از آن‌ها را برای دریافت وزن‌های مدل از object storage، پیش‌پردازش ورودی‌ها یا نوشتن نتایج در پایگاه داده ایجاد کند، بدون اینکه استخرهای رشته‌ای (Thread Pools) مسدود شوند. این رویکرد به مدیریت حجم عظیمی از داده‌ها کمک می‌کند، به‌خصوص در دورانی که مدل‌های وزن‌باز سهم گسترده‌ای از حجم توکن‌های جهانی را به دست آورده‌اند و فشار بر زیرساخت‌های توزیع وزن مدل افزایش یافته است.
  • در تست‌های فشار، این معماری توانست بیش از ۵۰٬۰۰۰ درخواست هم‌زمان را با تأخیر P99 زیر ۱۰۰ میلی‌ثانیه برای وظایف مسیریابی مدیریت کند؛ بنچمارکی که معماری‌های سنتی «هر درخواست یک رشته» (Thread-per-request) را کاملاً فلج می‌کند.

برای توصیف این توانایی در مواجهه با هم‌زمانی، سیستم از یک الگوی خاص برای کارهای سنگین استفاده می‌کند. وقتی درخواستی برای تولید تصویر می‌رسد، هندلرِ استنتاج (InferenceHandler) ابتدا درخواست را رمزگشایی کرده و بلافاصله یک شناسه (ID) منحصر‌به‌فرد را با استفاده از کد http.StatusAccepted به کلاینت بازمی‌گرداند. در پس‌زمینه، یک گوروتین فراخوانی می‌شود که متد h.engine.StartAsyncInference(taskID, req) را اجرا می‌کند و بدین ترتیب کار سنگین استنتاج هوش مصنوعی را به پس‌زمینه منتقل می‌کند تا API همواره پاسخگو باقی بماند.

ارکستراسیون با TypeScript

در حالی که Go مدیریت «چگونگی» (How) اجرا را بر عهده دارد، زبان TypeScript مدیریت «چیستی» (What) کار را بر عهده گرفته است. این لایه مسئول منطق سطح بالای کسب‌وکار و ارکستراسیون مدل‌های هوش مصنوعی است و به عنوان لایه یکپارچه‌ساز منعطفی عمل می‌کند که مکمل هسته Go است.

  • تیم‌ها از TypeScript برای تعریف طرح‌واره‌های داده (Data Schemas) و مدیریت منطق پیچیده خط‌لوله‌های مدل (Model Pipelines) استفاده می‌کنند. تایپینگ استاتیک در اینجا برای شناسایی خطاها در زمان کامپایل به‌کار می‌رود که هنگام مدیریت ساختارهای داده‌ای پیچیده که بین مدل‌های مختلف جریان می‌یابند، حیاتی است.
  • اکوسیستم Node.js امکان ادغام مستقیم با کتابخانه‌های تخصصی یادگیری ماشین، مانند TensorFlow.js را برای انجام ترنسفورمیشن‌های سبک و در لحظه (On-the-fly) فراهم می‌کند.
  • این لایه همچنین اتصالات WebSocket را برای استریمینگ زنده کلاینت مدیریت کرده و استراتژی‌های کشینگ پیچیده‌ای را با استفاده از کلاینت‌های Redis یا Memcached که دارای تایپ‌های بالغ TypeScript هستند، پیاده‌سازی می‌کند.

مرز ارتباطات: سرعت فراخوانی تابع

این دو زبان از طریق تماس‌های استاندارد HTTP با هم حرف نمی‌زنند. در عوض، از یک مکانیزم داخلی سریع شامل سریال‌سازی باینری از طریق Protocol Buffers روی سوکت‌های محلی یا حتی کانال‌های حافظه (In-memory channels) استفاده می‌کنند.

این تنظیمات باعث می‌شود ارتباط بین ماژول‌ها با سرعت «فراخوانی تابع» انجام شود، نه با سرعت «بسته‌های شبکه». هسته Go قدرت هم‌زمانی خود را از طریق یک تعریف سرویس gRPC ساده در اختیار لایه TypeScript قرار می‌دهد و به این لایه اجازه می‌کند کارهای سنگین و موازی‌شدنی را فوراً تفویض کند. این ساختار یک سیستم منسجم و در عین حال متصل‌ناپذیر (Decoupled) ایجاد می‌کند که در آن مهندسان بک‌اند می‌توانند Go را برای نرخ انتقال (Throughput) بهینه کنند، در حالی که مهندسان هوش مصنوعی به‌سرعت خط‌لوله‌های یکپارچه‌سازی را در TypeScript پروتوتایپ می‌کنند.

چرا مونو لیت برنده شد؟

عامل اصلی موفقیت در اینجا «موضعیّت داده‌ها» (Data Locality) است. انتقال یک تانسور بزرگ یا یک شیء پیکربندی پیچیده بین سرویس‌ها از طریق HTTP/2، چندین مرتبه کندتر و بسیار خطاprone‌تر از انجام این کار در مرز یک پردازش واحد (Single Process Boundary) است. شبکه، گلوگاه اصلی در بک‌اندهای هوش مصنوعی است و مونو لیت چندزبانه این گلوگاه را کاملاً حذف می‌کند.

با استفاده از یک مونو لیت ماژولار، TormentNexus به دستاوردهای زیر رسید:

  • یک آرتیفکت استقرار: ساده‌سازی کامل خط لوله CI/CD.
  • یک نقطه بررسی سلامت (Health Check): کاهش چشمگیر پیچیدگی‌های مانیتورینگ و نظارت.
  • مشاهده‌پذیری یکپارچه (Unified Observability): ارائه یک نمای واحد از کل چرخه حیات درخواست از ابتدا تا انتها.

این رویکرد «شعاع تخریب» (Blast Radius) شکست‌ها را کاهش داده و مقیاس‌پذیری افقی را ساده می‌کند. برای مدیریت بار بیشتر، کل مونو لیت به‌صورت افقی مقیاس می‌شود و تضمین می‌گردد که هسته Go و لایه TypeScript همیشه با هم مقیاس شوند تا الگوی ارتباطی بهینه خود را حفظ کنند.

این تغییر رویکرد نشان می‌دهد که برای بارهای کاری تخصصی هوش مصنوعی، وسواس صنعت روی میکروسرویس‌ها احتمالاً یک «بهینه‌سازی زودهنگام» (Premature Optimization) بوده است. برای متخصصان، درس اصلی این است: جداسازی منطقی لایه‌ها، لزوماً به معنای جداسازی فیزیکی آن‌ها نیست.

گام بعدی شما

  • اگر موتور استنتاج زنده می‌سازید، بررسی کنید که آیا تأخیر شبکه در حال پوشاندن عملکرد واقعی مدل شماست یا خیر.
  • برای مشاهده جزئیات کامل تجزیه و تحلیل معماری و نحوه پیاده‌سازی RPCهای محلی برای استک خود، به tormentnexus.site مراجعه کنید.
  • معماری RPC محلی (Local RPC) را برای ارتباط بین زبان‌های مختلف در یک پردازش واحد مطالعه کنید.
  • بررسی کنید که آیا می‌توانید برخی میکروسرویس‌های وابسته به هم را در یک مونو لیت ماژولار ادغام کنید تا تأخیر کاهش یابد.

اما داستان سخت‌افزاری این تحول حتی شگفت‌انگیزتر است — به تحلیل ما درباره‌ی تراشه‌های Blackwell مراجعه کنید.

چرا این موضوع مهم است؟

این مدل ثابت می‌کند که برای کاربردهای Real-time AI، معماری مونو لیت ماژولار از نظر فنی برتر از میکروسرویس‌ها است. تخصص TormentNexus در کاهش تأخیر، استاندارد جدیدی برای پیاده‌سازی بک‌اندهای مدل‌های زبانی بزرگ ایجاد می‌کند.

تأثیر برای ایران

این معماری برای استارتاپ‌های ایرانی که با محدودیت منابع سخت‌افزاری و هزینه‌ی بالای زیرساخت‌های ابری مواجه‌اند، راهکاری بهینه برای افزایش توان عملیاتی بدون نیاز به خوشه‌های پیچیده میکروسرویسی است.

·نگاه ما
تحریریه دات‌هوش

تمرکز بر Local RPC به جای HTTP در ارتباطات داخلی، نقطه عطف این معماری است. این رویکرد فرضیه رایج «مقیاس‌پذیری فقط با توزیع‌کردگی ممکن است» را می‌زند و نشان می‌دهد که در سیستم‌های با نرخ تأخیر بحرانی (Critical Latency)، حذف لایه شبکه مهم‌تر از توزیع فیزیکی است.

منابع

این گزارش با خط‌لولهٔ خودکار دات‌هوش از منابع معتبر جهانی تدوین و زیر نظر تحریریه منتشر شده است. روش کار ما

گفتگو

پنج‌شنبه‌های هوش‌محور

بسته‌ی هفتگی دات‌هوش

۵ خبر، ۲ ابزار، ۱ پرامپت در هر شماره. به‌زودی راه‌اندازی می‌شود — هر پنج‌شنبه صبح.

خبر کلیدی
ابزار کاربردی
پرامپت حرفه‌ای
تحلیل پژوهش
به‌زودی
زاویه‌ی ایرانی
به‌زودی
تمرین این هفته
به‌زودی

راهنماهای دات‌هوش

راهنماهای کاربردیِ دات‌هوش برای کار با هوش مصنوعی — از همین‌جا شروع کنید:

دات‌هوش

راهنمای فارسی هوش مصنوعی — با نگاه به ایران

اخبار روزانه، معرفی ابزارها و مدل‌ها، و آموزشِ کار با هوش مصنوعی؛ همیشه با این پرسش که از ایران چه چیزی کار می‌کند و چه چیزی نه.