راهنمای ادغام و تحویل مستمر در فرآیند توسعه نرم افزار
CI/CD چیست و چه نقشی در فرآیند توسعه نرم افزار دارد؟
ادغام مستمر(CI) و تحویل مستمر(CD) دو فرآیند علمی‌ و روش شناخته شده در طراحی و توسعه نرم‌افزار هستند که توسعه‌دهندگان برای اتمام سریع و با کیفیت پروژه‌های نرم‌افزاری از آن استفاده می‌کنند. CI/CD به گروه‌های توسعه نرم‌افزار امکان می‌دهد تا تغییرات اعمال شده در کدها را سریع‌تر و با اطمینان بیشتر پیگیری کنند تا نیازهای مشتريان در کوتاه‌ترین زمان ممکن به سرانجام برسد.

1606683296_1_0.gif

ادغام مستمر یک فلسفه کدنویسی و مجموعه‌ای از شیوه‌های عملی طراحی شده برای هدایت گروه‌های توسعه است که به آن‌ها اجازه می‌دهد به‌طور مداوم تغییرات کوچک اعمال شده در کدهای خود را به مخازن کنترل نسخه (version control) ارسال و صحت آن را بررسی کنند. با توجه به این‌که امروزه گروه‌های توسعه برای تولید اکثر اپلیکیشن‌ها به پلتفرم‌ها و ابزارهای مختلفی نیاز دارند، این گروه‌ها باید بتوانند تغییرات اعمال شده را یکپارچه‌سازی و اعتبارسنجی کنند.
هدف از ادغام مستمر ایجاد روشی سازگار و خودکار برای ساخت، بسته‌بندی و آزمايش نرم‌افزارهای کاربردی است. ثبات در فرآیند ادغام به گروه‌های توسعه اجازه می‌دهد بهتر از گذشته کدها را ویرایش و تغییرات را اعمال کنند. رویکردی که تعامل بیشتر اعضای گروه را به همراه داشته و باعث خلق نرم‌افزارهای با کیفیت‌تری می‌شود. 

در ادغام مستمر هر تغییری در کد، یک زنجيره ساخت و آزمايش را برای پروژه‌ای که تغییرات در آن اعمال شده ایجاد می‌کند و بازخورد این تغییر کد را به برنامه‌نویسانی که این تغییرات را اعمال کرده‌اند اعلام می‌کند. مهم‌ترین مزیت ادغام و تحویل مستمر (از آزمايش و استقرار تا خروجی از برنامه) انجام تمامی فرآیندها در مدت زمان کوتاه است. 
تحویل مستمر که از ادغام مستمر دنباله‌روی می‌کند، تحویل اپلیکیشن‌ها به محیط‌های زیربنایی منتخب را خودکار می‌کند. امروزه اغلب گروه‌های توسعه علاوه بر تولید در گروه‌های دیگری همچون تیم‌های آزمایش (تیم‌هایی که مسئولیت آزمایش نرم‌افزارها و شناسایی باگ‌ها را عهده‌دار هستند.) کار می‌کنند. تحویل مستمر این اطمینان خاطر را می‌دهد که یک روش خودکارسازی وجود خواهد داشت که در قالب اعلانی، تغییرات اعمال شده در کدها را به این محیط‌های گوناگون ارسال می‌کند.
ادغام و تحویل مستمر به یک آزمايش مستمر هم نیاز دارد، زیرا هدف این است که کدها و اپلیکیشن‌ها با بالاترین کیفیت و امنیت به کاربر نهایی تحویل داده شود. آزمايش مستمر اغلب به شکل مجموعه‌ای از آزمون‌های پس نمایی (Regression Test) 
و عملکرد انجام می‌شود تا مشخص شود تغییرات به‌درستی انجام شده‌اند و تاثیرات ناخواسته‌ای روی بخش‌های بدون تغییر به وجود نیامده باشد. CI و CD در کنار هم مجموعه‌ای از اصول عملیاتی و شیوه‌های کار عملی را پدید می‌آورند که فرآیند توسعه نرم‌افزار را تسریع می‌کند. پیاده‌سازی CI/CD به عنوان یکی از بهترین راهکارهای عملی برای گروه‌های دوآپس (devops) شناخته می‌شود.

متخصصان این صنعت می‌گویند روز به روز به تعداد سازمان‌هایی که CI/CD را به کار می‌گیرند افزوده می‌شود، زیرا آن‌ها به دنبال روش‌هایی برای پیشرفت طراحی، توسعه و تحویل محصولات نرم‌افزاری خود برای مصارف داخلی یا مشتريان هستند.
شان کنفیک، نایب رئیس و تحلیل‌گر شرکت تحقيقاتی گارتنر می‌گوید: «به وضوح شاهد رشد و گسترش استفاده از CI/CD هستیم. همه روزه سوالات زیادی در مورد توسعه، آزمايش و انتشار مستمر دریافت می‌کنم.»
نظرسنجی Agile in the Enterprise اخیر گارتنر نشان می‌دهد گروه‌های بیشتری در حال استفاده از این روش توسعه هستند. کنفیک می‌گوید: «فکر می‌کنم CI یک شروع به کار ایده‌ال برای ایجاد شریان (Pipeline) خودکار است. جنبه‌های دشوارتر CD را می‌توان نیاز به آزمايشات خودکار و معماری مجدد اپلیکیشن‌ها دانست، به این شكل بخش‌های کوچک از یک کد را می‌توان به صورت جداگانه آزمايش و منتشر کرد.» در نبود یک شریان خودکار، در واقع توسعه‌دهندگان باید به صورت دستی (و با ضریب خطای بیشتری) مراحل انجام کار را طی کنند که این امر باعث افزایش زمان و کاهش راندمان کار می‌شود. 
جاش کوینت، مدیر ارشد راهکارهای ابری ServerCentral Turing Group می‌گوید: «تقريبا تمام پروژه‌های نرم‌افزاری جدید که توسط این شرکت انجام می‌شود به نوعی از CI/CD استفاده می‌کنند.»
حسن یارسر، مدیر فنی دپارتمان مهندسی نرم‌افزار دانشگاه کارنگی ملون می‌گوید: «شاهکارهای فنی مثل ادغام مستمر، آزمايش خودکار جامع و تحویل مستمر که زمانی بسیار تجملاتی و زیاده‌روی محسوب می‌شدند، حالا توسط اغلب استارت‌آپ‌های نوپا و حتا سازمان‌های قدیمی‌ و سنتی نیز استفاده می‌شود.»

شیوه‌های رایج پیاده‌سازی و نگه‌داری از استراتژی CI/CD

برای آن‌که ادغام و تحویل مستمر به شکل اصولی در پروژه‌های نرم‌افزار استفاده شوند، لازم است از تجارب شرکت‌های مختلف که توانستند این استراتژِی کارآمد را به کار گیرند استفاده کرد. از مهم‌ترین شیوه‌های توصیه شده برای پیاده‌سازی و نگه‌داری از استراتژی CI/CD به موارد زیر می‌توان اشاره کرد.

از همان ابتدا دست اندرکاران اصلی را با CI/CD درگیر کنید

یاسر می‌گوید: «ایده خوبی است که از همان اوایل شروع یک پروژه تمام عوامل اصلی توسعه تا حد امکان با این شیوه از توسعه نرم‌افزاری درگیر شوند. مزیت بزرگ این کار، مشارکت تمام دست‌اندرکاران در تصمیم گیری‌های توسعه در هر مرحله از پروژه است. به‌طور مثال، کارکنان واحد عملیاتی دپارتمان فناوری‌اطلاعات می‌توانند در تصمیمات مرتبط با معماری نظر خود را اعلام کنند به این شكل توسعه‌دهندگان می‌توانند کار توسعه را در زیرساختی انجام دهند که توسط بخش فناوری‌اطلاعات تایید شده است. این کار باید بر اساس تصمیماتی که توسط تمام دست‌اندرکاران در بخش‌های مختلف اتخاذ شده انجام شود. به این شكل تمام تصمیم‌گیری‌های مهم به تایید همه متخصصان حاضر در پروژه خواهد رسید. این شیوه به میزان قابل ملاحظه‌ای خطاهای فنی که غالبا در چرخه تولید پروژه رخ می‌دهد را کاهش خواهد داد.»

سیستم CI/CD صحیح را انتخاب و پیاده‌سازی کنید 

جاش کوموروسکه، مهندس ارشد دوآپس شرکت فراهم‌کننده فناوری امنیتی StackRox می‌گوید: «استفاده از سیستم‌های CI/CD موجود در بازار نشان می‌دهد که محصولات تولیدی یک سازمان تا چه حد صحیح و مطابق با اصول مهندسی تولید شده‌اند. اگر ساخت، آزمايش و استقرار قابلیت‌های جديد مطابق با اصول و ضوابط انجام شود، توانایی یک سازمان در پاسخ‌گویی به تغییرات به‌طرز چشم‌گيری بهبود می‌یابد. اگر برای پاسخ‌گویی به خواسته‌های مشتريان خود هفته‌ها یا حتا ماه‌ها زمان صرف کنید، کسب‌وکارهای دیگری پیدا می‌شوند که این‌کار را بهتر و سریع‌تر انجام می‌دهند.»
شرکت‌ها زمانی‌که تصمیم می‌گیرند برای ساخت یک پروژه نرم‌افزاری از فرآیند CI/CD استفاده کنند، ابتدا باید پژوهش دقیقی در این زمینه انجام دهند. کوموروسکه می‌گوید: «هر کسی که مسئولیت مدیریت فنی و سلامت یک محصول را برعهده دارد باید مدتی از وقت خود را صرف تحقيق در مورد اکوسیستم و راهکارهای موجود در این زمینه کند. همچنین توسعه‌دهندگان محصول باید نظرات خود را اعلام کنند، زیرا آن‌ها قرار است به‌طور روزانه از سیستم CI/CD استفاده کنند.»
بعد از این که یک سازمان سیستم مطلوب را انتخاب کرد باید مراقب مشکلات احتمالی استفاده از آن باشند. کوموروسکه در ادامه می‌گوید: «بسیاری از این راهکارها با نسخه آزمایشی رایگان ارائه می‌شوند و می‌توان آن‌ها را با پلتفرم‌هایی مثل گیت‌هاب ادغام کرد. این یکپارچه‌سازی را انجام دهید و شروع به ساخت یک پروژه کرده، ساخت، آزمايش و استقرار پروژه خود را خودکارسازی کنید. وقتی مردم ارزش استفاده از این سیستم‌ها در چرخه کاری خود را مشاهده می‌کنند، طبیعتا تمایل بیشتری به استفاده از آن پیدا خواهند کرد.»

آزمايشات خودکار را با تاییدیه‌های دستی ترکیب کنید 

تحویل مستمر از چهار مولفه اصلی تشکیل شده است:

  •  معماری مجدد برای جداسازی 
  •  خودکارسازی آزمايش 
  •  ساخت یک شریان فرآیند خودکار 
  •  خودکارسازی تهیه و پیکربندی محیط‌ها

کنفیک می‌گوید: «این چهار مولفه کلی هستند و  تعداد زیادی از شیوه‌های مستقل نیز وجود دارد که ممکن است برای تحقق بخشیدن به آن‌ها نیاز باشد.» به‌طور مثال، برای خودکارسازی آزمايش، گروه‌ها روی روش کار «ابتدا-آزمایش» تمرکز می‌کنند. هیچ نوع آزمایشی وجود ندارد که از سایر آزمایش‌ها مهم‌تر باشد و باید با ترکیبی از سایر روش‌های تعیین کیفیت مثل ابزارهای تحلیل ایستا ترکیب شود. اطمینان حاصل کنید در فرآیند استقرار حتما مراحلی از تاییدیه‌های دستی موجود باشد. این مراحل از تاییدیه‌های دستی از ورود کدهای آزمايش یا تایید نشده به سطوح بالاتر طراحی جلوگیری می‌کند.

برای اطمینان از موفقیت کار با CI / CD معیارها را ردیابی کنید

برعکس بیشتر فناوری‌ها و فرآیندهای استقرار که روی اصل "یک بار تنظیم کن همیشه استفاده کن” رفتار می‌کنند، استراتژی CI/CD از این قاعده پیروی نمی‌کند. کوموروسکه می‌گوید: «برای چرخه‌های ساخت، آزمایش و استقرار باید به معیارهایی همچون زمان و اعتبار کار دقت کنید. زمینه‌ها و فرصت‌های بهینه‌سازی و بهبود را شناسایی کنید. انجام سریع کار اهمیت دارد، اما اعتبار و صحت آن از سرعت ارجح‌تر است.» سازمان‌ها می‌توانند با استفاده از CI/CD پیشرفت‌های قابل ملاحظه‌ای در توسعه و مهندسی کسب کنند. آن‌ها (سازمان‌ها) باید این پیشرفت‌ها را اندازه‌گیری کرده و با گذشت زمان بهبود عملکرد را ارزیابی کنند. دوآپس  بر اساس نظریه یادگیری و پیشرفت مستمر ساخته شده، موضوعی که اوایل به‌کارگیری CI/CD توسط اکثر سازمان‌ها نادیده گرفته می‌شد، اما اکنون به عنوان یک اصل راهبردی شناخته می‌شود.

 خودکارسازی را هر کجایی که امکان دارد انجام دهید 

به عنوان بخشی از CI/CD، سازمانه‌ها باید هر چیزی که امکان خودکارسازی دارد را خودکار انجام دهند و هر چیزی که نمی‌تواند خودکار انجام شود را به‌طور واضح و مشخص تفکیک کنند. یاسر می‌گوید: «خودکارسازی یکی از ارکان اصلی دوآپس است و به همین دلیل است که در پیاده‌سازی دوآپس از مزایای CI/CD استفاده می‌شود.»
متخصصان حوزه دوآپس استفاده از شیوه زیرساخت به عنوان کد (IaC) را توصیه می‌کنند که در آن مدیریت مؤلفه‌های زیرساختی مانند شبکه‌ها، ماشین‌های مجازی و توازن بار با استفاده از همان روش‌های نسخه‌سازی دوآپس برای استفاده از کد منبع (و با خودکارسازی محیط‌های گوناگون) انجام می‌شود.
یاسر می‌گوید: «سازمان‌ها برای به‌کارگیری IaC می‌توانند فرآیندها و شیوه‌های مرتبط با مدیریت پیکربندی‌ها را به کار گیرند. هدف این است که تمام فرآیند خودکارسازی شده به عنوان کدی در نظر گرفته شود که در یک سیستم کنترل نسخه امن ذخیره شده است.»
در حالت ایده‌ال، این کد زیرساخت در همان مخزنی ذخیره می‌شود که کد برنامه کاربردی در آن قرار دارد. در چنین شرایطی گروه عملیاتی و سایر دست‌اندرکاران پروژه هر زمان که نیاز باشد به راحتی می‌توانند به کدها دسترسی پیدا کنند.
 

ماهنامه شبکه را از کجا تهیه کنیم؟
ماهنامه شبکه را می‌توانید از کتابخانه‌های عمومی سراسر کشور و نیز از دکه‌های روزنامه‌فروشی تهیه نمائید.

ثبت اشتراک نسخه کاغذی ماهنامه شبکه     
ثبت اشتراک نسخه آنلاین

 

کتاب الکترونیک +Network راهنمای شبکه‌ها

  • برای دانلود تنها کتاب کامل ترجمه فارسی +Network  اینجا  کلیک کنید.

کتاب الکترونیک دوره مقدماتی آموزش پایتون

  • اگر قصد یادگیری برنامه‌نویسی را دارید ولی هیچ پیش‌زمینه‌ای ندارید اینجا کلیک کنید.

ایسوس

نظر شما چیست؟