CI/CD یا یکپارچهسازی مستمر (CI) و تحویل و استقرار مستمر (CD)، روشی است که اغلب با اتوماسیون مراحل توسعه اپلیکیشن، تحویل برنامهها را تسریع میکند. این رویکرد به دلیل کاهش زمان ورود به بازار، پاسخ بهنگام به بازخوردها، کاهش قابل توجه عملیات دستی و تسهیل و تسریع یکپارچهسازی مؤلفههای محصول و راهکار، مورد توجه فینتکها و استارتاپها در سراسر جهان بوده است.
مؤسسه تحقیقات و مشاوره مدیریت مکنزی، رویکرد CI/CD را یکی از ابزارهای تبدیلشدن به استارتاپی در کلاس جهانی معرفی کرده است. البته بانکهایی نظیر ABN AMRO در هلند نیز به این رویکرد توجه داشتهاند و از آن برای رسیدن به چابکی بهره گرفتهاند. در این نوشتار رویکرد و روش «یکپارچهسازی مستمر و تحویل و استقرار پیوسته (CI/CD)» بحث و بررسی خواهد شد.
CI/CD چیست؟
CI/CD پروسهای مستمر برای خودکارسازی (Automation) و پایش (Monitoring) دائم چرخه عمر یک اپلیکیشن است. این پروسه شامل یکپارچهسازی، تست، تحویل و استقرار است. به طور کلی، به مجموعه این عملیات، خط لوله CI/CD یا
CI/CD pipeline گفته میشود که با همکاری تیم توسعه و مهندسان دواپس (DevOps) با رویکرد مدیریت چابک (Agile) پیادهسازی میشود.
یکپارچهسازی مستمر چیست؟
یکپارچهسازی مستمر (Continuous Integration) به تیمهای مهندسی چابک و دواپس کمک میکند تا تغییرات اعمالشده روی سورسکد در سیستم هر یک از برنامهنویسان و دولوپرها دائماً با مخزن سورسکد اصلی ادغام و یکپارچهسازی شوند.
باید توجه داشت که این کار ابتدا با پیادهسازی و اجرای یکسری تستها انجام میشود تا اطمینان حاصل شود که کامپوننتها/ کدهای جدید با کامپوننتها/ کدهای قدیمی ناسازگاری ندارند. این استراتژی اساساً دو نتیجه و دستاورد بسیار مهم خواهد داشت: اولی به حداقل رسیدن بروز تداخل (Conflict) مابین فیچرهای جدیدی که توسط برنامهنویسان مختلف افزوده میشوند و دوم تضمین اینکه برنامهنویسان همواره به آخرین نسخه از تغییرات دسترسی دارند.
تحویل مستمر چیست؟
تحویل مستمر (Continuous Delivery) گام بعد از یکپارچهسازی مستمر است و این تضمین را ایجاد میکند که هر زمان که سازمان تمایل داشته باشد، تیمهای توسعه نرمافزار میتوانند با اطمینان خاطر کدهای جدید را روی سرور مستقر کنند؛ چراکه قبلاً تستهای مختلفی روی سورسکد اعمال شده و هیچ مشکلی در ارتباط با انتشار نسخه جدید نرمافزار وجود نخواهد داشت.
در این فرایند، اقداماتی همچون ساخت (Build)، بستهسازی (پکیجکردن فایل اجرایی با فایلهای مورد نیاز برای اجرا شدن فایل اجرایی) و سایر کارهای لازم برای کارا بودن یک نرمافزار نیز تکمیل میشوند. تحویل مستمر (CD) این امکان را به توسعهدهندگان میدهد که به صورت روزانه، هفتگی یا ماهانه، نسخه جدید نرمافزار خود را در دسترس کاربران واقعی خود قرار دهند.
استقرار مستمر چیست؟
استقرار مستمر (Continuous Deployment) پس از تحویل مستمر صورت میگیرد؛ بدین شکل که هر تغییری که در سورسکد اعمال شود و با موفقیت تستهای مختلف را پشت سر گذارد، توسط سیستم بهصورت خودکار روی سرور مستقر میشود و هرگز برای این کار نیازی به دخالت عامل انسانی نخواهد بود و تنها در صورتی متوقف میشود که سورسکد در تستها موفق نباشد.
در مجموع میتوان گفت از مزایای استقرار مستمر این است که توسعهدهندگان میتوانند تمرکز خود را روی کدنویسی گذاشته و انتشار خلاقیتهایی که به خرج میدهند را به سیستمهای کامپیوتری واگذار کنند. این کار منجر خواهد شد توسعهدهندگان، بازخوردهای مرتبط با تغییرات مد نظر خود را با سرعت بیشتری از کاربران تحویل گیرند.
جمعبندی و سخن پایانی
در مطالب ارائهشده دو هدف مشترک دنبال میشود:
- سرعت بیشتر
- اطمینان بالاتر
در واقع رویکرد CI/CD نسبت به روش استقرار فرآوردههای نرمافزاری در محیطهای کارفرمایی سرعت و اطمینان بالاتری ایجاد میکند. رسیدن به سرعت بیشتر در استقرار، از طریق حذف تمامی کارهای دستی مربوط به استقرار محقق میشود که این راهکار در مفهوم تحویل و استقرار مستمر (CD) تعبیه شده و دستیابی به اطمینان بالاتر نیز در گرو انجام صحیح تغییرات است که مفهوم یکپارچهسازی مستمر (CI) تضمینکننده آن است.
شرکتهای فناوری اطلاعات بانکها و شرکتهای ارائهکننده راهکارهای بانکی، به چند صورت از مزایای رویکرد CI/CD بهره میبرند:
- تسریع در پاسخگویی به نیازمندیهای بسیار متغیر مشتریان؛
- کمشدن اثرات دردسرهای بزرگ در سیستمهای بانکی که ناشی از مقیاس بزرگ Core Banking و تعدد کارهای همزمان توسعه روی آنهاست؛
- تسهیل و تسریع برآوردهسازی تغییرات رگولاتوری؛
- کمشدن ریسکهای ناشی از قطع شدن سیستم بانکی به دلیل کدهای ناسازگار و دارای خطا و افزایش قابلیت اطمینان؛
- کاهش زمان ورود/ عرضه به بازار (Time to Market)؛
- افزایش امنیت راهکارها.