تحویل مداوم یا Continuous Delivery چیست؟

دسته بندی: دواپس (DevOps)
10 دقیقه زمان مطالعه
1400/08/18
0 نظر

در فرایند توسعه نرم‌افزار، روش‌ها و رویکردهای مختلفی برای توسعه و انتشار نرم‌افزار وجود دارد. یکی از روش‌های توسعه نرم‌افزار، توسعه و تحویل مداوم یا Continuous Delivery است. در این روش نرم‌افزار به صورت اتوماتیک در دوره‌های کوتاه آپدیت و آماده انتشار می‌شود. وجود فرایند تحویل مداوم برای پیاده‌سازی صحیح و سریع دواپس ضروری است.

در این مقاله با مفهوم دقیق CD، فرایند اجرایی و اهمیت آن در فرایند توسعه نرم‌فزار و همچنین تفاوت آن با Continuous Deployment یا استقرار مداوم آشنا می‌شوید. با ما همراه باشید.

تعریف Continuous Delivery (تحویل مداوم)

تحویل مداوم (CD)، که با عنوان تحویل پیوسته یا تحویل مستمر هم شناخته می‌شود، فرایندی است که در آن، هر تغییری که در کد ایجاد می‌شود به صورت اتوماتیک بیلد، پیکربندی، تست و انتشار آزمایشی آن انجام می‌شود. منظور از انتشار آزمایشی در واقع انتشار در محیط‌های تستی است که از قبل تعیین شده‌اند.

فرایند CD این امکان را به تیم‌ها می‌دهد که نرم‌افزار را قبل از انتشار اصلی، ارزیابی کنند و اتوماتیک بودن این فرایند، حجم زیادی از بار کاری روتین افراد تیم توسعه را کاهش می‌دهد.

در تحویل مداوم، تغییرات در لحظه در سورس کنترل اعمال می‌شوند و بیلد جدیدی ساخته و تست می‌شود. تغییرات مختلف می‌توانند تغییر در ساختار و پیکربندی، زیرساخت، سورس کد، رفع خطا (Debug) و … باشند.

جریان‌های انتشار (Release Pipelines)

Release Pipelines

با استفاده از CD و امکانات تست آن، می‌توانیم یک جریان انتشار (Release Pipeline) اتوماتیک بسازیم که طبق این جریان، تغییرات مختلف روی زیرساخت نرم‌افزار منتشر شوند. این زیرساخت می‌تواند شامل سرور، سیستم عامل، پیکربندی، وب‌سرویس و تنظیمات مربوط به هرکدام باشد.

با داشتن این روند متوالی و اتوماتیک، فرایند طولانی پیاده‌سازی و ادغام، تست و انتشار آزمایشی بسیار آسان می‌شود. فرایند CD در هر محیط آزمایشی (جریان‌های انتشار) با فرایند ادغام مداوم (CI) شروع و با تست و انتشار تمام می‌شود. سپس نرم‌افزار وارد مرحله بعدی از جریان‌ها می‌شود. مجموعه این مراحل و جریان‌ها Continuous Delivery را تشکیل می‌دهد.

هدف Continuous Delivery چیست؟

Continuous Delivery

در واقع هدف CD تبدیل کردن فرایند تحویل نرم‌افزار به یک فرایند ساده، سریع و روتین اتوماتیک است؛ به خصوص اگر راجع به سیستم‌های بزرگ و محیط‌های عملیاتی پیچیده صحبت کنیم. 

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

تفاوت Continuous Delivery و Continuous Deployment چیست؟

بسیاری از افراد وقتی از سرواژه CD استفاده می‌کنیم، به جای Continuous Delivery به Continuous Deployment یا استقرار مداوم فکر می‌کنند.

در استقرار مداوم، هر تغییری که در سورس کد برنامه ایجاد شود به صورت اتوماتیک در محیط عملیاتی منتشر و اجرایی می‌شود. 

اما در تحویل مداوم، تغییرات در مرحله اول در محیط‌های تستی (تست توسعه، تست کنترل کیفیت و …) و سپس در محیط عملیاتی منتشر می‌شوند؛ به عبارتی تغییرات آماده انتشار اصلی هستند، اما انتشار آن‌ها می‌تواند در لحظه اتفاق نیافتد و در زمانی دیگر رخ بدهد.

تفاوت Continuous Delivery و دواپس چیست؟

DevOps and CD

اگر دو مفهوم دواپس و تحویل مداوم را کنار هم دیده‌اید تعجب نکنید. این دو تعریف ارتباط نزدیکی با یکدیگر دارند؛ اما این به معنی یکسان بودن آن‌ها نیست.

دواپس در واقع یک رویکرد و فرهنگ است که علاوه بر اتوماسیون فرایند توسعه و تحویل نرم‌افزار (که شامل CI/CD نیز می‌شود)، فرهنگ لازم برای شکل‌گیری ارتباط بین تیم‌های مختلف (تیم توسعه، تیم عملیات، تیم تست و …) را نیز در سازمان پیاده‌سازی می‌کند.

اما در تحویل مستمر، تمرکز اصلی پیاده‌سازی صحیح اتوماسیون زنجیره‌واری است که در نهایت نرم‌افزار را با کم‌ترین خطا و بالاترین کارایی، آماده انتشار می‌کند. Continuous Delivery فقط تا قبل از انتشار نهایی نرم‌افزار کاربرد دارد و پس از آن، نقش دواپس پررنگ‌تر می‌شود.

در نبود Continuous Delivery چه اتفاقی می‌افتد؟

در نبود CD، انتشار نرم‌افزار به فرایندی سخت و مانعی برای تیم‌های عملیات فناوری اطلاعات و محصول تبدیل می‌شود. انجام فرایند توسعه و تحویل به صورت دستی، مشکلات مختلفی را برای فرایند انتشار ایجاد می‌کند؛ از جمله خطاهای زیاد، نرم‌افزار غیرقابل اعتماد و تاخیر در انتشار.

شرایط لازم برای اجرای Continuous Delivery

اگر بخواهیم یک فرایند موفق CD را پیاده‌سازی کنیم، به برخی موارد نیاز داریم. مهم‌ترین این الزامات عبارتند از:

  • انجام تست‌های پیش‌نیاز، برای اطمینان از صحت عملکرد نرم‌افزار و وجود شرایط لازم برای استقرار نرم‌افزار
  • زیرساخت و ابزارهای اتوماسیون، در کنار اسکریپت‌ها و دستورالعمل‌های لازم برای استقرار موفق که امکان عقب‌گرد در مراحل را دارد

جمع‌بندی

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

وجود Continuous Delivery باعث می‌شود تا نرم‌افزار با کم‌ترین خطا، بهینه‌ترین عملکرد و در سریع‌ترین زمان به دست مشتریان برسد. با داشتن این ساختار، حتی اگر مجبور شوید برنامه را زودتر از زمان پیش‌بینی شده منتشر کنید، احتمال خطا و عملکرد اشتباه در آن بسیار پایین می‌آید.

وجود Release Pipelines به توسعه‌دهندگان این امکان را می‌دهد که هر مرحله از توسعه و افزودن ویژگی جدید را، با کم‌ترین خطا پشت سر بگذارند و نرم‌افزار همیشه آماده انتشار باشد. این ویژگی از خطاهای بزرگ و در نتیجه هدر رفت هزینه و زمان جلوگیری می‌کند.

امتیاز شما به این مقاله:
نویسنده: یک مهندس نرم‌افزار باتجربه که تجربه‌های عملی خود را در بلاگ آسا به اشتراک می‌گذارد.

مطالب مرتبط