شرکت مدانت

در چارچوب ITIL 4، جداسازی استقرار (Deployment) از انتشار (Release) بخشی از تمرین‌های پیشرفته در دو حوزه‌ی Release Management و Deployment Management محسوب می‌شود. ITIL 4 تأکید دارد که انتشار یک تغییر برای کاربران نهایی نباید الزاماً همزمان با استقرار فنی آن باشد. این رویکرد، که با استفاده از ابزارهایی مانند feature toggles، blue-green deployment یا canary releases پشتیبانی می‌شود، امکان تحویل ارزش به‌صورت امن، کنترل‌شده و با ریسک کمتر را فراهم می‌کند. در ITIL 4، تمرکز بر مدیریت ارزش کسب‌وکار است، نه صرفاً تحویل تغییر، و این جداسازی دقیقاً همین هدف را محقق می‌کند.

قبل از بررسی این جداسازی بیایید یک سناریو واقعی را بررسی کنیم.

نجات پروژه فروشگاه آنلاین در یک جمعه سیاه

سناریو: شرکت ایکس بعنوان مالک یک پلتفرم فروشگاهی بزرگ در کشور، تصمیم می‌گیرد یک فیچر پیشنهاد هوشمند را برای افزایش فروش محصولات خود فعال کند. ویژگی‌ها کاملاً تست شده‌اند، اما ریسک اصلی زمان انتشار است: جمعه سیاه، ساعت ۹ صبح. تیم مجبور است ویژگی جدیدی را در روز جمعه سیاه ارائه دهد. یک اشتباه کوچک در این روز می‌تواند میلیون‌ها تومان خسارت وارد کند. در اینجا، جدا کردن استقرار از انتشار راه‌حلی نجات‌بخش می‌شود. این یعنی شرکت ایکس به‌جای انتشار مستقیم تصمیم می‌گیرد:

  1. ویژگی را دو روز قبل مستقر (deploy) کند، اما آن را برای کاربران غیرفعال نگه دارد.
  2. در روز جمعه و پس از بررسی وضعیت سرورها، با استفاده از feature toggle و Canary Release، آن را فقط برای ۵٪ کاربران فعال کنند.
  3. پس از مشاهده رفتار کاربران و سلامت سیستم، طی چند ساعت بعد، انتشار کامل انجام می‌شود.

نتیجه:
نه‌تنها سیستم بدون مشکل کار کرد، بلکه فروش آن روز ۲۷٪ افزایش یافت. مشتریان هم تجربه بهتری داشتند جدا کردن استقرار از انتشار باعث شد تیم بتواند بدون نگرانی از بروز خطا در زمان اوج ترافیک، کنترل کامل بر ویژگی جدید داشته باشد. این رویکرد نه فقط در جمعه سیاه، بلکه در هر به‌روزرسانی مهمی ضروری است.

در جدول زیر، دو تکنیک مهم در جداسازی استقرار (Deployment) از انتشار (Release) در چارچوب ITIL 4 — یعنی Feature Toggle و Canary Release — به صورت مقایسه‌ای شرح داده شده‌اند:

جدول مقایسه Feature Toggle و Canary Release

تکنیک‌های Feature Toggle و Canary Release سابقه‌ای چندده‌ساله در مهندسی نرم‌افزار دارند، اما با گسترش متدلوژی‌های چابک (Agile) و DevOps، نقش آن‌ها در مدیریت تغییر و انتشار بسیار پررنگ‌تر شده است. Feature Toggle نخستین بار توسط توسعه‌دهندگان در شرکت‌هایی مثل Flickr و Facebook مورد استفاده قرار گرفت تا ویژگی‌هایی را در محیط production مستقر کنند اما تنها برای گروه خاصی از کاربران یا در شرایط خاص فعال نمایند. این روش به تیم‌ها اجازه می‌دهد بدون نیاز به بازاستقرار، ویژگی‌ها را روشن یا خاموش کرده و کنترل دقیق‌تری بر زمان و نحوه انتشار داشته باشند. از سوی دیگر، Canary Release الهام‌گرفته از روش‌های ایمنی در معادن (استفاده از قناری‌ها برای شناسایی گازهای سمی) است و اولین بار در مقیاس وسیع توسط Google و Netflix به‌کار گرفته شد. این تکنیک به تیم‌ها اجازه می‌دهد تا نسخه‌ی جدیدی از نرم‌افزار را ابتدا برای درصد محدودی از کاربران منتشر کرده و در صورت عدم مشاهده مشکل، آن را به کل کاربران گسترش دهند. هر دو روش امروز بخشی جدایی‌ناپذیر از استراتژی‌های مدرن انتشار در چارچوب‌هایی مانند ITIL 4، Site Reliability Engineering (SRE) و Continuous Delivery هستند.

ویژگی / تکنیکFeature Toggle (کلید ویژگی)Canary Release (انتشار قناری‌وار)
تعریفمکانیسمی در کد که به شما اجازه می‌دهد یک ویژگی را بدون تغییر در کد اصلی فعال یا غیرفعال کنید.نوعی انتشار تدریجی که ابتدا تنها برای درصد کمی از کاربران فعال می‌شود.
هدف اصلیجدا کردن زمان استقرار از زمان فعال‌سازی ویژگی برای کاربران.شناسایی مشکلات احتمالی در مقیاس کوچک قبل از انتشار عمومی.
نحوه اجرااز طریق پارامترهای پیکربندی یا ابزارهای third-party (مثلاً LaunchDarkly، Unleash).با تقسیم ترافیک به چند گروه و هدایت آن به نسخه جدید از نرم‌افزار در محیط production.
مزیت کلیدیکنترل لحظه‌ای و سریع بر فعال‌سازی ویژگی‌ها بدون نیاز به استقرار مجدد.کاهش ریسک انتشار و امکان rollback سریع در صورت بروز مشکل.
مناسب برایویژگی‌های بزرگ یا حساس که نیاز به تست در زمان‌های خاص دارند.نسخه‌هایی که ممکن است در رفتار یا عملکرد ریسک بالایی داشته باشند.
میزان وابستگی به کدوابسته به کدنویسی و ساختار معماری نرم‌افزار.بیشتر در سطح زیرساخت و مسیر ترافیک و نسخه‌های سرویس اجرا می‌شود.
ابزارهای متداولLaunchDarkly، Unleash، ConfigCatKubernetes، Istio، Spinnaker، AWS CodeDeploy
در ITIL 4 در کدام تمرین؟در تمرین‌های Release Management و Deployment Management به‌عنوان الگوهای مدرن توصیه می‌شوند.

در ادامه، یک جدول مزایا و توضیح درباره چرایی و چگونگی جداسازی استقرار (Deployment) از انتشار (Release) ارائه می‌دهیم:

مزایای جداسازی استقرار از انتشار

مزیتتوضیح
کاهش ریسکامکان فعال‌سازی تدریجی ویژگی‌ها و جلوگیری از بروز خطا در محیط واقعی
سرعت در تحویلاستقرار پیش از زمان انتشار، باعث کاهش تأخیر و افزایش چابکی تیم می‌شود
کنترل بیشترتیم می‌تواند زمان دقیق انتشار را با توجه به شرایط بازار یا سیستم انتخاب کند
انعطاف‌پذیری در مدیریت ویژگی‌هاامکان استفاده از feature toggle برای فعال/غیرفعال‌سازی ویژگی‌ها
بهبود تجربه کاربرکاربران با نسخه‌ای پایدار و تست‌شده روبه‌رو می‌شوند، بدون اختلال ناگهانی
امکان آزمون تدریجیاستفاده از تکنیک‌هایی مانند Canary Release برای تست محدود در ابتدا

چرا باید استقرار و انتشار را جدا کرد؟

  • در مدل‌های سنتی مانند واترفال، استقرار و انتشار هم‌زمان هستند؛ یعنی با استقرار کد، ویژگی بلافاصله در اختیار کاربران قرار می‌گیرد. این موضوع باعث افزایش ریسک بروز خطا و کاهش کنترل روی زمان عرضه می‌شود.
  • در محیط‌های پویا و سریع مانند Agile یا DevOps، جداسازی باعث می‌شود تیم‌ها بتوانند کد را زودتر در محیط عملیاتی قرار دهند و در زمان مناسب آن را منتشر کنند.

چگونه این جداسازی انجام می‌شود؟

مرحلهاقدام
استقرار (Deploy)کد به محیط production ارسال می‌شود ولی برای کاربران نهایی غیرفعال می‌ماند.
ابزارهای کنترلاستفاده از feature toggle، LaunchDarkly، یا config flags برای کنترل انتشار.
تست تدریجیابتدا با Canary Release یا Blue-Green Deployment روی درصدی از کاربران فعال می‌شود.
انتشار (Release)پس از اطمینان از عملکرد، ویژگی برای کل کاربران فعال می‌شود.

اجرای جداسازی بین استقرار (Deployment) و انتشار (Release) هرچند مزایای زیادی دارد، اما با چالش‌هایی نیز همراه است. در ادامه مهم‌ترین چالش‌ها را با توضیح مختصر آورده‌ام:

چالش‌های اجرای جداسازی استقرار از انتشار

چالشتوضیح
1. پیچیدگی در معماری نرم‌افزاربرای پیاده‌سازی feature toggle یا Canary Release، معماری باید ماژولار و قابل‌تنظیم باشد.
2. نیاز به ابزارهای خاصاجرای این جداسازی نیازمند ابزارهای مدیریت ویژگی (مانند LaunchDarkly یا Unleash) و CI/CD پیشرفته است.
3. هماهنگی بین تیم‌هاتوسعه‌دهندگان، تست‌کنندگان، DevOps و مدیر محصول باید دقیقاً روی زمان‌بندی و سیاست‌های انتشار هم‌نظر باشند.
4. ریسک فعال‌سازی اشتباهاگر feature toggle به‌درستی پیکربندی نشده باشد، ممکن است ویژگی ناخواسته برای کاربران فعال شود.
5. افزایش بار نگهداری کدفعال/غیرفعال بودن ویژگی‌ها باید به‌درستی مدیریت شود تا منجر به پیچیدگی بیش از حد در کد نشود.
6. دشواری در تست کاملوقتی ویژگی‌ای مستقر شده ولی هنوز منتشر نشده، تست آن در محیط production نیازمند دقت و ابزارهای مخصوص است.
7. مقاومت فرهنگی در تیمبرخی تیم‌ها (مخصوصاً در سازمان‌های سنتی‌تر) با تغییر رویکردهای انتشار و استقلال DevOps مخالفت دارند.

راهکارهای پیشنهادی برای عبور از این چالش‌ها:

  • طراحی معماری مبتنی بر microservice یا feature flags
  • آموزش تیم‌ها درباره مزایا و روندهای مدرن DevOps
  • استفاده از ابزارهای مدیریت انتشار مانند LaunchDarkly، Split.io یا Unleash
  • مستندسازی دقیق سیاست‌های feature toggling
  • داشتن محیط staging قوی برای تست نهایی قبل از release

در سرویس‌دسک پلاس (ServiceDesk Plus) که یک ابزار ITSM از شرکت ManageEngine است، جداسازی بین استقرار (Deployment) و انتشار (Release) نیز می‌تواند به‌خوبی پیاده‌سازی شود، به‌ویژه در نسخه‌های حرفه‌ای یا Enterprise که ماژول‌های Change Management و Release Management را دارند. در ادامه، توضیح می‌دهیم این جداسازی چگونه در ServiceDesk Plus قابل انجام است:

فرایند Deployment و Release در ابزار سرویس دسک پلاس

مرحلهشرح کاربردی در ServiceDesk Plus
1. درخواست تغییر (Change Request)از طریق ماژول تغییر (Change Module) یک RFC (درخواست تغییر) ثبت می‌شود که شامل هدف، تأثیر و خطرات است.
2. برنامه‌ریزی انتشار (Release Planning)یک Release Record در ماژول Release Management ساخته می‌شود که شامل برنامه زمان‌بندی و rollback plan است.
3. استقرار بدون انتشاردر فاز Deployment, کد یا تنظیمات جدید روی سرورها یا سیستم‌ها نصب می‌شود اما برای کاربران فعال نمی‌شود (feature toggle).
4. تست و بررسی کنترل‌شدهتست توسط تیم تست یا تیم محدود کاربری (pilot group) انجام می‌شود و نتایج در Release Record ثبت می‌گردد.
5. انتشار نهاییپس از تأیید CAB یا Release Manager، ویژگی به‌صورت گسترده فعال (release) می‌شود و کاربران آن را می‌بینند.

کاربرد این جداسازی در ITIL

فرض کنید تیم IT می‌خواهد ویژگی جدیدی در پورتال کاربران نهایی اضافه کند (مثلاً قابلیت درخواست تجهیزات جدید).

  1. تیم توسعه ویژگی را پیاده‌سازی می‌کند و روی محیط production استقرار (deploy) می‌کند اما آن را با یک feature flag غیرفعال نگه می‌دارد.
  2. در ServiceDesk Plus، در ماژول Release یک Release Record ایجاد می‌شود که زمان انتشار عمومی را مشخص می‌کند.
  3. تیم QA یا کاربران منتخب، ویژگی را تست می‌کنند.
  4. پس از تأیید، Release Manager در زمان تعیین‌شده feature flag را فعال کرده و انتشار انجام می‌شود.
ابزارهای کمکی در سرویس دسک پلاس برای این مدل:
  • Change Advisory Board (CAB): برای بررسی و تصویب تغییرات و انتشارها
  • Release Workflow: تعریف دقیق مراحل approval، deployment و go-live
  • Status Tracking: برای مشاهده وضعیت دقیق هر فاز از Release
  • Integration با ابزارهای CI/CD: مانند Jenkins یا GitLab برای استقرار خودکار

با مدانت در تماس باشید

مشاوره و پشتیبانی


دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

Time limit is exhausted. Please reload CAPTCHA.

error: ياد بگيريم از کپي کردن حذر کنيم×| مدانت