Meta؛ کاهش زمان deployment از بیش از چهار ساعت به چند دقیقه با GitOps

چرا مهم است

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

قبل از خواندن، این‌ها را بدان۴ مفهوم
GitOps

روشی برای مدیریت برنامه‌ها و زیرساخت که در آن وضعیت مطلوب در Git نگهداری می‌شود و ابزارهای خودکار، وضعیت واقعی را با آن هماهنگ می‌کنند.

در حال نگارش: GitOps

Health Check

بررسی وضعیت یک برنامه یا سرویس برای مشخص‌کردن اینکه درست کار می‌کند و آماده پاسخ‌گویی است یا نه.

در حال نگارش: Health Check

Release Promotion

فرایند انتقال یک نسخه مشخص از برنامه از یک محیط به محیط بعدی، مثلاً از محیط آزمایش به محیط عملیاتی.

در حال نگارش: Release Promotion

cluster

مجموعه‌ای از ماشین‌ها که با هماهنگی یکدیگر، اجرای برنامه‌ها و مدیریت منابع را بر عهده دارند.

در حال نگارش: cluster

CNCF تیم Cloud Foundation در Meta را برنده مسابقه مطالعه موردی کاربران نهایی خود معرفی کرد. این تیم در حال ساخت پلتفرمی مبتنی بر GitOps با استفاده از Argo CD و Kargo است که زمان deployment معمول برنامه‌ها را از بیش از چهار ساعت به چند دقیقه کاهش داده است. این پلتفرم برای مدیریت تحویل برنامه‌ها در حدود ۱۰۰ cluster از Kubernetes به کار می‌رود که از پژوهش‌های AI و اجرای مدل‌ها پشتیبانی می‌کنند.

تیم Cloud Foundation بیش از ۱۵ مهندس دارد و این cluster‌ها را در چند ارائه‌دهنده cloud و خانواده‌های مختلف شتاب‌دهنده مدیریت می‌کند. پیش‌تر، Terraform هم مسئول آماده‌سازی infrastructure بود و هم deployment برنامه‌های Kubernetes را انجام می‌داد. در نتیجه، حتی تغییرات معمول برنامه‌ها به فرایند طولانی انتشار infrastructure وابسته بود. توقف یک rollout می‌توانست انتشارهای نامرتبط را هم معطل کند و Health Check خودکاری برای بررسی وضعیت برنامه‌ها وجود نداشت.

Meta برای رفع این مشکلات، تحویل برنامه را از آماده‌سازی infrastructure جدا کرده است. Terraform همچنان مدیریت infrastructure را بر عهده دارد، اما Argo CD وضعیت deployment برنامه‌ها را با تنظیمات ذخیره‌شده در Git هماهنگ می‌کند. Kargo نیز Release Promotion را میان محیط‌ها هماهنگ می‌کند تا rollout مستقل، Health Check خودکار و ثبت نسخه‌دار سوابق انتشار ممکن شود. طبق این گزارش، این سوابق قابلیت پیگیری و بازیابی deployment را بهبود می‌دهند.

بخش دیگری از تغییرات، ساده‌کردن تعریف نیازهای برنامه است. توسعه‌دهنده‌ها نیازهای deployment را در یک تعریف کوتاه مشخص می‌کنند و پلتفرم، تنظیمات Argo CD و Kargo را خودکار می‌سازد. به این ترتیب، تیم‌های برنامه برای انتشار مستقل و بررسی خودکار سلامت، نیازی به مدیریت تنظیمات پیچیده ندارند.

Meta قصد دارد استفاده از این پلتفرم GitOps را گسترش دهد و به یک سرویس Argo CD با مدیریت مرکزی منتقل شود تا هزینه نگهداری در مجموعه cluster‌های Kubernetes کاهش یابد. این تیم همچنین در حال بررسی مشارکت در پروژه‌های اصلی برای بهبود احراز هویت container registry و عملکرد Argo CD در cluster‌های بزرگ است؛ این موارد هنوز به‌عنوان برنامه‌های آینده مطرح شده‌اند.

نکته کلیدی

از تجربه Meta به یاد داشته باش که مدیریت زیرساخت و انتشار برنامه لازم نیست یک فرایند مشترک باشند. هنگام بررسی چنین جداسازی‌ای، خودکار و ثبت سوابق نسخه‌دار انتشار را هم در نظر بگیر؛ هر دو در راهکار Meta حضور دارند.

خواندن مقاله اصلی (در زبانه‌ی جدید باز می‌شود)
برچسب‌ها (۴)