DevOps چیست؟
مقدمه اصول DevOps
کلمه DevOps ترکیبی از اصطلاحات توسعه و عملیات است که به معنای نشان دادن یک رویکرد مشترک به وظایف انجام شده توسط تیم های عملیاتی توسعه برنامه و فناوری اطلاعات یک شرکت است.
DevOps در گستردهترین معنای خود، فلسفهای است که ارتباط و همکاری بهتر بین این تیمها و سایرین را در یک سازمان ترویج میکند. DevOps در محدودترین تفسیر خود، پذیرش توسعه نرم افزار تکرار شونده، اتوماسیون، و استقرار و نگهداری زیرساخت قابل برنامه ریزی را توصیف می کند. این اصطلاح همچنین تغییرات فرهنگ را در بر می گیرد، مانند ایجاد اعتماد و انسجام بین توسعه دهندگان و مدیران سیستم ها و همراستایی پروژه های فناوری با نیازهای تجاری. DevOps می تواند زنجیره تحویل نرم افزار، خدمات، نقش های شغلی، ابزارهای فناوری اطلاعات و بهترین شیوه ها را تغییر دهد.
DevOps چیزی فراتر از همکاری تیم های توسعه و عملیات است. چیزی فراتر از ابزار و تمرین است. DevOps یک طرز فکر، یک تغییر فرهنگی است که در آن تیم ها روش های جدیدی را برای کار اتخاذ می کنند.
شکل 1: دواپس در یک نگاه
DevOps چه مشکلاتی را حل می کند؟
هر شرکتی با چالشهای خاص خود مواجه است، اما مشکلات رایج شامل نسخههایی است که بیش از حد طول میکشد، نرمافزاری که انتظارات را برآورده نمیکند و فناوری اطلاعاتی که رشد کسبوکار را محدود میکند.
بدون زمان انتظار، فرآیندهای دستی و بررسی های طولانی، یک پروژه DevOps سریعتر از نیازمندی ها به نرم افزار زنده منتقل می شود. زمانهای چرخه کوتاهتر میتواند از تغییر نیازها جلوگیری کند تا محصول آنچه را که مشتریان میخواهند ارائه دهد.
DevOps مشکلات ارتباطی و اولویت را بین تخصص های فناوری اطلاعات حل می کند. برای ساختن نرمافزار قابل اجرا، تیمهای توسعه باید محیط تولید را درک کنند و کد خود را در شرایط واقعی آزمایش کنند. یک ساختار سنتی تیم های توسعه و عملیات را در سیلوها قرار می دهد. این بدان معناست که توسعهدهندگان از زمانی که کدشان عملکردی را ارائه میکند، راضی میشوند – و اگر نسخه در تولید شکسته شود، این به تیم عملیاتی است که مشکلات را برطرف کند.
با فرهنگ DevOps، توسعهدهندگان زمانی که مشکلی پیش میآید به پاسخ «روی دستگاه من کار کرد» متوسل نمیشوند. تغییرات تولید شده اندک و قابل برگشت هستند. بعلاوه، کل تیم تغییرات را درک می کند، که مدیریت حادثه را بسیار ساده می کند.
با یک فرآیند سریعتر از ایده تا نرم افزار زنده، شرکت ها می توانند از فرصت های بازار سرمایه گذاری کنند. به این ترتیب، DevOps یک مزیت رقابتی برای مشاغل فراهم می کند .
فرهنگ DevOps به این معنی است که توسعه دهندگان با درک بهتر نیازها و نیازهای کاربر به کاربر نزدیک می شوند. تیم های عملیاتی در فرآیند توسعه شرکت می کنند و نیازهای تعمیر و نگهداری و نیازهای مشتری را اضافه می کنند. این به معنای پایبندی به اصول کلیدی زیر است که به تیم های DevOps کمک می کند تا برنامه ها و خدمات را با سرعت و کیفیت بالاتر نسبت به سازمان هایی که از مدل توسعه نرم افزار سنتی استفاده می کنند ارائه دهند.
شاید بد نباشه مقاله مدیریت چابک چیست را مطالعه کنید
همکاری
فرض اصلی پشت DevOps همکاری است. تیمهای توسعه و عملیات در یک تیم کاربردی که ارتباط برقرار میکنند، بازخورد را به اشتراک میگذارند و در کل چرخه توسعه و استقرار همکاری میکنند، ادغام میشوند. اغلب، این بدان معنی است که تیم های توسعه و عملیات در یک تیم واحد ادغام می شوند که در کل چرخه عمر برنامه کار می کنند.
اعضای یک تیم DevOps مسئول تضمین کیفیت قابل تحویل در هر جنبه از محصول هستند. این منجر به توسعه بیشتر میشود، جایی که تیمها مسئولیتهای کامل یک ویژگی یا محصول را در اختیار دارند. تیم ها در طول چرخه عمر کامل از ایده تا تحویل صاحب یک ویژگی یا پروژه خواهند بود. این سطح افزایش یافته سرمایه گذاری و دلبستگی تیم منجر به خروجی با کیفیت بالاتر می شود.
شکل 2: همکاری در اصول DevOps
اتوماسیون
یک عمل ضروری DevOps این است که تا حد امکان چرخه عمر توسعه نرم افزار را خودکار کند. این به توسعه دهندگان زمان بیشتری برای نوشتن کد و توسعه ویژگی های جدید می دهد. اتوماسیون یک عنصر کلیدی خط CI/CD است و به کاهش خطاهای انسانی و افزایش بهره وری تیم کمک می کند. با فرآیندهای خودکار، تیمها با زمانهای تکرار کوتاه به بهبود مستمر دست مییابند که به آنها اجازه میدهد به سرعت به بازخورد مشتری پاسخ دهند.
شکل 3: اتوماسیون در اصول DevOps
پیشرفت مداوم در DevOps
بهبود مستمر به عنوان اصلی ترین روش های چابک و همچنین تولید ناب و بهبود کاتا ایجاد شد. این تمرین تمرکز بر آزمایش، به حداقل رساندن ضایعات، و بهینه سازی برای سرعت، هزینه و سهولت تحویل است. بهبود مستمر با تحویل مداوم نیز مرتبط است و به تیمهای DevOps اجازه میدهد بهروزرسانیهایی را که کارایی سیستمهای نرمافزاری را بهبود میبخشد، بهطور مداوم انجام دهند. خط لوله ثابت نسخه های جدید به این معنی است که تیم ها به طور مداوم تغییرات کد را اعمال می کنند که ضایعات را حذف می کند، کارایی توسعه را بهبود می بخشد و ارزش بیشتری برای مشتری به ارمغان می آورد.
اقدامات مشتری محور
تیمهای DevOps از حلقههای بازخورد کوتاه با مشتریان و کاربران نهایی برای توسعه محصولات و خدمات مبتنی بر نیازهای کاربر استفاده میکنند. روشهای DevOps جمعآوری سریع و پاسخ به بازخورد کاربر را از طریق استفاده از نظارت مستقیم و استقرار سریع امکانپذیر میسازد. تیمها فوراً به نحوه تعامل کاربران زنده با یک سیستم نرمافزاری و استفاده از این بینش برای توسعه پیشرفتهای بیشتر دسترسی پیدا میکنند.
شکل 3: مشتری در DevOps
با در نظر گرفتن پایان ایجاد کنید
این اصل شامل درک نیازهای مشتریان و ایجاد محصولات یا خدماتی است که مشکلات واقعی را حل می کند. تیم ها نباید «یک حباب بسازند» یا نرم افزاری را بر اساس فرضیاتی درباره نحوه استفاده مصرف کنندگان از نرم افزار ایجاد کنند. در عوض، تیمهای DevOps باید درک جامعی از محصول، از ایجاد تا اجرا داشته باشند.
روش ها و راهبرد ها
DevOps با توسعه نرم افزار Agile مرتبط است زیرا متخصصان Agile DevOps را به عنوان راهی برای گسترش متدولوژی به تولید تبلیغ کردند. این رویکرد حتی به عنوان ضدفرهنگ برای شیوههای مدیریت خدمات فناوری اطلاعات مورد حمایت در ITIL شناخته شده است. DevOps چارچوب رسمی ندارد.
برای تقویت استراتژیهای خود، سازمانها باید زمینههای مرتبط DevOps، Agile و Waterfall ، مهندسی قابلیت اطمینان سایت (SRE) و SysOps و حتی تغییرات درون DevOps را درک کنند.
توسعه DevOps در مقابل آبشار. توسعه آبشار شامل مجموعه ای از مراحل و دروازه ها در یک پیشرفت خطی به سمت تولید است. مراحل آن نیازمندی ها، تجزیه و تحلیل، طراحی، کدگذاری و پیاده سازی، آزمایش، بهره برداری و استقرار و نگهداری است. در تیم های Waterfall، توسعه کد جدید را در یک محیط ایزوله برای تضمین کیفیت (QA) آزمایش می کند و – در صورت برآورده شدن الزامات – کد را برای عملیات برای استفاده در تولید آزاد می کند. عملیات فناوری اطلاعات چندین نسخه را به طور همزمان با کنترلهای گسترده اجرا میکند. پشتیبانی مسئولیت عملیات است. رویکردهای Waterfall باعث ایجاد انتظارهای طولانی بین انتشار نرم افزار می شود. از آنجایی که تیم های توسعه و عملیات به طور جداگانه کار می کنند، توسعه دهندگان همیشه از موانع عملیاتی که مانع از کارکرد کد طبق پیش بینی می شود، آگاه نیستند.
مدل DevOps تلاشهای عملیاتی توسعه، QA و IT را با گیتهای کمتر و گردش کار مداومتر هماهنگ میکند. به عنوان مثال، برخی از مسئولیت های تیم عملیات در خط لوله تحویل برنامه به سمت چپ به تیم توسعه منتقل می شود. عملیات فناوری اطلاعات برای بهبود کد بازخورد ارائه می کند. DevOps به جای مراحل دروازهدار، بر توسعه مستمر، ادغام مداوم، تحویل مستمر و فرآیندهای نظارت مستمر متکی است.
توسعه DevOps در مقابل Agile. Agile یک رویکرد توسعه نرم افزار است که در Manifesto Agile تعریف شده است. تیمهای چابک بر چرخههای افزایشی و سریع ایجاد و تحویل کد تمرکز میکنند که به آن اسپرینت میگویند . هر دوی سرعت بر روی آخرین سرعت تکرار می شود، که نرم افزار را بسیار انعطاف پذیر و سازگار با نیازهای متغیر می کند. این امکان وجود دارد که چشم انداز اصلی یک پروژه در این چرخه از بین برود.
DevOps از موفقیت Agile در بهبود سرعت توسعه ناشی شد، و متوجه شد که قطع ارتباط بین تیم های توسعه و عملیات – و همچنین بین IT و بخش تجاری سازمان – به طور قابل توجهی مانع از تحویل نرم افزار Agile به کاربران شده است.
در یک گردش کار فقط چابک، تیم های توسعه و عملیات دارای اهداف و رهبری جداگانه هستند. وقتی یک سازمان از DevOps و Agile با هم استفاده می کند، تیم توسعه و عملیات هر دو کد را در طول چرخه عمر توسعه نرم افزار مدیریت می کنند. در حالی که کار Agile اغلب با چارچوبی مانند Scrum رسمی می شود، DevOps چارچوبی ندارد.
از اینجا می تونید ویدیو دوره مدیریت چابک را خریداری کنید
DevOps در مقابل SRE. مهندسی قابلیت اطمینان سایت همزمان با Agile و DevOps ایجاد شد. در اوایل دهه 2000 در گوگل آغاز شد و اساساً رویکردی مبتنی بر برنامه نویسی و اتوماسیون در چرخه عمر توسعه نرم افزار است. مشکلات باید به گونه ای حل شوند که از بروز مجدد آنها جلوگیری شود. وظایف چرخشی باید به حداقل برسد.
جعبه ابزار SRE دقیقاً با DevOps مطابقت دارد. هدف هر دو رشته بهبود مستمر است. مهندسان SRE و DevOps به دنبال حذف سیلوهای بین توسعه و عملیات هستند. در حالی که DevOps می تواند به سهامداران تجاری نیز گسترش یابد، SRE معمولاً در محدوده فرآیندهای IT باقی می ماند.
DevOps در مقابل SysOps. SysOps معمولاً نشان میدهد که یک مدیر فناوری اطلاعات یا تیم فناوری اطلاعات، استقرار تولید و پشتیبانی را برای یک برنامه کاربردی توزیعشده بزرگ، مانند یک محصول SaaS، مدیریت میکند. همانند پذیرندگان DevOps، تیمهای SysOps باید در رایانش ابری و اتوماسیون و همچنین سایر فناوریهایی که برنامهها را قادر میسازد در مقیاس بزرگ عملکرد خوبی داشته باشند، آشنا باشند. تیمهای SysOps قطعیها و حوادث فناوری اطلاعات را عیبیابی میکنند، مشکلات عملکرد را نظارت میکنند، قوانین امنیتی را اجرا میکنند و عملیات را بهینه میکنند.
آنها همچنین مانند سایر ادمین های IT بر دسترسی بالا، تحمل خطا، امنیت و عملکرد تمرکز دارند. در حالی که متخصصان SysOps احتمالا از برخی ابزارهای توسعه استفاده می کنند و فرآیندهای توسعه را درک می کنند، کار آنها به اندازه یک کار DevOps با توسعه در هم آمیخته نیست. با این حال، نقشهای SysOps میتوانند در سازمانهای DevOps و SRE وجود داشته باشند.
DevSecOps در مقابل BizDevOps در مقابل GitOps. برخی از سازمانها دامنه DevOps را به نقشها یا بخشهای دیگر گسترش میدهند. در DevSecOps، برنامه ریزی امنیتی، اسکن، آزمایش و بررسی به طور مداوم در سراسر حلقه DevOps انجام می شود. BizDevOps بر اتصال مدیران، صاحبان برنامهها و سایر ذینفعان کسبوکار به تیم فنی تمرکز دارد که نرمافزار را توسعه، آزمایش و پشتیبانی میکند. در حالی که احتمالاً همکاری بیشتر بهتر از کمتر است، این همکاران باید ورودی مؤثر، به موقع و دقیق را به اشتراک بگذارند.
یکی دیگر از تغییرات DevOps، یا جناح متفاوتی از همان جنبش، GitOps است . GitOps به دلیل تمرکز بر مخزن همنام و فناوری کنترل نسخه، از کنترل منبع اعلامی بر برنامه و کد زیرساخت حمایت می کند. همه چیز در مورد نرم افزار – از ویژگی های مورد نیاز تا محیط استقرار – از یک منبع حقیقت می آید.
شکل 4: مسئولیت توسعه دهنده در DevOps
ابزار DevOps
DevOps یک طرز فکر است، نه یک مجموعه ابزار. اما انجام هر کاری در یک تیم فناوری اطلاعات بدون ابزار مناسب دشوار است. به طور کلی، متخصصان DevOps به خط CI/CD، کانتینرها و میزبانی ابری متکی هستند. ابزارها می توانند منبع باز، توزیع های اختصاصی یا پشتیبانی شده از فناوری منبع باز باشند.
شکل 5: زنجیره ابزار DevOps
مهارت های DevOps
اغلب گفته می شود که DevOps بیشتر یک فلسفه یا فرهنگ IT مشارکتی است تا یک شرح شغل یا مجموعه مهارت کاملاً تعریف شده . از آنجایی که این منطقه بسیار گسترده است، موقعیت های DevOps بهتر از متخصصان برای عموم متخصصان فناوری اطلاعات مناسب است.
نقش مهندس DevOps در یک مسیر شغلی قرار نمی گیرد. افراد حرفه ای می توانند از زمینه های مختلف وارد این موقعیت شوند. برای مثال، یک توسعهدهنده نرمافزار میتواند در عملیاتهایی مانند پیکربندی زیرساخت میزبانی مهارت کسب کند تا یک مهندس DevOps شود. به طور مشابه، یک مدیر سیستم با دانش کدنویسی، اسکریپت نویسی و تست می تواند یک مهندس DevOps شود.
بسیاری از فهرستهای شغلی DevOps به دانش کانتینر، ابر و CI/CD و همچنین مهارتهای نرم نیاز دارند. یک مهندس DevOps همچنین ممکن است نیاز به تغییر فرآیندها و حل مشکلات سازمانی برای دستیابی به نتایج تجاری داشته باشد.
عناوین دیگری که اغلب در سازمان های DevOps یافت می شوند عبارتند از:
- توسعه دهنده زیرساخت
- مهندس قابلیت اطمینان سایت
- مهندس ساخت و رهاسازی
- توسعه دهنده تمام پشته
- متخصص اتوماسیون
- مهندس پلت فرم CI/CD
اکثر مشاغل سطح ابتدایی DevOps نیاز به مدرک در علوم کامپیوتر یا یک رشته مرتبط دارند که شامل کدنویسی، تست QA و اجزای زیرساخت فناوری اطلاعات است. موقعیت های سطح بالاتر ممکن است به مدارک پیشرفته در معماری سیستم ها و طراحی نرم افزار نیاز داشته باشند. افرادی که در این مسیر شغلی هستند همچنین باید دانش خود را از طریق کتاب های DevOps گسترش دهند و از طریق وبلاگ ها و کنفرانس ها با سایر اعضای جامعه ارتباط برقرار کنند.
شاید بد نباشه مقاله اهمیت پیاده سازی تحلیل کسب و کار در شرکت های نفتی را مطالعه کنید
مزایا و چالش های DevOps
سه دسته اصلی از مزایا برای DevOps وجود دارد: مزایای فنی، مزایای فرهنگی و مزایای تجاری. مزایای فنی شامل کاهش پیچیدگی، تحویل مداوم و حل سریعتر مشکل است. متخصصان DevOps معمولاً کدهای با کیفیت بالاتر را سریعتر از تیم های سنتی اجرا می کنند.
مزایای فرهنگی تیم های مولدتر و کارآمدتر و مشتریان شادتر است. در پایان کسب و کار، مزایای آن شامل همکاری و اعتماد بیشتر بین اعضای تیم است که منجر به تحویل سریع تر و محیط های عملیاتی پایدار می شود.
مزایای DevOps شامل موارد زیر است:
- سیلوهای کمتر و افزایش ارتباطات بین گروه های فناوری اطلاعات
- زمان سریعتر برای بازاریابی نرم افزار
- بهبود سریع بر اساس بازخورد
- خرابی کمتر
- بهبود کل خط لوله تحویل نرم افزار از طریق ساخت، اعتبارسنجی و استقرار
- به لطف اتوماسیون، کار کم ارزش تر
- فرآیندهای توسعه ساده از طریق افزایش مسئولیت و مالکیت کد در توسعه
- نقش ها و مهارت های گسترده تر
با این حال، چالش های DevOps فراوان است:
- تغییرات بخش سازمانی و فناوری اطلاعات، از جمله مهارتهای جدید و نقشهای شغلی
- ابزارها و پلتفرم های گران قیمت، از جمله آموزش و پشتیبانی برای استفاده موثر از آنها
- توسعه و گسترش ابزار فناوری اطلاعات
- اتوماسیون غیر ضروری، شکننده یا ناایمن
- مقیاس بندی DevOps در چندین پروژه و تیم
- استقرار پرخطرتر به دلیل ذهنیت شکست سریع و تعمیم شغل در مقابل تخصص
- انطباق با مقررات، به ویژه زمانی که جداسازی نقش مورد نیاز است
- تنگناهای جدید
جمع بندی
در جامعه امروز با توجه به شرایط VUCA نیازمند مدیریت چابک در همه ابعاد می باشم. دواپس می تواند به ما این امکان را بدهد تا همیشه آنلاین باشیم و هیچ مشتری را از دست ندهیم ولی همیشه در حال ارتقا هم باشیم. شاید مزیت اصلی دواپس در مدیریت چابک این باشد.
محمد ۱۷ اسفند ۱۴۰۰
بسیار عالی
حسین ۳ فروردین ۱۴۰۱
مقاله بسیار جلبی بود واقعا نکات بسیار عالی درباره مدیریت چابک و دواپس گفته شده
ممنون از آکادمی احمدزاده
علی ۳ فروردین ۱۴۰۱
دواپس واقعا موضوعی هستش که باید در بستر های آی تی و دولوپر ها آموزش داده بشه
من در دوره مدیریت چابک آکادمی شرکت کردم و دواپس رو خودم خوندم تات حالا اگر دوره دواپس پیدا کنم حتما شرکت می کنمش
مهندس مملکت ۵ تیر ۱۴۰۱
دواپس رویکرد جالبی هستش هم شل ازش استفاده می کنه و هم شرکت های آی تی به نظرم یک رویکرد اجباری هستش
احمد رضایی ۱ مرداد ۱۴۰۱
مقاله خیلی خوبی بود ممنون
رسول مهری ۱ مرداد ۱۴۰۱
خیلی عالی و جامع
سارا میری ۱ مرداد ۱۴۰۱
مقاله مفید و جامعی بود ممنون از آکادمی