Zero Downtime Deployment چیست؟
یکی از فاکتورهای موفقیت یک سرویس نرمافزاری آن است که هیچگاه از دسترس خارج نشود. این پارامتر برای کسبوکارها بسیار حایز اهمیت میباشد، چرا که از دسترس خارج شدن سرویس آنها به معنای ضرر اقتصادی و خدشهدار شدن اعتبار آنهاست. به دست آوردن قابلیت در دسترس بودن حداکثری یا High Availability ایجاب میکند استقرار نسخههای جدید نرمافزار باعث از دسترس خارج شدن آن (هنگام تعویض با نسخه قبلی) نشود. کانتینر ابری آروان از این قابلیت پشتیبانی میکند و در این دانشنامه به بررسی آن میپردازیم.
راهکارهای پیادهسازی Zero Downtime Deployment
مواردی متعدد در امکان پیادهسازی Zero Downtime Deployment دخیل هستند که باعث میشوند استقرار نسخههای جدید یک نرمافزار، با کمترین میزان از دسترس خارج شدن سرویس همراه باشد. در این بخش به معرفی چند راهکار پرکاربرد برای پیادهسازی Zero Downtime Deployment میپردازیم.
- داشتن چندین سرور: برای آنکه همواره نرمافزار در دسترس باشد، لازم است چندین سرور مختلف آن را ارایه دهند. به این ترتیب، قادر خواهیم بود که یک سرور را از دسترس خارج کنیم، تغییرات لازم را روی آن پیاده کنیم و سپس آن را برای سرویسدهی مجددن راهاندازی کنیم. با این راهکار، زمانی که یک سرور در حال دریافت تنظیمات لازم است، سایر سرورها میتوانند پاسخگوی کابران باشند.
- وجود تقسیمکننده بار (Load Balancer): لازم است حداقل یک تنظیمکنندهی بار در سیستم موجود باشد تا ترافیک دریافتی از کاربران را بین سرورها توزیع کند و در زمان در دسترس نبودن یک سرور، ترافیک مربوط به آن را به دیگر سرورها هدایت کند.
- بیحافظه بودن (Stateless): برای آنکه کاربر هنگام استقرار نسخهی جدید نرمافزار تجربهی کاربری نامناسبی نداشته باشد، باید ارتباط او با سیستم بیحافظه باشد و جلسهای (Session) برای ارتباط او تشکیل نشود. به این معنا که اطلاعاتی از کاربر نباید در سرور ذخیره شود، بلکه سرور فقط با همان پیام دریافتی از سمت او (HTTP Request) بتواند پاسخ مورد نظرش را تولید کرده و برایش ارسال کند. فرض کنید چنین نباشد و اطلاعات کاربر در سرور ذخیره شده باشد، به این ترتیب، درخوست او هنگام قطع بودن سرور تحت تاثیر قرار خواهد گرفت و تجربهی بدی برای او ایجاد خواهد شد. اما اگر لازم است برای کاربر جلسهای تشکیل شود، باید مطمین بود که اطلاعات آن جلسه، فقط در یک سرور ذخیره نشده است و یک سرور مرکزی دیگر جلسه را مدیریت میکند.
مراحل انجام Zero Downtime Deployment
این روش که به روش آبی و سبز شناخته میشود، به شرح زیر است:
- دو نسخهی مورد نظر (فعلی و جدید) نرمافزار باید روی دو مجموعه از سرورها آماده باشند.
- تقسیمکننده بار در ابتدا تمامی ترافیک را به سرورهای قبلی ارسال میکند تا در آنجا بررسی شده و به آنها پاسخ داده شود.
- سپس نسخهی فعلی باید تست و بررسی شود تا مطمین شویم به درستی و مطابق آنچه انتظارش را داریم کار میکند.
- حال تقسیمکنندهی بار ترافیک را به سرورهای دارای نسخهی جدید هدایت میکند.
در محصول کانتینر ابری آروان، قابلیت Zero-Downtime Deployment پیاده شده است، به این ترتیب نسخهی جدید نرمافزار را میتوان بدون Downtime استقرار داد.