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