استقرارِ بدونِ قطعی (Zero‑Downtime Deployment) چگونه کار میکند؟
استقرارِ بدونِ قطعی یعنی بتوانید نسخهٔ جدیدِ نرمافزار را منتشر کنید بدونِ اینکه حتی یک کاربر وقفهای تجربه کند. برای سرویسهایی که کاربرِ واقعی و همیشهفعال دارند، این دیگر یک تجمل نیست؛ یک انتظارِ پایه است.
چرا استقرارِ ساده قطعی ایجاد میکند؟
در استقرارِ سنتی، سرویس متوقف میشود، نسخهٔ جدید جایگزین میشود و دوباره بالا میآید. در این فاصله کاربران خطا میبینند. هدفِ استقرارِ بدونِ قطعی حذفِ همین فاصله است.
الگوهای رایج
Blue‑Green
دو محیطِ کاملاً یکسان وجود دارد: یکی فعال (blue) و یکی آمادهٔ انتشار (green). نسخهٔ جدید روی green مستقر و آزمایش میشود، سپس ترافیک یکباره به green منتقل میشود. اگر مشکلی پیش بیاید، بازگشت به blue فوری است.
Rolling
نسخهٔ جدید بهتدریج و نمونهبهنمونه جایگزین میشود، طوریکه همیشه بخشی از ظرفیت در حالِ سرویسدهی است. انتشار نرم است و منابعِ کمتری میخواهد.
پیشنیازها
- بررسیِ سلامت (health check) تا سیستم بداند نسخهٔ جدید واقعاً آماده است.
- سازگاریِ رو به عقبِ پایگاهداده تا نسخهٔ قدیم و جدید همزمان کار کنند.
- مهاجرتِ schema جدا از انتشارِ کد، با گامهای افزایشی.
- امکانِ بازگشتِ سریع (rollback) در صورتِ بروزِ مشکل.
یک قاعدهٔ مهم: مهاجرتِ schema را از انتشارِ کد جدا کنید و همیشه رو به عقب سازگار بمانید.
در اپوآپ، خطِ استقرار را طوری طراحی میکنیم که انتشار بدونِ قطعی، همراه با health check و برنامهٔ بازگشت، بخشِ عادیِ کار باشد — نه یک عملیاتِ پراسترس.