عکس از ilgmyzin در Unsplash
عکس از ilgmyzin در Unsplash

آیا برنامه‌های شما واقعاً کوچ‌نشین هستند؟

شکل: برنامه‌های کوچ‌نشین می‌توانند آزادانه از ابر به لبه حرکت کنند
شکل: پشته فناوری بومی لبه‌ای مبتنی بر NATS

رقابت برای بی‌نقص کردن محاسبات لبه‌ای در چند سال گذشته به طور چشمگیری تسریع شده است - و دلیل خوبی هم دارد. محاسبات لبه‌ای با پردازش داده‌ها به صورت محلی، نزدیک‌تر به منبع و کاربر نهایی، داده‌ها را در زمان واقعی ارائه می‌دهد. این امکان را برای دستگاه‌های همیشه روشن و همیشه متصل و سیستم‌های مجهز به هوش مصنوعی فراهم می‌کند که در سراسر چندین ابر ، مناطق، محل و در لبه اجرا می‌شوند.

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

نیاز به تکامل معماری‌های برنامه برای همگام شدن با نوآوری چیز جدیدی نیست. معماری‌های برنامه توزیع‌شده به طور چشمگیری و نسبتاً سریع تکامل یافته‌اند، از مونولیت‌های جاوا در اوایل دهه 2000 تا میکروسرویس‌های مدیریت‌شده توسط Kubernetes که در دهه 2010 غالب بودند. اکنون، با محاسبات بومی لبه‌ای و استقرارهای چندمنطقه‌ای، چندابری و چندلبه‌ای، ما وارد عصر "برنامه‌های کوچ‌نشین" مستقل از مکان شده‌ایم.

پیوستگی ابر به لبه و لبه به ابر: یک چالش جدید

در دوران ابر، فشار به سمت تمرکز بود. علیرغم نامش، محاسبات ابری بر اساس ادغام با سیستم‌های متمرکز، گزینه‌های ذخیره‌سازی نامحدود و در دسترس بودن 24/7 ساخته شده است. دوران لبه نشان‌دهنده حرکتی در جهت مخالف است.

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

برنامه‌های لبه باید برای محاسبات و دستگاه‌های لبه‌ای طراحی شوند. یعنی باید بومی لبه‌ای باشند. برای مثال، برنامه‌های بومی لبه‌ای دارای ویژگی‌ها و الزامات بسیار متفاوتی نسبت به برنامه‌های بومی ابری هستند. آنها همچنین باید به همان اندازه کوچ‌نشین باشند - بدون وابستگی به ارائه‌دهندگان، شبکه‌ها و مکان‌های خاص - مانند محیط‌های لبه‌ای که در آن کار می‌کنند.

نکات و پیچیدگی‌های برنامه‌های کوچ‌نشین بومی لبه‌ای

از لحاظ تاریخی، سیستم‌های پیام‌رسانی به صورت تدریجی برای پشتیبانی از معماری‌های برنامه در حال ظهور تکامل یافته‌اند. چارچوب‌های پیام‌رسانی مانند فراخوانی رویه از راه دور (RPCs) منجر به MQSeries و JMS شد، و پس از آن XML، WebSockets، صف‌های پیام و Apache Kafka.

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

اکنون، با تقاضا برای برنامه‌های کوچ‌نشین که می‌توانند به طور کارآمد و مداوم در لبه اجرا شوند و در سراسر محیط‌های توزیع‌شده بدون پیکربندی مجدد یا تغییرات کد، صنعت باید گام بعدی خود را بردارد.

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

برای پشتیبانی از پرتقاضاترین و آرمانی‌ترین موارد استفاده برای لبه، توسعه‌دهندگان به سیستم‌های پیام‌رسانی نیاز دارند که:

  • برنامه‌های بومی لبه‌ای باید دارای عملکرد دوطرفه باشند. از آنجایی که هیچ "هاب" واحدی وجود ندارد، آنها باید توزیع قابل اعتماد داده را از لبه به ابر و بالعکس تسهیل کنند. این برای به‌روزرسانی مدل‌های هوش مصنوعی، توزیع باینری‌ها و انتقال تغییرات داده‌های حساس به زمان با هشدار به و از چندین مکان لبه‌ای بسیار مهم است.
  • انتقال داده‌های با ارزش بالا/حجم کم و داده‌های با ارزش کم/حجم بالا را در زمان واقعی متعادل کنید. سیستم‌های لبه‌ای داده‌ها را در منبع در لبه پردازش می‌کنند، با تخصیص وظایف پردازش داده‌ها بر اساس ارزش خود، کارایی را حفظ می‌کنند و باید علیرغم قطعی‌های شبکه و اتصال متناوب مقاوم باشند. به عنوان مثال، رویدادهای با ارزش بالا/حجم کم مانند آتش‌سوزی کارخانه یا خرابی حسگر باعث انتقال فوری داده‌ها و هشدار برای تسهیل آگاهی، تجزیه و تحلیل و اصلاح سریع می‌شود.
  • برای استقرار و تنظیم آسان با زیرساخت موجود طراحی شده‌اند.

الزامات سیستم‌های مبتنی بر لبه اغلب بر اساس عوامل خارجی، مقیاس‌بندی، انقباض و جمع‌آوری سخت‌افزار موجود در طول عمر (نسبتاً طولانی) آنها تغییر می‌کند. لایه‌های ارتباطی که از عملکردها پشتیبانی می‌کنند باید این تغییرات - در نیازهای پردازش، محیط و موارد دیگر - را با حداقل زمان خرابی برآورده کنند.

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

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

مزایای NATS عبارتند از:

  • اتصال ساده شده: NATS یک سیستم یکپارچه ارائه می‌دهد که از مدل‌های پیام‌رسانی مختلف پشتیبانی می‌کند و تأخیر و پیچیدگی را کاهش می‌دهد.
  • مدیریت یکپارچه داده: با JetStream، NATS یک لایه داده یکپارچه برای پخش جریانی، ذخیره‌سازی کلید-مقدار و ذخیره‌سازی شیء ارائه می‌دهد.
  • کاهش ردپا: یک باینری واحد با اندازه کمتر از 20 مگابایت عملکردهای زیر را ارائه می‌دهد:
  • پیام‌رسانی و صف‌بندی (از جمله عملکرد سرور MQTT)
  • پخش جریانی (از جمله انتقال قابل اعتماد داده‌های ذخیره و ارسال بین ابر و لبه‌ها)
  • کلید/مقدار و ذخیره شیء
  • مش سرویس
  • راه حل‌های محاسباتی کارآمد: موتور اجرای NATS (Nex) استقرار و مدیریت حجم کار را ساده می‌کند و از کوچ‌نشینی واقعی برنامه پشتیبانی می‌کند.

همانطور که محاسبات لبه‌ای و هوش مصنوعی گسترش می‌یابند، پیشرفت‌هایی مانند ارتباطات مبتنی بر رویداد NATS ، که برای هوش مصنوعی برتر است، رویکرد انعطاف‌پذیر و کارآمد مورد نیاز برای ادغام یکپارچه برنامه‌ها با پلتفرم‌های مختلف و در سراسر شبکه‌های لبه‌ای توزیع‌شده را ارائه می‌دهد.  

لبه نسل بعدی فناوری

در چند سال گذشته، ما هر نوآوری در محاسبات، تجزیه و تحلیل و تجهیزات را به عنوان تغییر دهنده بازی برای صنعت 4.0 و اتصال تحسین کرده‌ایم. با این حال، هیچ نوآوری واحدی نمی‌تواند یا همه چیز را یک شبه تغییر خواهد داد. به عنوان مثال، اینترنت را در نظر بگیرید: تا زمانی که مهندسان ابزارهای مکمل مانند مرورگرهای وب و سرویس گیرنده‌های ایمیل را ساختند، قابلیت‌های کامل آن آزاد نشد.

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