Continuous Delivery یا به اختصار CD که معادلی همچون «تحویل مداوم» میتوان برایش در نظر گرفت به رویکردی در صنعت توسعهٔ نرمافزار گفته میشود که طی آن تیم مهندسی همواره این آمادگی را دارا است تا آخرین نسخه از نرمافزار را در هر زمانی منتشر نماید که این نسخه میتواند شامل قابلیتهای جدید، تغییرات پیکربندی، رفع باگها و ... باشد.
در حقیقت، CD این تضمین را ایجاد میکند که مشتری در هر لحظهای که اراده کند نسخهٔ جدید نرمافزار باید قابلانتشار بوده و تیم مهندسی از این بابت نباید هیچگونه واهمهای داشته باشد و این مهم زمانی عملی میگردد که همیشه آمادگی این را داشته باشیم تا نسخهای بهروز، بدون باگ و پایدار از نرمافزار را در اختیار مشتری قرار دهیم حتی اگر تیم توسعهٔ نرمافزار شامل دهها و یا صدها دولوپر از اقصی نقاط جهان باشد (به خاطر داشته باشیم که در اینجا منظور از مشتری هم میتواند یک شرکت دیگر و هم یک دپارتمان دیگر داخل شرکت نرمافزاری باشد.)
تفاوت Continuous Delivery با Continuous Deployment چیست؟
لازم به یادآوری است که سرواژهٔ CD مخفف واژگان Continuous Deployment به معنی «انتشار مداوم» نیز میباشد که طی آن نسخههای پایدار و بدون باگ نرمافزار به صورت خودکار روی سرور دیپلوی (ارسال) میشوند و نیاز به توضیح نیست که در چنین شرایطی ممکن است در طول روز چندین نسخهٔ جدید از نرمافزار روی سرور دیپلوی گردد اما در «تحول مداوم» گرچه نرمافزار کماکان آمادهٔ دیپلوی است، اما انتشار یا عدم انتشار آن بستگی به نظر و ارادهٔ تیم توسعهٔ نرمافزار دارد (نیاز به توضیح نیست برای آنکه قادر گردیم «انتشار مداوم» انجام دهیم، میباید ابتدا پروسهٔ «تحویل مداوم» را با موفقیت پشت سر بگذاریم.)
چه ارتباطی مابین Continuous Delivery و Continuous Integration وجود دارد؟
Continuous Integration به تست، بیلد، ادغام و یکپارچهسازی سورسکد در محیط توسعهٔ نرمافزار مرتبط است به طوری که طی آن دائماً نسخههای جدید نرمافزار با ریپازیتوری اصلیاش ادغام میگردد به طوری که در عین حال این تضمین نیز ایجاد میگردد که در کدهای جدید هیچگونه مشکلی وجود نداشته و بخشهای جدیدی که به سورسکد اضافه شدهاند با الباقی ماژولها سازگار هستند اما این در حالی است که Continuous Delivery گام بعدی محسوب میشود به این معنی که پس از آپدیت شدن سورسکد، تیم مهندسی با بررسیهای بیشتر این اطمینان را میدهد که نرمافزار در هر لحظهای که مشتری اراده کند قابلانتشار است.
CD چه مزیتهایی دارا است؟
یکی از نقاط قوت کلیدی CD آن است که فرآیند دریافت فیدبک (بازخورد) از کاربران را تسریع مینماید. در واقع، زمانی که ما با سرعت بیشتری فیچرهای جدید را در معرض استفادهٔ کاربران نرمافزار یا اپلیکیشن قرار میدهیم، به همان میزان هم سریعتر میتوانیم از ایشان فیدبک بگیریم و در صورت نیاز دست به اِعمال تغییرات بزنیم. به طور کلی، دیگر مزیتهای CD عبارتند از:
- انتشار نرمافزار با حداقل ریسک: نیاز به توضیح نیست که هدف از «تحویل مداوم» آن است که انتشار نسخههای جدید از نرمافزار یا اپلیکیشن را با حداقل استرس و ریسک در هر لحظهای بنا به صلاحدید مشتری انجام داد.
- بهروزرسانی سریعتر: با آنچه تاکنون گفته شد، نیاز به توضیح نیست که CD تیمهای مهندسی را قادر میسازد تا همواره در سریعترین زمان ممکن کاربران/مشتریان خود را با نسخههای جدید نرمافزار خوشحال نمایند.
- کیفیت بیشتر: زمانی که به طور مستر آپدیتهای کوچکی در نرمافزار صورت میگیرد، این تضمین ایجاد میگردد که همواره نسخهٔ فعلی نسبت به نسخهٔ قبلی بهبود یافته است و همین مسئله منجر بدین خواهد شد تا کیفیت نرمافزار ارتقاء یابد.
- فشار روانی کمتر روی دولوپرها: وقتی CD پروسهٔ انتشار نسخههای جدید نرمافزار را تسهیل میکند این بدان معنا است که افراد دخیل در این پروسه همچون برنامهنویسان و نیروهای عملیاتی یا به بیان بهتر دوآپس فشار کمتری را متحمل خواهند شد و همین مسئله باعث رضایت شغلی بیشتر ایشان خواهد شد و بالتبع به جای مسائل جانبی و حاشیهای، ایشان میتوانند روی موضوعات کلیدیتری همچون اِعمال الگوریتمهای بهتر، تجربهٔ کاربری خوبتر و چیزهایی از این دست تمرکز کنند.
واقعیت امر آن است که Continuous Delivery اصلاً موضوع عجیبوغریبی نیست بلکه اساساً مرتبط با این موضوع است که سورسکد پروژههای نرمافزار به صورت روزانه بهبود یافته به طوری که در هر لحظهای توانایی انتشار نسخهٔ جدیدی که به صورت لوکال توسعه داده شده است را داشته باشیم.