DevOps چیست؟
سلام
من امیرحسینم و سعی می کنم در مجموعه نوشته هایی که قصد دارم تکمیلشون کنم در مورد DevOps و بطور خاص در مورد WinOps (که تو این حیطه کار می کنم) به زبان ساده بنویسم.
چند سالی می شه که همه کم و بیش اصطلاح DevOps به گوشمون خورده و در موردش شنیدیم. خود من تقریبن یکسال پیش بود که این اصطلاح رو شنیدم و چند ماهی می شه که در موردش می خونم. اوایل با تعریف های مختلفی در موردش مواجه شدم. یکی می گفت DevOps همون اسکرامه. یکی می گفت DevOps زیر مجموعه ITIL هست. یکی می گفت DevOps حذف تیم های Test و Deploy از تیم های بزرگ نرم افزاریه و فقط تیم های Develop و Operation باقی می مونه و خیلی خیلی تعریف های دیگه که خیلی هاش از اساس غلط بود و خیلی های دیگه شبیه همون داستان فیل و اتاق تاریک مولانا بود که هر کسی یه قسمت از فیل رو لمس کرده بود و فکر می کرد فیل فقط همونه.
امیدوارم چیز هایی که می گم اینطوری نباشه و اگر اشتباهی هم داشتم خواننده هایی باشن که تصحیحش کنن.
DevOps در لغت به معنی Develop + Operation هست. و این مفهوم رو می رسونه که تیم های Develop و Operation باید به هم نزدیک تر باشن و تیم هایی با ساز و کار جداگانه و غیر همسو نباشند. اما اگر بخواهیم دقیق تر در موردش صحبت کنیم DevOps یک مفهوم یا یک تفکره که تمام مراحل تولید نرم افزار از لحظه ای که ایده (Idea) در تیم و یا خارج از تیم نرم افزاری بوجود میاد و در جریان تولید قرار می گیره تا لحظه ای محصول به دست مشتری نهایی (EndUser) می رسه و حتی بعد تر یعنی استمرار و پایایی محصول در ارائه خدمت به مشتریان رو شامل می شه. در واقع یک تفکر موفق در تولید نرم افزاره که حاصل تجربیات فراوان آزمون و خطا ها در چرخه تولید نرم افزار و حتی قبل تر از اون در چرخه تولید غول های صنعت (به طور بخصوص چند تا از اصطلاح های DevOps اصطلاحاتی هستند که در شرکت Toyota ابداع و استفاده شدند. اصطلاحاتی مثل Andon و Lead Time) آزمایش و استفاده شدند و با دیدن نتیجه این تفکرات بر روی تولید بعد ها توسط دیگران هم مورد استفاده قرار گرفتند.
شکل زیر می تونه نمونه خوبی در توضیح DevOps و نحوه کار اون باشه. تصویر سمت چپ می تونه ناقص ترین درک ما و تصویر سمت راست درک جامع تری نسبت به این مفهوم باشه.
هدف غایی DevOps رو می تونیم سریع تر شدن چرخه تولید و ارائه محصول به مشتری نام ببریم اما واقعا این مفهوم جامع تر از این حرف هاست.. اما یکی از مواردی که با پیاده سازی تفکر DevOPs در سازمان های ما خیلی می تونه مفید باشه همکاری و تعهد بین تمام تیم های یک سازمان در جهت تولید سریع تر و صحیح تر و ارزان تر محصول و رسوندن اون به دست مشتریه. تقریبن چیزی شبه به حرکت از تصویر شماره 1به تصویر شماره 2 هست.
در انتها اگر بخوام دقیق ترین تعریفی که از DevOps شنیدم رو انتخاب کنم باید بگم من تعریف زیر رو می پسندم.
DevOps is a mindset plus a set of practices that focuses on automation, Deliver faster & more often with less work.
در واقع Automation یکی از مهم ترین مواردیه که DevOps بر اون تاکید داره. برای توضیح Automation و فواید اون بطور ساده ترجیح می دم با شکل زیر شروع کنم. شکل زیر برای توضیح System Thinking مفهومی که در سال 1992 توسط جرالد وینبرگ ابداع شد و در کتاب Quality Software Management ارائه شد استفاده شده.
در این شکل نشون داده می شه که اگر یک برنامه نویس یک Task برای انجام داده باشه 100% تمرکزش رو می تونه صرف این تسک بکنه اما اگر دو Task همزمان داشته باشه ناخودآگاه 20% تمرکزش وبازدهی ش رو از دست می ده و این روند تا جایی ادامه داره که اگر 5 Task همزمان داشته باشه 75% تمرکز و بازدهی مفیدش رو از دست می ده.
این مساله چه تاثیری روی کسب و کار اون نهاد می ذاره. می شه گفت اگر اعضای یک تیم 5 Task همزمان داشته باشند و 75% بازدهی شون رو از دست بدن در طول یک هفته شنبه، یکشنبه، دوشنبه و نیمی از سه شنبه رو ازدست دادن و فقط روز چهارشنبه تولید موفقی خواهند داشت.
MultiTasking فقط با اختصاص دادن چند Task همزمان به یک فرد بوجود نمیاد. در دنیای نرم افزار MultiTasking بصورت ناخودآگاه وارد کار می شه. فرض کنید یک برنامه نویس مشغول انجام یکی از Task هاش باشه. همزمان چند تا bug از Task های قبلیش بهش ارجاع داده می شه یا مجبوره یه مشکلی رو برای تیم QA حل کنه یا باید یه Patch جدید تولید کنه یا مشکل خاصی در سیستم های واحد Operation رو حل کنه و یا Release جدیدی رو ارائه بده. همینطوری MultiTasking وارد کارهای برنامه نویس می شوند بازدهی ش رو کاهش می دن. این اتفاق برای اعضای تیم های دیگه هم می افته . Automation اینجا کاربرد پیدا می کنه. اگر بشه موارد اینچنیین رو پیگیری Track کرد و کارهای تکراری رو به عهده ماشین ها گذاشت. بخش اعظمی ار اتلاف وقت ها از بین می ره و همینطور تمرکز افراد روی کارشون هم بیشتر می شه. باید بگم قطعن هیچوقت در دنیای واقعی کسی Single Task نمی شه اما اگر این عدد از 75 به 30 یا 40 هم برسه برای یک تیم تولید در عرصه رقابت موفقیت محسوب می شه.
با کم شدن Multitasking و بالاتر رفتن تمرکز افراد تولید محصول سریع تر و همینطور فضای کار مطبوع تر خواهد شد.
امیدوارم تونسته باشم این مفهوم رو برسونم که DevOps یک تعریف ساده و یا یک فعالیت خاص نیست.
در مطالب بعدی سعی می کنم مجموعه ای از تعاریف و تمرین های های مختلف رو توضیح بدم و خیلی خوشحال می شم نظرات خواننده ها به من در نوشتن بهترشون کمک کنه و یا بتونم با دیگران در این کار شریک بشم.
مطلبی دیگر از این انتشارات
چطور ریفکتور کنیم؟
مطلبی دیگر از این انتشارات
اموزش کالی لینوکس 2021 از مبتدی تا پیشرفته به صورت کاملا حرفه ای
مطلبی دیگر از این انتشارات
سطوح تست نرمافزار