استقرار تدریجی با Octopus؛ از ۱۰٪ تا ۱۰۰٪ کاربرها
خلاصهٔ کاملتر
قسمت ۱۸ سری Octopus Easy Mode یه پروژهٔ نمونه میسازه که progressive rollout — یعنی رسوندن نسخهٔ جدید اول به بخش کوچیکی از کاربرهای production و بعد بزرگتر کردن دامنهش — رو نشون میده. منطقش کاهش ریسکه: نسخه رو تو محیط واقعی اعتبارسنجی میکنی و اگه مشکلی بود قبل از رسیدن به همهٔ کاربرها جلوش گرفته میشه. نویسنده هم به توصیهٔ AWS Well-Architected دربارهٔ staggered deployment اشاره میکنه.
ساختار پروژه رو خود Octopus AI Assistant با یه پرامپت کوتاه میسازه. نتیجه یه lifecycle سفارشی به اسم Progressive با چهار فازه: Development، Prod 10، Prod 50 و Prod 100. هر فاز فقط یه environment رو هدف میگیره و خود lifecycle ترتیب پیشروی ریلیز رو اجبار میکنه. فرایند استقرار با استپ Deploy App شروع میشه که فقط شبیهسازیه و یه خط توی لاگ تسک مینویسه.
استپ بعدی، Simulate Failure، نقش دروازهٔ اعتبارسنجی رو داره: متغیر prompted به اسم Project.SimulateFail رو چک میکنه و اگه True باشه با خطا خارج میشه و رولاوت همونجا میایسته. اگه پاس شد، یه step template انجمنی به اسم Run Octopus Deploy Runbook اجرا میشه و رانبوکِ Deploy Release رو صدا میزنه تا همون ریلیز به محیط بعدی بره. ID ریلیز هم بهعنوان متغیر Project.Release.Id پاس داده میشه تا دقیقاً همون نسخه پیش بره، نه یه نسخهٔ جدید.
چرا اصلاً رانبوک؟ نویسنده توضیح میده که Octopus تا وقتی استقرار فعلی تموم نشده اجازهٔ استقرار محیط بعدی رو نمیده، پس نمیشه وسط دیپلوی Prod 10 مستقیم Prod 50 رو راه انداخت. رانبوک یه استپ Sleep داره که ۶۰ ثانیه صبر میکنه و بعد با API آکتوپوس استقرار بعدی رو میسازه. همین تأخیر کوتاه تضمین میکنه مرحلهٔ قبلی کامل شده باشه. منطق انتخاب مقصد هم سادهست: از Prod 10 به Prod 50 و از Prod 50 به Prod 100.
به گفتهٔ نویسنده، این تأخیر رو میشه به یه scheduled deployment تبدیل کرد تا مثلاً رسیدن به ۱۰۰٪ ترافیک فقط تو ساعات خلوت یا بعد از یه روز کامل تست تو Prod 50 اتفاق بیفته. قابلیت prevent release progression هم جلوی پیشروی یه ریلیز خراب رو میگیره تا وقتی مشکلش حل نشده. مقایسهٔ environment با tenant هم آورده: environmentها تو UI بهتر دیده میشن، lifecycle ترتیبشون رو اجبار میکنه، و بلاککردن پیشروی ریلیز فقط برای environmentها در دسترسه.
نکات کلیدی:
- lifecycle سفارشی Progressive با چهار فاز: Development، Prod 10، Prod 50 و Prod 100
- استپ Simulate Failure با متغیر prompted Project.SimulateFail کل رولاوت رو متوقف میکنه
- رانبوک Deploy Release ۶۰ ثانیه Sleep میکنه و بعد استقرار بعدی رو با API میسازه
- بلاککردن پیشروی ریلیز فقط برای environmentها هست، نه tenantها
- برای شروع به یه اکانت Octopus Cloud و افزونهٔ کروم Octopus AI Assistant نیاز داری




