what-is-fireactions

Fireactions چیست؟ تکنولوژی جدید DevOps

فهرست مطالب

توسعه نرم افزارهای مدرن و یکپارچه سازی مداوم آن‎‌ها همواره جز بنیه‌‎های اکوسیستم DevOps بوده است. GitHub Actions به عنوان یکی از محبوب‌ترین ابزارهای این حوزه، تحولی عظیم ایجاد کرده است، اما زمانی که صحبت از مقیاس پذیری، امنیت و هزینه در پروژه‌های بزرگ به میان می‌آید، استفاده از رانرهای (Runners) پیش فرض گیت هاب یا رانرهای خود-میزبان (Self-hosted) سنتی چالش‌هایی ایجاد می‌کند. اینجاست که Fireactions وارد می‌شود. یک پروژه متن باز که توسط تیم Hostinger توسعه یافته و هدف آن ارائه رانرهای خود-میزبان برای گیت هاب است. در ادامه به موشکافی این پروژه نوآورانه می‌پردازیم.

چالش رانرهای CI/CD

رانرها کامپیوترهایی هستند که دستورات گیت‌هاب اکشنز را اجرا می‌کنند. برای درک ارزش و عملکرد Fireactions، ابتدا باید مشکل را بشناسیم. وقتی شما از GitHub Actions استفاده می‌کنید، دو گزینه اصلی دارید:

  1. رانرهای میزبانی شده توسط خود گیت‌هاب: استفاده از این رانرها راحت اما گران است. در این رانرها کنترلی بر روی سخت افزار ندارید.
  2. رانرهای Self-hosted: در این نوع می‌توانید از سرور خود استفاده کنید. این کار سریع‌تر یا حتی ارزان‌تر است، اما در این روش ممکن است با مشکل پایداری روبرو شوید.

در یک رانر Self-hosted سنتی، اگر یک جاب (کار کامل و مستقیمی که سیستم CI/CD آن را انجام می‌دهد) فایل‌هایی را تغییر دهد یا پکیج‌هایی را نصب کند، این تغییرات ممکن است برای جاب بعدی باقی بمانند. این موضوع دو خطر دارد:

  • تداخل: تست‌های یک پروژه ممکن است روی پروژه بعدی اثر بگذارد.
  • امنیت: اگر کدی مخرب در یک جاب اجرا شود، می‌تواند به محیط سرور دسترسی پیدا کرده و اطلاعات جاب‌های بعدی را سرقت کند.

Fireactions چیست؟

یک ارکستراتور (Orchestrator) برای رانرهای گیت‎‌هاب است که به زبان Go نوشته شده است. این ابزار وظیفه دارد تا روی سرور فیزیکی یا ماشین مجازی شما بنشیند و برای هر Job جدیدی که از سمت گیت‌هاب می‌آید، یک ماشین مجازی بسیار سبک و ایزوله (MicroVM) ایجاد کند. Fireactions بعد از اتمام جاب، ماشین مجازی را حذف می‌کند. تکنولوژی کلیدی در Fireactions، تکنولوژی مجازی سازی Firecracker از شرکت آمازون است که سرویس‌های AWS Lambda و Fargate روی آن اجرا می‌شوند. 

ویژگی‌های کلیدی Fireactions

پروژه Fireactions ویژگی‌های کلیدی بسیاری را در اختیار کاربران خود می‌گذارد که در این بخش به سراغ این موارد می‌‎رویم:

  • امنیت بالا: در این تکنولوژی، هر رانر فقط برای یک Job زنده است. هیچ Stateای ذخیره نمی‌شود، بنابرین امنیت و همچنین تمیزی کد شما بیشتر می‌شود.
  • ایزوله بودن: ایزولاسیون در سطح سخت افزار تضمین می‌کند که هیچ کدی نمی‌تواند از محیط سندباکس خارج شود.
  • مقرون به صرفه: Fireactions به شما اجازه می‌دهد از حداکثر توان سرورهای خود استفاده کنید.

سرور مجازی ایران با پینگ پایین و قیمت مناسب

با سرور مجازی ایران پویان آی تی از ترافیک 1 به 1 و ارزان قیمت بهره مند شوید و به راحتی در هر زمان که می‌خواهید منابع سرور خود را افزایش دهید!

خرید سرور مجازی ایران

 مناسب میزبانی • منتخب کاربران • پورت 10Gbit/s

معماری فنی Fireactions

درک معماری این تکنولوژی، برای مهندسان DevOps امری ضروری است. این سیستم از چندین کامپوننت تشکیل شده که به صورت هماهنگ کار می‌کنند تا درخواست‌های CI/CD را پردازش کنند.

تکنولوژی Firecracker MicroVM

برخلاف داکر، که از هسته (Kernel) سیستم عامل میزبان به صورت اشتراکی استفاده می‌کند، Firecracker از KVM لینوکس استفاده می‌کند تا یک ماشین مجازی کامل با هسته اختصاصی بسازد. کانتینترهای داکر، ایزولاسیون ضعیف‌تری دارند. اگر یک بدافزار بتواند از کانتینر داکر فرار کند، می‌تواند به کل سرور دسترسی داشته باشد. اما در Fireactions، هر جاب در یک ماشین مجازی کامل با کرنل خود اجرا می‌شود که امنیت را به شدت افزایش می‌دهد. ماشین‌های مجازی سنتی سنگین هستند و دقیقه‌ها طول می‌کشد تا بوت شوند. Firecracker با حذف درایورهای غیر ضروری، زمان بوت را کمتر می‌کند.

مفهوم Pool در Fireactions

فایراکشنز از مفهومی به نام Pool برای مدیریت منابع استفاده می‎‌کند. شما می‌توانید در فایل پیکربندی YAML، چندین Pool تعریف کنید. برای مثال:

  • یک Pool برای کارهای سبک‌تر (2 هسته CPU، 4 گیگ رم)
  • یک Pool برای بیلدهای سنگین (8 هسته CPU، 16 گیگابایت رم)

Fireactions به طور هوشمند تعداد رانرهای آماده به کار در هر Pool را مدیریت می‌کند تا به محض رسیدن درخواست از گیت‌هاب یک رانر آماده باشد.

فرایند اجرای Fireactions

در ادامه به بررسی Lifecycle این تکنولوژی می‌پردازیم:

  1. شنود (Listening): Fireactions به عنوان یک سرویس روی لینوکس اجرا می‌شود و وضعیت صف گیت‌هاب اکشنز را رصد می‎‌کند.
  2. تخصیص: زمانی یک Workflow جدید تحریک می‌شود، Fireactions یک MicroVM جدید از Pool مربوطه برمی‌دارد.
  3. اجرا: GitHub Agent درون MicroVM فعال شده و دستورات CI/CD را اجرا می‌کند.
  4. حذف: به محض پایان Job، فایراکشنز فرمان نابودی MicroVM را صادر می‎‌‌کند. تمام فایل‌ها، کش‌ها و تغییرات آن جاب برای همیشه پاک می‌شوند.

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

مقایسه Fireactions و رقبا

در ادامه فایراکشنز را با رقبای خود از جمله ARC مقایسه می‌کنیم.

ویژگیFireactionsActions Runner Controller (ARC)Self-hosted معمولی
زیرساخت مورد نیازسرور لینوکسی ساده (VM یا Bare Metal)کلاستر Kubernetesهر سروری (حتی لپ‌ تاپ)
تکنولوژی ایزولاسیونFirecracker MicroVM (سطح سخت‌افزاری)Docker Container (در Pod)ندارد (فقط Process)
سطح امنیتبسیار بالا (ایزولاسیون سخت‌افزاری)متوسط (کانتینری)پایین (بدون ایزولاسیون)
سربار عملکرد (Overhead)بسیار کم (~100ms boot)بالا (سربار Kubernetes + Docker)تقریبا صفر
مقیاس‌پذیری خودکاردارد (با autoscaling ساده)عالی (Native K8s)ندارد
پاک‌سازی خودکار محیط100% تمیز در هر جاب100% تمیز در هر جابمعمولا نه (خطر flaky/security)
سناریوی ایده‌آلتیم‌های متوسط تا بزرگ بدون K8s که امنیت و سرعت می‌خواهندسازمان‌های بزرگ با زیرساخت Kubernetes قویپروژه‌های شخصی و کوچک

Kubernetes، در همه موارد برتر از Fireactions است و برخلاف آن بر روی سیستم عامل‌های مختلف قابل نصب است. کسانی که با Kubernetes کار می‌کنند نیاز آنچنانی به Fireactions نخواهند داشت.

جمع بندی

Fireactions پاسخی هوشمندانه به یک نیاز حیاتی در دنیای DevOps است: چگونه می‌توانیم سرعت و ارزانی رانرهای Self-hosted را با امنیت و ایزولاسیون رانرهای مدیریت شده ترکیب کنیم؟ پاسخ در جادوی MicroVM نهفته است. Fireactions با حذف لایه‌های اضافی و استفاده از تکنولوژی Firecracker، استانداردی جدید برای امنیت و کارایی در CI/CD تعریف می‌کند. برای تیم‌هایی که به دنبال بهینه سازی هزینه‌‎های ابری خود هستند و امنیت را فدای سرعت نمی‌کنند، فایراکشنز یکی بهترین گزینه‌های روی میز است.

سوالات متداول

شاید کلمه ماشین مجازی و راه انداختن آن بنظر سخت بیاید، اما Fireactions کار را راحت‌تر کرده است. ملزومات استفاده از آن:

  • یک سرور با سیستم عامل لینوکس
  • پشتیبانی پردازنده از مجازی سازی

با داشتن این دو، فقط با نوشتن یک فایل کانفیگ ساده می‌توانید از فایراکشنز استفاده کنید.

شرکت‌های نرم افزاری که به دنبال راه‌های جدید برای استفاده از GitHub Actions هستند. مهندسان DevOps که به می‌خواهند ایزولاسیون همراه با رانرهای Self-hosted داشته باشند.

منابع

  • https://www.hostinger.com/blog/fireactions
  • https://github.com/hostinger/fireactions

به این مقاله امتیاز دهید!

میانگین امتیاز 0 / 5. تعداد رأی ها : 0

هنوز هیچ رأیی داده نشده. اولین نفر باشید!

اشتراک گذاری در تلگرام اشتراک گذاری در لینکدین اشتراک گذاری در ایکس کپی کردن لینک پست

و در ادامه بخوانید

اولین دیدگاه را اضافه کنید.

    برچسب ها

    DevOps