ادغام مداوم (Continuous Integration)
ادغام مداوم
ادغام مداوم، فرآیند خودکارسازی ادغام تغییرات کدهای برنامه در یک پروژه نرمافزاری است. این تغییرات میتوانند به طور موازی توسط چند توسعهدهنده اعمال شوند. CI به توسعهدهندگان اجازه میدهد که تغییرات کدها را به طور متناوب در یک انباره (Repository) ذخیره نمایند. در این انباره مرکزی، کدها به طور متناوب ساخته (Build) و تست میشوند. معمولاً قبل از اینکه کدها ادغام شوند، به صورت خودکار از ابزارهایی جهت بررسی صحت کدها استفاده میشود.
اهمیت ادغام مداوم
برای درک بهتر اهمیت ادغام مداوم، بهتر است ابتدا مسائل و مشکلاتی که در نبود آن به وجود میآیند را بررسی نمائیم. بدون ادغام مداوم، زمانی که توسعهدهندگان میخواهند تغییری در کد اصلی پروژه اعمال نمایند، باید به صورت غیر خودکار و سنتی با هم در ارتباط و هماهنگی باشند. این نیاز به هماهنگی، بعضاً از سطح تیم توسعه نیز فراتر میرود و به تیمهای عملیات و حتی بقیه سازمان تعمیم مییابد.
به این ترتیب، ارتباطات در یک سازمان بدون CI میتواند بسیار پیچیده شوند و هزینههای بروکراسی غیرضروری به پروژهها اضافه نماید. از آنجا که توسعهدهندگان باید با احتیاط و دقت بیشتری ادغامها را انجام دهند، این موضوع باعث تأخیر در انتشار نسخههای جدید نرمافزار میشود؛ ضمن اینکه احتمال خطا بسیار افزایش پیدا میکند. با افزایش حجم کد اصلی نرمافزار و تعداد اعضای تیم توسعه، احتمال وقوع این اشکالات به طور نمایی زیاد خواهد شد.
در یک سازمان بدون CI ممکن است ارتباط مناسب بین تیم مهندسی و بقیه سازمان از بین برود. در این سازمان، تیم مهندسی مانند یک جعبه سیاه خواهد بود و بقیه سازمان، نیازمندیها را در ورودی به آن میدهند و ممکن است نتایج مورد انتظار را در خروجی دریافت نمایند. به دلیل اینکه زمان لازم برای ادغام تغییرات جدید برای تیم مهندسی مشخص نیست، تخمین زمان تحویل درخواستها نیز بسیار سخت خواهد شد.
کاری که CI انجام میدهد
بهکارگیری CI در سناریوهایی که پیش از این ذکر شد، به توسعهدهندگان این امکان را میدهد که به طور مستقل و موازی بر بخشهای مختلف تمرکز نمایند. زمانی هم که لازم است تغییرات خود را با محصول نهایی ادغام کنند، میتوانند این کار را به طور مستقل و سریع انجام دهند. در حال حاضر CI به یک رویکرد پربازده و مدرن در سازمانهای مهندسی نرمافزار تبدیل شدهاست.
شیوه استفاده از CI
عموماً از CI در کنار یک جریان کاری چابک (Agile) استفاده میشود. ابتدا سازمان، لیستی از وظایف را تهیه میکند. این لیست، نقشه راه رسیدن به محصول نهایی را شامل میشود. سپس این وظایف بین اعضای تیم مهندسی تقسیم خواهد شد. استفاده از CI این امکان را میدهد که هر کدام از این وظایف به صورت مستقل و موازی توسط توسعهدهندگان دنبال شوند. هرکدام از این وظایف که به انجام میرسند، توسعهدهنده، تغییرات را به سیستم CI عرضه میکند تا آن تغییرات به طور خودکار با بقیه پروژه ادغام شود.
مزایا و چالشهای CI
CI یکی از بخشهای اصلی تیمهای پربازده نرمافزاری است. با این حال، مزایای CI تنها به تیمهای نرمافزاری محدود نیست؛ بلکه تأثیر آن به طور چشمگیری در کل سازمان دیده میشود. CI شفافیت و بینش بهتری نسبت به فرآیند توسعه و تحویل نرمافزار فراهم میکند. این موضوع بقیه سازمان را قادر میسازد که استراتژیهای عرضه به بازار را بهتر طرحریزی و اجرا نمایند. در ادامه برخی از مزایای کلی CI آورده شدهاند:
مقیاسپذیری
CI این امکان را برای سازمانها فراهم میکند که حجم و اندازه تیم مهندسی، کد اصلی و زیرساخت را افزایش دهند. با کمینه کردن بروکراسی ادغام کدها و میزان ارتباطات دستی، CI به ایجاد جریانهای کاری چابک کمک میکند. CI در توسعه قابلیتهای مختلف، با حذف هرگونه وابستگی درونسازمانی، مقیاسپذیری را افزایش میدهد.
بهبود چرخه بازخورد
یکی دیگر از جنبههای مثبت CI، بازخوردهای سریعتر در تصمیمگیریهای کسبوکار است. با وجود یک پلتفرم CI بهینه، تیمهای محصول میتوانند ایدههای خود را تست کنند و بازطراحی محصول را سریعتر انجام دهند. تغییرات میتوانند خیلی سریع اضافه و تست شوند. در ضمن باگها یا دیگر مشکلات نیز میتوانند سریعتر مورد رسیدگی قرار بگیرند.
ارتباطات بهبودیافته
به طور کلی، CI، ارتباطات بین تیم مهندسی را بهبود میبخشد و موجب همکاری بهتری در توسعه و عملیاتهای دیگر در تیم میگردد.
مزایای CI به همه چالشهایی که در بهکارگیری آن وجود دارد میارزد. با این حال آگاهی از چالشهای CI مهم است. چالشهای CI زمانی نمود پیدا میکنند که بخواهیم از یک پروژه بدون CI به یک پروژه با CI مهاجرت کنیم. بیشتر پروژههای مدرن نرمافزاری در همان فازهای اولیه، بهکارگیری از CI را شروع میکنند و به این ترتیب از میزان چالشها در مراحل بعدی کاسته میشود.
جمعبندی
در حال حاضر CI به یکی از استانداردهای سازمانهای پربازده توسعه نرمافزار تبدیل شدهاست. به دلیل اهمیت و پرکاربرد بودن CI، ابزارهای زیادی در این زمینه وجود دارند که برای نمونه میتوان به Jenkins، Jira، Bamboo و… اشاره کرد. مرکز فناوری دیجیتالی دانشگاه تهران نیز گامهایی در این راستا برداشته است. به عنوان نمونه میتوان به راهاندازی سامانه تضمین کیفیت اشاره نمود. این سامانه، که نسخه بومیسازی شده ابزار Testlink میباشد، وظیفه ثبت نتایج و مراحل مختلف آزمونهای انجامشده برروی سامانههای مختلف را دارد که در فازهای بعدی یکی از اعضای کلیدی چرخه CI خواهد شد. هم اکنون پس از تحقیقات و بررسیهای دقیق، مراحل مختلف چرخه CI به طور مجزا برای سامانههای درونسپاری شده و برونسپاری شده مرکز فناوری دیجیتالی دانشگاه تهران استخراج شده است. ضمن اینکه ابزارهای مختلف این حوزه تحت مطالعه و بررسی قرار گرفتهاند و راهاندازی ابزارهای لازم در راستای تحقق CI در دستورکار این مرکز قرار دارد.
منبع: Atlassian
مترجم: محمدهادی کاظمیان
نظر شما :