مزایای دواپس چیست؟ چرا DevOps تا این اندازه اهمیت دارد؟

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

در مطالب قبلی راجع به مفهوم DevOps صحبت کردیم (اینجا و اینجا). همچنین راجع به چارچوب CALMS در دواپس نوشتیم و در جایی دیگر راجع به کج فهمی هایی که در باره DevOps وجود دارد صحبت شد. در ادامه ی این سری مطالب قصد داریم راجع به اهمیت دواپس و مزایای دواپس بنویسیم. لطفا با ما همراه باشید.

چرا دِوآپس تا این اندازه اهمیت دارد؟

1. همه ما با چالش هایی مواجه هستیم، با همکاری هم آن ها را رفع کنیم[عکس همکاری]

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

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

همکاری با یکدیگر در سایه ی ارتباط موثر به شما اجازه می دهد که راه کارهایی را ایجاد کنید که بتواند از حادثه های مشابه در آینده جلوگیری کند.

2. بهبود سرعت ارائه به بازار | Improve Speed to Market

Speed to Market

با بهبود سرعت رسیدن به بازار می توانید مزیت رقابتی در بازاری را بدست آورید که نرم افزارها در آن عمر کمی دارند و خیلی زود به زود کهنه می شوند.

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

3. یکپارچه سازی و تحویل مستمر | CI / CD

Continuous Integration and Delivery

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

تحویل مستمر رویکردی در مهندسی نرم افزار است که تیم ها را قادر می سازد نرم افزار تولید شده را به روشی سریع و مطمئن برای انتشار و تحویل آماده کنند. این فرایند از لحظه اضافه شدن یا تغییر کد در source control شروع می شود و شامل بیلد، تست، پیکربندی و انتشار می شود. (اطلاعات بیشتر: Continuous Delivery).

فرایند های CI و CD توسعه دهندگان را قادر می سازد تا مشکلات را هر چه سریعتر شناسایی و رفع کنند. شناسایی سریع مشکلات به معنی پیچیدگی کمتر و نیاز به کار کمتر برای رفع آن و فرایند دیباگ است. از ابزارهای رایجی که برای انجام عملیات CI و CD وجود دارند می توان به Jenkins، Team City و TFS یا Team Foundation Server اشاره کرد.

بنا به گزارش سالانه Puppet Labs در سال 2014، سازمان های فناوری اطلاعات با کارایی بالا که از روش های DevOps استفاده می کنند، بسیار چابک تر و قابل اطمینان تر از رقیبان خود هستند. گزارش سال 2015 همین موسسه نشان می دهد که روش های دوآپس و فرهنگ دوآپس سازمان ها را قادر می کند که بتوانند اپلیکیشن های خود را 30 برابر بیشتر منتشر کنند، همچنین زمان اعمال یک تغییر یا رفع یک مشکل 200 برابر سریعتر از سایر سازمان ها باشد. در چنین سازمانی بهره وری و تولید محصولات بهتر نرم افزاری، بارها بیشتر از سایر سازمان ها است.

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

4. محیط های عملیاتی پایدار تر | More Stable Operating Environment

Stability

به طور سنتی، نگهداری از سرورها و سخت افزارها و محیط های عملیاتی، بر عهده ی تیم IT Operation (عملیات) و افرادی که آن ها را با نام System Administrators می شناسیم بوده است.

کار کردن به عنوان یک تیم واحد با اعضای چند-عملکردی (cross-functional) شامل مدیران پایگاه داده (DBAs)، تحلیلگران کسب و کار، توسعه دهندگان، تضمین کنندگان کیفیت، و مهندسان عملیاتی و مهندسان DevOps، مزایای بسیاری را به همراه می آورد.

یک تیم به وسیله DevOps، علاوه بر عملکردها (functionality) به پایداری (stability) هم اهمیت می دهد. هر یک از اعضای تیم خود را مالک و مسوول اهداف کسب و کار می داند. تناوب و تکرار انتشارها، تغییرات کوچک، و ابزارهای پایش مانند New-Relic و Boundary به پیشرفت و بهبود محیط های عملیاتی، زیرساخت ها و پایداری سورس-کد ها کمک می کنند.

یکی از سنجه های ویژه در اهمیت به پایداری، تناوب و تکرار انتشارها است. دِوآپس، به مهندسان این امکان را می دهد که بتوانند سریعتر عیب یابی کنند و خطاها را برطرف کنند. این دسته از تمرین ها باعث کاهش شاخص MTTR  می شوند. Mean-Time-To-Recover یک متریک بسیار مهم به این معنی است که نشان می دهد سرعت برگشت به وضعیت پایدار در زمان وقوع یک حادثه چقدر است. بنابراین بعد از یک failure در زیرساخت، بسیار سریعتر می توان پایدار را به سرویس بازگرداند.

نرم افزارهای مانیتورینگ اپلیکیشن ها و سرورها مانند New Relic و Boundary با فراهم کردن دسترسی مهندسان به اطلاعات حیاتی نرم افزار و محیط عملیاتی، به شناسایی خطاها کمک می کنند تا پایداری را حفظ کنند.

ترکیب همه ی این ابزارها و به-روش ها (Best Practices) همراه با خودکارسازی (automation) به تیم های DevOps اجازه می دهند تا پایداری کلی سرویس را بهبود ببخشند و خرابی های بحرانی زیرساختی را کاهش دهند. علاوه بر این، آن ها را قادر می سازد تا در آن هنگام سریعتر و چابک تر رفتار کنند.

5. تعمیرات سریعتر و آسان تر | Faster and Easier Fixes

Faster and Easier Fixes
ماهیت سریع و چابک تیم های DevOps تیم ها را قادر می سازد تا قابلیت های جدید را در قالب گسترش‌های کوچک تر و ماژولارتر معرفی کنند. از آنجا که این استقرارها بیشتر هدفمند و ایزوله هستند، شناسایی باگ ها آسانتر است، رفع آن ها سریع تر انجام می گیرد و پیاده سازی آن ها نیز آسان است. فقط لازم است که تیم ها آخرین تغییراتی کد را مجددا بررسی کنند تا بتوانند مشکلات را رفع کنند.

این رویکرد مزایای قابل توجهی هم برای کسب و کارها دارد. امکان رفع سریع تر خطاها باعث رضایت مشتریان شده و منابع ارزشمند را آزاد می کند و می توان این منابع را بر اعمال دیگری مثل طراحی، توسعه و استقرار عملکردهای و ویژگی های جدید متمرکز کرد. استفاده ترکیبی از سیستم های کنترل نسخه(Version-Control)، یکپارچه سازی مستمر (Continuous-Integration)، ابزارهای استقرار خودکار (Deployment-Automation-Tools) و توسعه مبتنی بر تست (TDD) به تیم های DevOps این امکان را داده است که تغییرات را در بخش های کوچکتر و به صورت افزایشی (incremental) اعمال کنند.
به دلیل این پیاده سازی های ماژولارتر، تیم های DevOps می توانند زودتر مشکلات مربوط به پیکربندی، کدهای اپلیکیشن و زیرساخت را کشف کنند؛ زیرا بعد از اتمام کدنویسی، مسئولیت به تیم دیگری محول نمی شود.
به دلیل اعمال تغییرات به صورت کوچکتر و تدریجی، مشکلات، پیچیدگی کمتری داشته و تصمیم گیری برای رعفع آن ها سریع تر انجام می شود زیرا مسئولیت خطایابی و رفع مشکلات فقط متوجه یک تیم خاص می شود.
گزارش State of DevOps که هر ساله توسط Puppet Labs منتشر می شود، در سال 2015 نشان می دهد که، شرکت های IT با عملکرد و بهره وری بالاتر نسبت به رقبای خود با عملکرد ضعیف تر، بعد از fail شدن، 168 بار سریع تر قادر به جبران آن و بهبود وضهیت هستند.

6. تجزیه سیلوهای کاری | Breaking Down Silos

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

7. صرفه جویی هزینه ها و منابع | Resource & Cost Reduction

[عکس کاهش هزینه ها]
با پیاده سازی یک رویکرد DevOps می توانید هزینه ها و منابع مورد نیاز در پیاده سازی های سنتی IT را کاهش دهید. IT به صورت سنتی به عنوان یک مرکز ایجاد هزینه تلقی می شد اما پیاده سازی DevOps نشان داد که این رویکرد ارزش های کاری واقعی ایجاد می کند. وقتی از رویکردهای مدیریت ناب و ارائه مستمر استفاده می کنید، نتایج کیفی بالاتر و طول چرخه ها کوتاه تر می شود و در نهایت هزینه ها نیز کاهش می یابند. این رویکرد به کاهش منابع مورد نیاز از نظر سخت افزار و نیروی انسانی نیز ادامه می دهد. یک معماری ماژولار از اجزایی تشکیل شده که بخوبی بسته بندی شده و ارتباط کمی با هم دارند و به سازمان ها اجازه می دهد که از رایانش ابری به صورت موثر و کارآمد استفاده کنند.
رایانش ابری از طریق استفاده از فرایندهای خودکار و طراحی قوی، سرویس ها و محصولاتی را فراهم کرده که توانایی تطبیق با نیازهای مشاغل را دارند. مزایای رایانش ابری بی شمار هستند و همه این مزایا به کاهش هزینه ها کمک می کنند. هر چند DevOps و رایانش ابری نه متقابلا منحصربفرد و نه مستقیم به هم مرتبط هستند، اما در صورتیکه با هم ترکیب شوند یکدیگر را تقویت می کنند.
انعطاف پذیری ایجاد شده توسط فناوری ابری، تیم های DevOps را قادر به تامین سریع تر نیازهای مشاغل و مشتریان می کند. اگر نیاز به منابع بیشتر یا یک دیتابیس جدید و یا سرورهای تعادل بار باشد، فناوری ابری امکان تحویل خودکار این نیازها را در عرض چند دقیقه فراهم می کند.
همچنین سرویس های رایانش ابری در مواقع بازیابی از حادثه کمک کننده هستند؛ زیرا بیشتر مشکلات توسط ارائه دهنده سرویس مدیریت می شوند.
همچنین، بروزرسانی های خودکار نرم افزار و زیرساخت، که به صورت سنتی درخانه انجام می شد، به ارائه دهندگان ابری محول می شود. در نتیجه زمان و منابع مورد نیاز در قسمت‌های دیگر آزاد می شود.
مزایای دیگری که به کاهش الزامات مربوط به هزینه ها و منابع کمک می کنند، عبارتند از: حداقل شدن هزینه های شروع و هزینه های عملیاتی انجام پروژه، افزایش مشارکت، افزایش دسترس پذیری و دسترسی به داده ها و بهبود امنیت.

8. افزایش کارایی | Increased Performance

[عکس افزایش کارایی]
در محیط های سنتی IT، زمان و منابع زیادی به هدر می روند. معمولاً برای انتظار جهت تکمیل کارها توسط دیگران یا حل چندین باره‌ی یک مشکل، زمان زیادی هدر می رود و این امر باعث سرخوردگی و ایجاد هزینه های مالی می شود.

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

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

در گزارش “2015 State of DevOps Report” به چند نکته کلیدی اشاره شده که نشان می دهد تیم هایی با رویکرد Devops نسبت به رقیبانشان، از کارایی بالایی برخوردار بودند.

  • 30 برابر استقرار کدهای نرم افزاری بیشتر است
  •  200 برابر استقرار نرم افزار سریعتر است
  • پایداری سیستم بیشتر شده است
  • 60 درصد شکست های (failure) کمتری دارند
  • 168 برابر سریعتر می توانند بعد از مشکلات، بهبود یابند (MTTR)

فکر میکنم شما هم موافق باشید که این افزایش قابل ملاحظه ای در عملکرد تیم ها است!

9. خلاقیت و نوآوری | Innovation & Creativity

[عکس خلاقیت و نوآوری]

همانطور که در بالا اشاره شد، معرفی ادغام مستمر/یکپارچه سازی مستمر/CI، استاندارد سازی محیط های تولید و استقرارهای خودکار/CD، کارشناسان را قادر می سازد تا بر جنبه های مبتکرانه و خلاقانه تر نقش شان بیشتر تمرکز داشته باشند. زمان و منابع بیشتری که صرف آزمایش و نوآوری می شود، به تیم ها امکان توسعه و انتشار نرم افزارهای بهبود یافته را داده و این امر مستقیما به رسیدن به اهداف بیزنسی ترجمه می شود. محیط و فرهنگی که DevOps به ایجاد و پرورش آن کمک می کند، به درک عمیق تر و پیاده سازی به-روش ها کمک می کند.

10. رضایت شغلی | Job Satisfaction

[عکس رضایت شغلی]
به عنوان یک مهندس DevOps کاملا متعهد، می توانم با توجه به تجربیاتم به شما بگویم که کار کردن در یک محیط مشارکتی و چند مهارتی عامل بزرگی در زمینه رضایت شغلی است. من در نقشم به عنوان سرپرست توسعه دهنده‌ی اپلیکیشن های وب، تمامی جوانب چرخه عمر محصول را مدیریت می کنم از مدیریت پیکربندی و زیرساخت گرفته تا توسعه، تست، اتوماسیون و استقرار. توانایی تشخیص مشکلات سرور، همزمان با دارا بودن مجموعه مهارت های لازم برای پیاده سازی اصطلاحات، سرمایه ای ارزشمند برای ما است.

اما دلیل اهمیت رضایت شغلی چیست؟
طبق گزارش سال 2014 Sate of DevOps “رضایت شغلی عامل شماره یک پیش بینی عملکرد (کارایی) سازمانی است.” یعنی رضایت اعضای تیم در انجام نقش شان عامل بسیار مهمی در افزایش کارایی شرکتی است.
شیوه ها و فرهنگ DevOps رضایت کارمندان را افزایش می دهد و این امر منجر به نتایج شغلی بهتر می شود.

11. شکست های کمتر | Fewer Failures

[عکس شکست های کمتر]
داده های گزارش سال 2014 State of DevOps نشان داد که سازمان هایی که عملکرد خوبی دارند تعداد شکست هایشان (خرابی هایشان) 50 درصد کمتر است. این روند ادامه پیدا کرد و گزارش سال 2015 نشان داد که سازمان هایی که طرزتفکر و فرهنگ DevOps را اتخاذ کرده اند نسبت به آن هایی که رویکرد DevOps را پیاده سازی نکرده اند 60 برابر کمتر دچار شکست (خرابی) می شوند. این اطلاعات بسیار واضح هستند و مزایای عظیم DevOps را به عنوان یک طرز تفکر و فرهنگ برای مشاغل و البته افراد، مشخص کردند. شکست کمتر به معنی زمان بیشتر عملکرد سرویس و نیاز به منابع کمتر برای حل مشکلات است؛ در نتیجه به شما امکان می دهد که تمرکز بیشتری بر بهبودهای بیشتر و ابتکارات خلاقانه داشته باشید.

منبع: متن فوق برگرفته از سایت purplegriffon می باشد.

نتیجه گیری

امیدوارم که توانسته باشم مزایای یک رویکرد DevOps را مشخص کرده باشم. فرهنگ فناوری اطلاعات مدام در حال تغییر است و روش های سنتی مدیریتِ انتشار محصولات، اغلب ناکارآمد، هزینه بر و زیانبخش هستند.
شاید کلمه DevOps، واژه‌ای باشد که تازه باب شده است ولی قرار است ماندگار شود و در حال متحول کردن صنعت فناوری اطلاعات است.
افزایش کارایی، کاهش هزینه ها و تولید نرم افزار بهتری که شکست های (failure) کمتری داشته باشد مواردی هستند که تمام فروشنده های حوزه فناوری اطلاعات باید سعی به دستیابی به آن‌ها داشته باشند. با استفاده از یک رویکرد DevOps این موارد قابل دستیابی تر هستند.
برای کسب اطلاعات بیشتر درباره DevOps و اینکه سازمان شما چطور می تواند تغییری فرهنگی به سمت پیاده سازی بهترین روش های DevOps داشته باشد با ما در ارتباط باشید.

Share Button

Continuous Delivery چیست ؟

Continuous Delivery چیست

Continuous Delivery یا (CD)، رویکردی در مهندسی نرم افزار است که تیم ها را قادر می سازد نرم افزار تولید شده را به روشی سریع و مطمئن برای انتشار و تحویل آماده کنند. این فرایند از لحظه اضافه شدن یا تغییر کد در source control شروع می شود و شامل بیلد، تست، پیکربندی و انتشار در محیط های مختلف تست و محیط عملیات می شود. این مفهوم در فارسی به “تحویل مداوم” یا “تحویل مستمر” ترجمه شده است.

به عبارت دیگر: Continuous Delivery توانایی اعمال تغییرات در محیط عملیات در هر لحظه با روشی سریع و مطمئن و به طور کاملا پایدار می باشد. این تغییرات شامل همه انواع آن از جمله تغییرات پیکربندی در نرم افزار، زیرساخت و پلتفرم، افرودن ویژگی های جدید، رفع باگ و خطا ها می شود.

به وسیله محیط های تست مختلف، می توان یک Release Pipeline ایجاد کرد تا بتوان یک زیرساخت جدید را به طور اتوماتیک ایجاد کرد و نرم افزار را روی آن منتشر کرد. منظور از زیرساخت، سرور، سیستم عامل، سرویس دهنده ی وب، virtualization، شبکه و پیکربندی و تنظیمات آنها می باشد. به کمک این محیط های متوالی می توان فعالیت های طولانی Integration، تست عملکرد و تست های پذیرش نهایی را به تدریج انجام داد. فرایند Continuous Delivery در Release Pipeline با Continuous Integration شروع میشود و با انتشار و پایان تست در هر محیط، انتشار و تست در مرحله بعدی شروع می شود. مجموع این کارها به صورت حلقه های یک زنجیر در پشت سر هم قرار گرفته و فرایند Continuous Delivery را تشکیل می دهند.

ContinuousDelivery Process چیست

هدف Continuous Delivery چیست ؟

هدف CD این است که که انتشار و تحویل نرم افزار را به خصوص برای سیستم های توزیع شده در مقیاس بسیار بزرگ و محیط های عملیاتی پیچیده به یک فرایند روتین، ساده و قابل پیش بینی تبدیل کند. رسیدن به این هدف تنها در صورتی امکان پذیر است که کدهای نرم افزار همیشه در وضعیت آماده برای انتشار باشند، حتی در شرایطی که یک تیم با هزاران توسعه دهنده به طور روزانه در حال تغییر و به روزرسانی کد ها و نرم افزار هستند. به این ترتیب روش سنتی فازهای ادغام (Integration)، تست، پیکربندی و Hardening جای خود را به روش های اتوماتیک می دهد. همچنین زمان آماده شدن برای انتشار، زمان مهاجرت به محیطهای دیگر (Time to Remediate) و زمان برطرف کردن رخداد در محیط عملیات را کاهش (Time To Mitigate or time to remediate production incidents) می دهد.

تفاوت Continuous Delivery و Continuous Deployment چیست ؟

بسیاری از مواقع دو مفهوم Continuous Delivery و Continuous Deployment به اشتباه به جای هم استفاده می شوند اما تقاوت این دو چیست ؟ Continuous Deployment به این معنی است که هر تغییر در نرم افزار به طور اتوماتیک (یا بر طبق یک زمان بندی مشخص) در محیط عملیات منتشر شود. اما Continuous Delivery به این معنی است که هر تغییر در نرم افزار، آماده انتشار در هر محیطی باشد اما ممکن است تصمیم این باشد که منتشر نشود (معمولا به دلایل کسب و کاری). این محیط ها شامل محیط تست تیم توسعه، محیط تست تیم کنترل کیفیت و محیط عملیات و هر محیط دیگری می شود.

تفاوت Continuous Delivery و دواپس چیست ؟

این دو مفهوم از جهاتی به هم نزدیک هستند و اما تفاوت های بنیادی با هم دارند. دامنه ی DevOps بسیار گسترده تر از CD است و علاوه بر خودکارسازی فرایند تحویل نرم افزار، شامل تغییرات فرهنگی به خصوص ارتباط بین تیم های مختلفی که در جریان آماده سازی و تحویل محصول نرم افزاری (Software Delivery) هستند هم می شود. (از جمله تیم های توسعه، عملیات، تضمین کیفیت، مدیریت و … ) اما Continuous Delivery روشی است برای اتوماتیک سازی زنجیره تحویل محصول و بر این موضوع تمرکز دارد که فرایند های مرتبط در کنار هم طوری اجرا شود که منجر شود محصول نرم افزاری، سریعتر، امن تر و با تکرار بیشتری به دست مشتری برسد.

DevOps CD CI Agile چیست

در نبود Continuous Delivery …

در نبود CD، انتشار نرم افزار یک bottleneck برای تیم های “عملیات فناوری اطلاعات” و در نهایت برای محصول است. فرایند دستی و غیر اتوماتیک، باعث انتشارهای غیر قابل اتکا، با تاخیر و پر از خطا می شود. تیم های درگیر این موضوع معمولا به کارهای دستی که افراد انجام می دهند تکیه می کنند که باعث مشکلات جدی خواهد شد.

حداقل الزامات اجرای Continuous Delivery

برای راه اندازی و اجرای Continuous Delivery الزاماتی وجود دارد که در کمترین حالت می توان از دو مورد زیر نام برد

  • زیربنایی از تست ها که تا حد قابل قبولی خیال شما را از اینکه نرم افزار به درستی کار می کند، راحت کند و به شما اعتماد به نفس لازم را برای شروع استقرار بدهد
  • ابزارهای خودکارسازی (automation) و اسکریپت های لازم که به شما اطمینان دهد استقرار با موفقیت انجام خواهد شد و در صورت نیاز امکان Rollback وجود خواهد داشت

سخن آخر

در آخر باید این این نکته را اضافه کنم که فرایند Continuous Delivery و Infrastructure as Code و Monitoring به طور قابل ملاحظه ای مکمل یکدیگر هستند. Continuous Delivery برای کنترل تاثیر تغییرات در محیط عملیاتی از استراتژی های استقرار از جمله Blue-Green Deployment و همچنین تکنیک Feature Flags (یا Feature Toggles) نیز پشتیبانی می کند. (در آینده راجع به استراتژی های انتشار مطلبی خواهم نوشت)
امروزه ارزش هایی که CD برای سازمان ها ایجاد می کند، آن را به یک نیاز ضروری تبدیل کرده است. برای رساندن ارزش به مشتریان نهایی، باید محصول را به طور پیوسته و بدون خطا منتشر کرد. Release Pipeline های پیشرفته به توسعه دهندگان اجازه می دهد که feature های جدید را سریع و مطمئن منتشر کنند. با کمک CD، رفع خطاها در محیط عملیات و اضافه کردن ویژگی های جدید بسیار سریع تر و با اطمینان بالا انجام خواهد شد و به دست مشتری خواهد رسید.

Share Button