Continuous Integration چیست ؟

تصویر Continuous Integration

به زبان ساده

ادغام مداوم (Continuous Integration) فرایندی است که در آن توسعه دهندگان می توانند به طور مستمر کارهای خود را با هم یکپارچه کنند، هر بار که توسعه دهنده ای کدی را به سورس کنترل اضافه می کند، توسط یک بیلد اتوماتیک عدم تاثیر منفی تغییرات کدها در پروژه ها (که برخی به هم وابستگی دارند) بررسی میشود. با اجرای این فرآیند که شامل کامپایل و بیلد کردن پروژه ها و اجرای تست های واحد (unit test) است، مشکلات یکپارچه سازی به شدت کم می شود و تیم ها را قادر می سازد تا به صورت منسجم تری به توسعه نرم افزار بپردازند.

تغریف دقیق تر از Continuous Integration

به فرایند ادغام یکپارچه کد ها و بیلد کردن پروژه ها و اجرای unit test ها به صورت اتوماتیک، Continuous Integration یا CI می گویند. با اجرای CI، با اعمال یک تغییر در سورس کد و اضافه شدن آن به source control، یک بیلد اتوماتیک را به راه می افتد تا بوسیله آن، آخرین نسخه کدها از مخزن کد استخراج و بیلد شود و unit test های آن اجرا شود، در واقع با این کار یک ارزیابی کلی از سلامت کدها انجام شود. این کار معمولا چندین بار در یک روز انجام می شود.

در نبود Continuous Integration چه اتفاقی می افتد ؟

اگر ادغام تغییراتی که توسعه دهندگان تیم در یک سورس مشترک اعمال کرده اند، چند روز یا چند هفته به طول بیانجامد، منجر به conflict های زیادی خواهد شد. در چنین شرایطی رفع خطا بسیار دشوار خواهد بود، واگرایی بین  کدها بسیار زیاد می شود و برای رفع خطاها نیاز به درگیر شدن چند نفر از توسعه دهندگان و در نتیجه صرف زمان و هزینه زیادی خواهد شد.

Continuous Integration چه کمکی به ما می کند ؟

با اجرای CI، توسعه دهندگان در فواصل کوتاه و با هر بار check-in (یا commit) در source control قادر خواهند بود که تغییرات خود را با سایر تغییرات ادغام کنند و یک ارزیابی سریع از آن داشته باشند. با کمک CI می توان شاخه اصلی کد را تمیز و پایدار نگه داشت. در چنین شرایطی توسعه دهندگان ترقیب می شوند تا تغییرات خود را به صورت قطعه های کوچکتر و با تکرار بیشتری در Source Control اعمال کنند.تیم ها از بیلد های اتوماتیک استفاده می کنند تا اطمینان پیدا کنند که باگ ها خیلی زود و در چرخه توسعه شناسایی می شوند که منجر می شود برای رفع آن ها هزینه ی کمتری بپردازیم. اجرای تست ها به صورت اتوماتیک در هر بار تغییر در source control منجر به کیفیت پایدار در آن خواهد شد.

تیم ها به وسیله version control های جدید مانند GIT، می توانند برای هر feature، یک شاخه ی کوتاه مدت از کد در سیستم خودشان بسازند و بعد از تایید یک pull request، تغییراتشان با شاخه اصلی کد ها ادغام شود و سپس آن شاخه را حذف کنند. این کار می تواند بارها تکرار شود. تیم ها می توانند برای branch ها سیاست گزاری کنند تا همیشه مطمئن باشند که معیارهای کیفی لازم در آن رعایت شده است.

امروزه CI به عنوان یک Best Practice در توسعه نرم افزار شناخته می شود، تا جاییکه جزئی جدا ناپذیر از روش های چابک تولید نرم افزار شده است. همچنین یکی از ملزومات دواپس (DevOps)  و Continuous Delivery نیز می باشد.

Share Button

به زبان ساده DevOps چیست ؟ | به زبان ساده دوآپس چیست ؟

دوآپس چیست ؟ DevOps چیست ؟

DevOps چیست ؟ | دوآپس چیست و چرا مطرح شد ؟

سال های متمادی در شرکت های توسعه نرم افزار، تیم هایی با هدف کاملا متفاوت به نام تیم توسعه (Development) و تیم عملیات (Operation) وجود داشتند. هدف تیم توسعه ساخت ویژگی های جدید بر روی محصول و در نتیجه تغییرات زیاد روی آن بود، اما هدف تیم عملیات، ثابت نگه داشتن وضعیت موجود سرویس ها برای پایداری بیشتر آن ها بود. بدین ترتیب دیواری بین این دو تیم وجود داشت. (DevOps چیست ؟)

DevOps - Wall Of Confusion
Wall Of Confusion

به مرور زمان تیم های توسعه به روش های چابک برای تولید نرم افزار روی آوردند که تعامل همیشگی با مشتریری، اعمال تغییرات، و اضافه کردن ویژگی های جدید بر اساس نظر مشتریان قسمتی از این روش های چابک بود.
اما دیوار بین دو تیم Dev و Ops باعث می شد تا عملیاتی کردن ویژگی های جدید توسعه داده شده و تغییرات، به اندازه کافی چابک نباشد. تمرکز روش های چابک توسعه نرم افزار، بر توسعه و تولید نرم افزار بود و کمتر به موضوعاتی مثل استقرار (Deployment) و عملیات (Operation) توجه می کرد.

به دنبال این محدودیت هامفهومی به است دوآپس (DevOps) مطرح شد و به دنبال این بود که دیوار بین تیم های Dev و Ops را از بین ببرد و با تمرکز بر افزایش تعاملات بین تیمی، موجب افزایش سرعت تحویل ارزش به مشتری شود. پس دوآپس به دنبال این است که ارزش های ایجاد شده در نرم افزار را خیلی سریعتر به دست مشتری برساند

دوآپس چیست ؟ DevOps چیست ؟

دواپس چیست و چرا آن را اجرا کنیم ؟

در مطلبی جداگانه تعریف دقیق تری از این موضوع را بیان کردم. برای مشاهده کلیک کنید “دواپس چیست و چرا آن را اجرا کنیم ؟

چرا دواپس مهم شد ؟

با پیشرفت هایی که در زمینه Cloud حاصل شد و حرکت تیم ها به سمت روش های چابک توسعه نرم افزار، این نیاز که نسخه های جدید محصول، خیلی سریع به دست مشتریان نهایی برسد، پررنگ تر شد. ارتباط ضعیف بین تیم های توسعه، تضمین کیفیت، و عملیات، باعث شد فرآیند تست، انتشار و تحویل از کارایی لازم برخورداد نباشد و زمان بر باشد. بدین ترتیب با مشاهده هر مشکل در عملیات، هر تیم آن را به تیم دیگر نسبت می داد و آن ها را محکوم می کردند.

دوآپس سعی می کند با نزدیک تر کردن این تیم ها با تمرکز بر تعامل و همکاری بیشتر و حذف دیوار بین آن ها، و همچنین به کمک یک سری ابزار که کارهای تکراری را اتوماتیک می کند، تحویل ارزش به مشتری سریعتر و مطمئن تر انجام شود.

کج فهمی ها در مورد دواپس

  • آیا دوآپس یک ابزار یا یک تکنولوژی است ؟
  • آیا دوآپس یک فرهنگ است یا یک تیم ؟ یا تنها یک سبک تفکر؟
  • آیا دوآپس فقط یک عنوان شغلی است؟
  • آیا دوآپس فقط Automation یا Continuous Delivery است؟
  • آیا دوآپس به معنی حذف Operation است ؟
  • آیا دوآپس فقط به توسعه و عملیات (Dev و Ops) محدود می شود ؟

با توجه به جدید بودن این مفهوم، کج فهمی های زیادی در این مورد وجود دارد، و البته این مخصوص ایران هم نیست. در پست های آتی حتما در این باره بیشتر صحبت خواهم کرد (پست “دوآپس و تصورات اشتباه درباره آن” را ببینید).

 

Share Button

دواپس چیست و چرا آن را اجرا کنیم ؟ | What is DevOps, Why should imp it ?

فرایند دواپس

واقعیت اینه که هیچ تعریف مشترکی از DevOps یا دواپس وجود نداره که بر سر اون توافق باشه. در جاهای مختلف تعریف های متفاوتی ارائه شده. من سعی کردم کلیت موضوع را در قالب جملات زیر ارائه کنم. احتمالا در جاهای دیگر هم تعاریفی ارائه میشه که متفاوت هستند.

دواپس چیست ؟ | What is DevOps ?

DevOps یا دِوآپس، مجموعه ای از روش ها، فرایند ها و ابزارهایی است که با تمرکز بر ارتباطات و همکاری و یکپارچگی بین تیم های توسعه، تضمین کیفیت و عملیات، ارزش های تولید شده را سریع و به صورت مستمر به مشتریان نهایی می رساند. ادغام کلمات اختصاری “Dev” و “Ops” به این موضوع اشاره دارد که توسعه و عملیات به عنوان دو تیم مستقل و کاملا جدای از هم، جای خود را به تیم های چند تخصصی با مهارتها، روش ها و ابزار یکپارچه داده است.

یک تعریف ملموس برای کسب و کار

دواپس اتحاد بین افراد، فرایندها و محصولات برای تحویل مستمر ارزش ها (Continuous Delivery of value) به مشتریان نهایی است. Donovan Brown

دواپس به زبان ساده

در پست دیگری با عنوان “دواپس به زبان ساده چیست ؟” تعریف و توصیف ساده تر و عامیانه تری ارائه شده است.

از جمله الزامات اجرای دواپس می توان به موارد زیر اشاره کرد :

چرا دواپس را اجرا کنیم ؟ | Why should implement DevOps ?

 

دواپس به تیم ها کمک می کند تا با روش امن تر ، با کیفیت تر، سریعتر و ارزانتر محصول یا سرویس را به مشتریان نهایی برسانند. همیشه حق با مشتری است و از آنجایی مشتریان انتظار انعطاف پذیری و قابلیت اطمینان بیشتری دارند، تیم ها باید بتوانند به روزرسانی های نرم افزار را سریعتر و مطمئن تر انجام دهند، تاثیر به روزرسانی ها را اندازه گیری کنند، و به نیازهای مشتری پاسخ سریعتری بدهند تا در نهایت ارزش بیشتری برای آن ها ایجاد شود. امروزه پلتفرم های ابری مانند مایکروسافت آژور گلوگاه های سنتی را حذف کرده اند و زیرساخت نوینی را ارائه داده اند. نرم افزار در بسیاری از کسب و کارها به عنوان یک مشخصه کلیدی در کسب و کار محسوب می شود. سازمان ها، توسعه دهندگان یا متخصصین IT نمی توانند جنبش دواپس را نادیده بگیرند.

چطور دواپس را اجرا کنیم ؟ | How to implement DevOps ?

 

در پست های بعدی به تشریح این موضوع خواهم پرداخت.

Share Button