DevOps چیست؟
مقدمه
کلمه دواپس از دو بخش Dev + Opsتشکیل شده است. Dev مخفف توسعه و Ops مخفف عملیات است و نشان دهنده یک رویکرد مشترک به وظایف انجام شده توسط تیم های عملیاتی توسعه برنامه و فناوری اطلاعات یک شرکت است.
DevOps در گستردهترین معنای خود، فلسفهای است که ارتباط و همکاری بهتر بین این تیمها و سایرین را در یک سازمان ترویج میکند. DevOps در محدودترین تفسیر خود، پذیرش توسعه نرم افزار تکرار شونده، اتوماسیون، و استقرار و نگهداری زیرساخت قابل برنامه ریزی را توصیف می کند. این اصطلاح همچنین تغییرات فرهنگ را در بر می گیرد، مانند ایجاد اعتماد و انسجام بین توسعه دهندگان و مدیران سیستم ها و همراستایی پروژه های فناوری با نیازهای تجاری. DevOps می تواند زنجیره تحویل نرم افزار، خدمات، نقش های شغلی، ابزارهای فناوری اطلاعات و بهترین شیوه ها را تغییر دهد.
دواپس، پلی است بین تیم توسعه و تیم عملیات فناوری اطلاعات که با روشهای جدید و اتومات نمودن عملیات، انجام کارها را سریعتر و محصول را به نیاز مشتری نزدیکتر میکند.
در فرآیند DevOps کار تیم توسعه با تولید و انتشار نرمافزار تمام نشده؛ بلکه بعد از اجرای نرمافزار توسط مشتری و بهکار گرفته شدن آن، کار تمام می شود؛ اما بهبود بصورت مستمر ادامه می یابد. حال در ادامه درباره از سیر تا پیاز دواپس (DevOps) صحبت خواهد شد.
DevOps چیزی فراتر از همکاری تیم های توسعه و عملیات است. چیزی فراتر از ابزار و تمرین است. DevOps یک طرز فکر، یک تغییر فرهنگی است که در آن تیم ها روش های جدیدی را برای کار اتخاذ می کنند.
DevOps چه مشکلاتی را حل می کند؟
هر شرکتی با چالشهای خاص خود مواجه است، اما مشکلات رایج شامل نسخههایی است که بیش از حد طول میکشد، نرمافزاری که انتظارات را برآورده نمیکند و فناوری اطلاعاتی که رشد کسبوکار را محدود میکند.
بدون زمان انتظار، فرآیندهای دستی و بررسی های طولانی، یک پروژه DevOps سریعتر از نیازمندی ها به نرم افزار زنده منتقل می شود. زمانهای چرخه کوتاهتر میتواند از تغییر نیازها جلوگیری کند تا محصول آنچه را که مشتریان میخواهند ارائه دهد.
DevOps مشکلات ارتباطی و اولویت را بین تخصص های فناوری اطلاعات حل می کند. برای ساختن نرمافزار قابل اجرا، تیمهای توسعه باید محیط تولید را درک کنند و کد خود را در شرایط واقعی آزمایش کنند. یک ساختار سنتی تیم های توسعه و عملیات را در سیلوها قرار می دهد. این بدان معناست که توسعهدهندگان از زمانی که کدشان عملکردی را ارائه میکند، راضی میشوند – و اگر نسخه در تولید شکسته شود، این به تیم عملیاتی است که مشکلات را برطرف کند.
با فرهنگ DevOps، توسعهدهندگان زمانی که مشکلی پیش میآید به پاسخ «روی دستگاه من کار کرد» متوسل نمیشوند. تغییرات تولید شده اندک و قابل برگشت هستند. بعلاوه، کل تیم تغییرات را درک می کند، که مدیریت حادثه را بسیار ساده می کند.
با یک فرآیند سریعتر از ایده تا نرم افزار زنده، شرکت ها می توانند از فرصت های بازار سرمایه گذاری کنند. به این ترتیب، DevOps یک مزیت رقابتی برای مشاغل فراهم می کند .
فرهنگ DevOps به این معنی است که توسعه دهندگان با درک بهتر نیازها و نیازهای کاربر به کاربر نزدیک می شوند. تیم های عملیاتی در فرآیند توسعه شرکت می کنند و نیازهای تعمیر و نگهداری و نیازهای مشتری را اضافه می کنند. این به معنای پایبندی به اصول کلیدی زیر است که به تیم های DevOps کمک می کند تا برنامه ها و خدمات را با سرعت و کیفیت بالاتر نسبت به سازمان هایی که از مدل توسعه نرم افزار سنتی استفاده می کنند ارائه دهند.
همکاری در دواپس
فرض اصلی پشت DevOps همکاری است. تیمهای توسعه و عملیات در یک تیم کاربردی که ارتباط برقرار میکنند، بازخورد را به اشتراک میگذارند و در کل چرخه توسعه و استقرار همکاری میکنند، ادغام میشوند. اغلب، این بدان معنی است که تیم های توسعه و عملیات در یک تیم واحد ادغام می شوند که در کل چرخه عمر برنامه کار می کنند.
اعضای یک تیم DevOps مسئول تضمین کیفیت قابل تحویل در هر جنبه از محصول هستند. این منجر به توسعه بیشتر میشود، جایی که تیمها مسئولیتهای کامل یک ویژگی یا محصول را در اختیار دارند. تیم ها در طول چرخه عمر کامل از ایده تا تحویل صاحب یک ویژگی یا پروژه خواهند بود. این سطح افزایش یافته سرمایه گذاری و دلبستگی تیم منجر به خروجی با کیفیت بالاتر می شود.
شکل 1: همکاری در اصول DevOps
اتوماسیون در DevOps
یک موضوع ضروری DevOps این است که تا حد امکان چرخه عمر توسعه نرم افزار را خودکار کند. این به توسعه دهندگان زمان بیشتری برای نوشتن کد و توسعه ویژگی های جدید می دهد. اتوماسیون یک عنصر کلیدی خط CI/CD است و به کاهش خطاهای انسانی و افزایش بهره وری تیم کمک می کند. با فرآیندهای خودکار، تیمها با زمانهای تکرار کوتاه به بهبود مستمر دست مییابند که به آنها اجازه میدهد به سرعت به بازخورد مشتری پاسخ دهند.
شکل 2: اتوماسیون در اصول DevOps
بهبود مستمر در DevOps
بهبود مستمر به عنوان یکی از اصلی ترین مفاهیم چابک و همچنین تولید ناب و بهبود ایجاد شد. در بهبود، تمرکز بر آزمایش، به حداقل رساندن ضایعات و بهینه سازی برای سرعت، هزینه و سهولت تحویل است. بهبود مستمر با تحویل مداوم نیز مرتبط است و به تیمهای DevOps اجازه میدهد بهروزرسانیهایی را که کارایی سیستمهای نرمافزاری را بهبود میبخشد، بهطور مداوم انجام دهند. خط لوله ثابت نسخه های جدید به این معنی است که تیم ها به طور مداوم تغییرات کد را اعمال می کنند، ضایعات را حذف می کنند، کارایی توسعه را بهبود می بخشند و ارزش بیشتری برای مشتری به ارمغان می آورند.
مشتری محوری در DevOps
تیمهای DevOps از حلقههای بازخورد کوتاه با مشتریان و کاربران نهایی برای توسعه محصولات و خدمات مبتنی بر نیازهای کاربر استفاده میکنند. روشهای DevOps جمعآوری سریع و پاسخ به بازخورد کاربر را از طریق استفاده از نظارت مستقیم و استقرار سریع امکانپذیر میسازد. اعضای تیم دواپس، فوراً به نحوه تعامل کاربران زنده با یک سیستم نرمافزاری و استفاده از این بینش برای توسعه پیشرفتهای بیشتر دسترسی پیدا میکنند.
شکل 3: مشتری در DevOps
به پایان فکر کنید؛ سپس ایجاد کنید!
این اصل شامل درک نیازهای مشتریان و ایجاد محصولات یا خدماتی است که مشکلات واقعی را حل می کند. تیم ها نباید «یک حباب بسازند» یا نرم افزاری را بر اساس فرضیاتی درباره نحوه استفاده مصرف کنندگان از نرم افزار ایجاد کنند. در عوض، تیمهای DevOps باید درک جامعی از محصول، از ایجاد تا اجرا داشته باشند.
روش ها و راهبرد ها در DevOps
DevOps با توسعه نرم افزار Agile مرتبط است زیرا متخصصان DevOps اجایل را بعنوان راهی برای گسترش متدولوژی تولید سریع محصولات ارائه داده اند.
برای تقویت استراتژیهای خود، سازمانها باید زمینههای مرتبط DevOps، Agile و Waterfall ، مهندسی قابلیت اطمینان سایت (SRE) و SysOps و حتی تغییرات درون DevOps را درک کنند.
توسعه DevOps در مقابل توسعه آبشاری
توسعه آبشاری، شامل مجموعه ای از مراحل و دروازه ها در یک پیشرفت خطی به سمت تولید است. مراحل آن نیز عبارت است:
- تعیین نیازمندی ها
- تجزیه و تحلیل
- طراحی
- کدگذاری و پیاده سازی
- آزمایش
- بهره برداری
- استقرار
- نگهداری
تیم های Waterfall، توسعه کد جدید را در یک محیط ایزوله برای تضمین کیفیت (QA) آزمایش می کنند و در صورت برآورده شدن الزامات ، کد را برای استفاده در تولید ارسال می کند. عملیات فناوری اطلاعات چندین نسخه را به طور همزمان با کنترلهای گسترده اجرا میکند. پشتیبانی مسئولیت عملیات است. رویکردهای Waterfall باعث ایجاد انتظارهای طولانی بین انتشار نرم افزار می شود. از آنجایی که تیم های توسعه و عملیات به طور جداگانه کار می کنند، توسعه دهندگان همیشه از موانع عملیاتی که مانع از کارکرد کد طبق پیش بینی می شود، آگاه نیستند.
مدل DevOps تلاشهای عملیاتی توسعه، QA و IT را با دروازه های کنترلی کمتر و گردش کار مداومتر هماهنگ میکند. به عنوان مثال، برخی از مسئولیت های تیم عملیات در خط لوله تحویل برنامه به سمت چپ به تیم توسعه منتقل می شود. عملیات فناوری اطلاعات برای بهبود کد، بازخورد ارائه می کند.
در نهایت دواپس، به جای مراحل دروازهدار، بر توسعه مستمر، ادغام مداوم، تحویل مستمر و فرآیندهای نظارت مستمر متکی است.
توسعه DevOps در مقابل توسعه Agile
یک رویکرد توسعه نرم افزار است. تیمهای چابک بر بازه های زمانی تکرار شوند و یا تکمیل شونده، اما سریع، به ایجاد و تحویل کد تمرکز میکنند که به آن اسپرینت میگویند. هر اسپرینت بر اساس آخرین سرعت کار تیمی تکرار می شود. این کار باعث می شود که نرم افزار تولیدی، بسیار انعطاف پذیر و سازگار با نیازهای متغیر مشتری به روز شود.
DevOps از موفقیت Agile در بهبود سرعت توسعه محصول بهره می گیرد ، اما در عین حال، متوجه شد که قطع ارتباط بین تیم های توسعه و عملیات – و همچنین بین IT و بخش تجاری سازمان – به طور قابل توجهی مانع از تحویل نرم افزار ارزشمندتر و کاراتر به مشتری و کاربران شده است.
در چابک، تیم های توسعه و عملیات دارای اهداف و رهبری جداگانه هستند. وقتی یک سازمان از DevOps و Agile با هم استفاده می کند، هر دو تیم توسعه و عملیات، کد را در طول چرخه عمر توسعه نرم افزار مدیریت می کنند.
Agile اغلب با چارچوبی مانند Scrum رسمی می شود، در حالیکه DevOps چارچوب ندارد.
DevOps در مقابل مهندسی قابلیت اطمینان سایت(SRE)
SRE یا همان Site Reliability Engineering کهه به مهندسی قابلیت اطمینان سایت می گویند، همزمان با Agile و DevOps و در اوایل دهه 2000 در گوگل آغاز شد. این روش اساساً رویکردی مبتنی بر برنامه نویسی و اتوماسیون در چرخه عمر توسعه نرم افزار است. این روش تلاش دارد تا مشکلات را به گونه ای حل کند که از بروز مجدد آنها جلوگیری شود.
جعبه ابزار SRE دقیقاً با DevOps مطابقت دارد. هدف هر دو رشته بهبود مستمر است. مهندسان SRE و DevOps به دنبال حذف سیلوهای بین توسعه و عملیات هستند. در حالیکه DevOps می تواند به کسب و کار نیز گسترش یابد، SRE معمولاً در محدوده فرآیندهای IT باقی می ماند.
DevOps در مقابل SysOps
SysOps معمولاً نشان میدهد که یک مدیر فناوری اطلاعات به همراه تیم فناوری اطلاعات، استقرار تولید و پشتیبانی را برای یک برنامه کاربردی توزیعشده بزرگ، مانند یک محصول SaaS، مدیریت میکند. در DevOps، تیمهای SysOps باید در رایانش ابری و اتوماسیون و همچنین سایر فناوریهایی که برنامهها را قادر میسازد در مقیاس بزرگ، عملکرد خوبی داشته باشند، آشنا باشند. تیمهای SysOps قطعیها و حوادث فناوری اطلاعات را عیبیابی میکنند، مشکلات عملکرد را نظارت میکنند، قوانین امنیتی را اجرا میکنند و عملیات را بهینه میکنند.
تیمهای SysOps، همچنین مانند سایر ادمین های IT، بر دسترسی بالا، تحمل خطا، امنیت و عملکرد تمرکز دارند. با این که متخصصان SysOps احتمالا از برخی ابزارهای توسعه استفاده می کنند و فرآیندهای توسعه را تجربه و اجرایی می کنند، اما کار آنها به اندازه یک تیم DevOps با توسعه در هم آمیخته نیست. با این حال، نقشهای SysOps میتوانند در سازمانهای DevOps و SRE وجود داشته باشند.
DevSecOps در مقابل BizDevOps
برخی از سازمانها دامنه DevOps را به نقشها یا بخشهای دیگری نیز گسترش میدهند. مثلا در DevSecOps، برنامه ریزی امنیتی، اسکن، آزمایش و بررسی به طور مداوم در سراسر حلقه DevOps انجام می شود..
علاوه بر آن در BizDevOp بر اتصال مدیران، صاحبان برنامهها و سایر ذینفعان کسبوکار با تیم فنی تاکید می شود. این کار باعث توسعه، آزمایش و پشتیبانی نرمافزار گردد.
در حالی که احتمالاً همکاری بیشتر بهتر از کمتر است، این همکاران باید ورودی مؤثر، به موقع و دقیق را به اشتراک بگذارند.
شکل 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 در چندین پروژه و تیم
- استقرار پرخطرتر به دلیل ذهنیت شکست سریع و تعمیم شغل در مقابل تخصص
- انطباق با مقررات، به ویژه زمانی که جداسازی نقش مورد نیاز است
- تنگناهای جدید
کارکرد دواپس
دواپس (DevOps)، ترکیبی از فلسفهها، شیوهها و ابزارهای فرهنگی است که توانایی سازمان را برای ارائه برنامهها و خدمات با سرعت بالا افزایش میدهد. دواپس به سازمان ها برای تکامل و بهبود محصولات با سرعتی سریعتر از سازمانهایی که از فرآیندهای توسعه نرمافزار سنتی و مدیریت زیرساخت استفاده میکنند، کمک می کند. این سرعت، سازمان ها را قادر می سازد تا به مشتریان خود خدمات بهتری ارائه دهند و به طور مؤثرتری در بازار رقابت کنند.
شکل 6: فرایند کلی پیاده سازی دواپس DevOps در عمل
DevOps چگونه کار می کند؟
در ادامه از سیر تا پیاز دواپس (DevOps) به این می پردازیم که دواپس چگونه کار می کند؟ قبلا بسیاری از شرکتهای نرمافزاری برای توسعه فرایندهای خود، تیم های جداگانهای تحت عنوان توسعه (Development) و عملیات (Operations) داشتند. هدف تیم توسعه ارتقای محصول و فیچرهای آن و هدف تیم عملیات، کنترل و مدیریت وضعیت محصولات ارائه شده به مشتری بود. اما این موضوع باعث ایجاد چالشهای ارتباطی بین این دو تیم میشد. برای حل این چالشها، مفهومی بهنام DevOps شکل گرفت تا با افزایش تعامل موثر، شکاف بین تیمها را از بین برده و سرعت انجام کارها را افزایش دهد.
دواپس نوعی فرایند تولید نرم افزار است که بر همکاری و ارتباط میان تیمهای توسعه نرم افزار و تیم اجرایی تمرکز دارد. دواپس تلاش میکند تا ارتباط موثرتری بین تیم توسعه و تیم عملیات برقرار کرده و بهدنبال راه حلی برای مدیریت ارتباطات کاری است تا فرایند انتشار نرمافزار را سریع و امن کند.
در فلسفه کاری چابک DevOps، تیمهای توسعه و عملیات دیگر جدا جدا نیستند. گاهی اوقات، این دو تیم در یک تیم واحد ادغام می شوند که در آن مهندسان در کل چرخه عمر محصول چابک، از توسعه و آزمایش گرفته تا استقرار و عملیات، کار می کنند و طیف وسیعی از مهارت ها را توسعه می دهند که محدود به یک عملکرد واحد نیز نمی باشد.
در برخی از مدلهای DevOps، تیمهای تضمین کیفیت و امنیت نیز ممکن است به شدت با توسعه و عملیات و در طول چرخه عمر محصول چابک همراه شوند. هنگامی که امنیت به تیم DevOps اضافه می شود، به این مدل همکاری DevSecOps می گویند.
تیم چابک دواپس، از شیوههایی برای خودکارسازی فرآیندهایی استفاده میکنند که قبلا دستی و کند بودهاند. آنها از فناوری استفاده می کنند که به آنها کمک می کند تا محصولات و خدمات را سریع تر و امن تر، تحویل مشتری دهند. این ابزارها همچنین به مهندسان دواپس کمک میکنند تا به طور مستقل وظایفی را انجام دهند و این باعث افزایش سرعت تیم میشود.
CI/CD Pipeline چیست؟
یکی از شیوههای متداول پیادهسازی نرمافزار در تیم های DevOps، استفاده از پایپ لاین CI/CD است که به ما کمک میکند تغییرات کدها را بهطور مداوم کنترل و ارزیابی کنیم. در ادامه، این سه موضوع را به تفکیک بررسی کنیم:
پایپ لاین یا خط لوله: فرایندی متشکل از ماژولهای ساخت، توسعه، تست و دیپلوی کردن کد است که هدف آن کاهش خطای انسانی در فرایند توسعه نرم افزار، اتومات کردن فرایندها و کنترل و نظارت بر فرایند توسعه است.
CI یا (Continuous Integration) یا یکپارچه سازی مداوم:
شامل اقداماتی است که به توسعهدهندگان کمک میکند به صورت مداوم تغییرات کوچک را روی کدها پیادهسازی کرده و تغییرات مختلف را رصد کنند. این کار فرایند یکپارچه سازی کدها و تایید (Validation) را تسهیل میکند.
CD یا (Continuous Delivery) یا تحویل مداوم:
شامل اقدماتی است که پس از اتمام هر مرحله از CI انجام میشود تا کدها وارد فرایند تست شده و برای دپلوی شدن روی سرور آماده شوند. به کمک CD شما میتوانید بهروزترین نسخه نرمافزار را در هر زمان در اختیار کاربر نهایی قرار بدهید.
بنابراین اصطلاح CI/CD Pipeline به معنای استفاده از مجموعه قواعدیست که به تیم توسعه کمک میکند کدها را به شکلی بهینه تغییر و توسعه داده و در سریعترین زمان به کاربر نهایی برسانند.
جایگاه CI/CD Pipeline در دواپس
همانطور که در شکل زیر ملاحظه می کنید، این متد در ادامه روش چابک یا Agile بوده و به توسعهدهندگان کمک میکند تا با اتومات کردن بسیاری از فرایندهای توسعه روی مواردی مانند کیفیت، امنیت کد و بهروزرسانیهای محصول تمرکز کنند و محصول با کیفیتی را به تیم عملیات تحویل دهند.
شکل 7: جزئیات مراحل دواپس (DevOps)
مراحل چرخه دواپس از سیر تا پیاز دواپس (DevOps)
مراحل چرخه دواپس شامل دو مرحله است. مراحل بخش توسعه یا Development و مراحل چرخه عملیات یا Operation این مراحل که در شکل زیر نشان داده شده است، در ادامه به تفصیل تشریح می گردد.
شکل 8: اجزای چرخه دواپس (DevOps)
چرخه Dev
در این چرخه چهار مرحله plan و code و build و test وجود داشت که به ترتیب ابزارهای موجود در هریک را نام میبرم و راجع به هریک توضیح مختصری میدهم.
- مرحله برنامه ریزی (Plan) و مرحله کدنویسی(Code)
در این دو مرحله چون عمده کار (تقریبا همه کار) توسط تیم تحلیل کسب و کار و برنامه نویسان انجام میشود و از طرفی بدلیل تنوع در شیوه انجام کار و همچنین زبان برنامه نویسی، خیلی نیروی DevOps درگیر این مراحل نیست . فقط برای نگهداری کد از سرویس گیتلب (Gitlab) عمدتا استفاده میشود.
- مرحله ساخت (Build)
در این مرحله بسته به زبانی که برنامه با آن نوشته شده، میتوان از ابزارهای مختلفی استفاده کرد . برای نمونه شیوه Build کردن یک برنامه با زبان nodeJS با ابزار npm صورت میگیرد. یا برای جاوا، ابزار maven مناسب هست و همچنین معمولا برای مشاهده نتیجه Build معمولا سورس کد را در قالب یک کانتینر Container با ابزار داکر Docker ارایه میدهند .
- مرحله تست Test
این مرحله، یکی از مهمترین مراحل چرخه دواپس هست و لازم است با دقت انجام شود. انتخاب ابزار در این مرحله بستگی دارد به این که ما چه مدل تستی را انجام میدهیم و اینکه چه چیزی را قرار است تست کنیم. برای نمونه برای تست استرس و پرفورمنس http ابزارهای tsung و apache jmeter مناسب هست. یا برای اینکه فانکشنالیتی یک سرویس را تست کنیم، ابزار katakon studio و یا selenium مناسب هست و همچنین برای تست API هم میتوانید از این دو ابزار استفاده کنید که به صورت کامل رفتار یک کاربر در وبسایت شما را شبیه سازی میکنند.
چرخه Ops
- مرحله انتشار (Release)
در این مرحله قرار است که پس از موفقیت آمیز بودن تست ها یک نسخه از نرمافزار و ارایه شود. معمولا این کار را در همان سرویس gitlab انجام میشود.
- مرحله استقرار (Deploy)
در این مرحله از ابزارهای اتومیشن مانند Ansible و chef و puppet و … استفاده میشود.
- مرحله عملیات (Operation)
این مرحله و مرحله قبل deploy اکثر جاها یکجا پیاده سازی میشوند و ابزارها یکسان هست.
- مرحله مانیتور (Monitor)
در این مرحله هم معمولا از ابزارهای (ELK (Elasticsearch , Logstash , Kibana و zabbix و grafana استفاده میشود.
نکته مهم
برای اتوماتیک کردن تمامی این کارها و به اصطلاح پیوسته کردن کل فرآیند از ابزارهای Gitlab و Jenkins استفاده میشود.
۵ ارزش کلیدی در دواپس (CALMS)
در ادامه مباحث از سیر تا پیاز دواپس (DevOps) به CALM میرسیم. CALM از سرواژه کلمات Culture، Automation، Lean، Measurement و Sharing گرفته شده است و در واقع می توان گفت، ۵ ارزش کاربردی، برای مدیریت تمام جوانب DevOps است.
- فرهنگ (Culture)
DevOps یک فرهنگ است. در این فرهنگ، بین افراد و تیمها دیواری وجود ندارد و همه چیز یکپارچه مدیریت میشود. در فرهنگ DevOps، هیچ هدفی با بقیه اهداف متضاد نیست؛ بلکه اهداف خُرد، در یک راستا به تحقق هدف اصلی کمک میکنند.
- اتوماسیون (Automation)
DevOps در برگیرنده دو مفهوم «یکپارچگی مستمر» و «تحویل مستمر» است. وقتی که فعالیتی مستمر است، بهترین کار این است که فرآیند را خودکار (اتومات) کنیم. پس میشود گفت که اتوماسیون، بخش جدانشدنی DevOps است. با اتوماسیون، خطاهای انسانی کاهش پیدا کرده و سرعت انجام کارها چندین برابر میشود.
- بهینه سازی فعالیتها و فرایندهای غیرضروری(Lean)
Lean در لغت به معنی ناب است؛ اما اگر بخواهیم در یک عبارت ملموستر آن را توصیف کنیم، میشود: هنر به حداقل رسیدن کارهای پیچیده، غیرضروری و اتلاف های ۸ گانه. در DevOps باید بدون تعارف، با هر فرآیندی که به تولید ارزش منتهی نمیشود، خداحافظی کنیم. مسلماً انجام این کار، نیازمند آموزش و توانمندسازی تیم و همچنین یکپارچگی آنها است.
- اندازهگیری (Measurement)
در دواپس، همهچیز باید زیر نظر باشد. از سختافزارها و لایههای زیرساخت گرفته تا عمکلرد نرمافزارها. از نرخ تبدیل مشتریان گرفته تا تعداد باگهای هر نسخه. فقط با اندازهگیری مداوم است که میشود یک سیستم را چابک کرد. جمعآوری دادهها و تحلیل آنها، به تیمها کمک میکند که بهترین تصمیمها را بگیرند؛ مخصوصاً در مواقع حساس!
- اشتراکگذاری (Sharing)
DevOps برای این بهوجود آمد که شکاف بین تیم توسعه و عملیات را پر کند. تیمهای چابکی که از روش DevOps استفاده میکنند، باید تجربیات خود را به یکدیگر منتقل کنند تا تمام تیم باهم، رشد کنند و به هدف برسند.
- شرکت های موفق با دواپس (DevOps)
شرکت هایی مانند آمازون، نتفلیکس، گوگل و والمارت چه اشتراکاتی دارند؟ جدا از اینکه آنها شرکت های بسیار موفقی هستند، همه آنها از روش دواپس DevOps در فرآیندهای روزمره خود برای افزایش کارایی و بهبود محصولات و خدمات ارائه شده به مشتریان استفاده می کنند.
مزایای DevOps
- سرعت
با سرعت بالا حرکت کنید تا بتوانید سریعتر برای مشتریان نوآوری کنید، بهتر با بازارهای در حال تغییر سازگار شوید و در ایجاد نتایج تجاری کارآمدتر شوید. مدل DevOps توسعه دهندگان و تیم های عملیاتی را قادر می سازد تا به این نتایج دست یابند. به عنوان مثال، میکروسرویسها و تحویل مستمر به تیمها اجازه میدهند تا مالکیت خدمات را در دست بگیرند و سپس سریعتر بهروزرسانیها را برای مشتری منتشر کنند.
- تحویل سریع
فرکانس و سرعت انتشار را با دواپس افزایش دهید تا بتوانید محصول خود را سریعتر، نوآورانه تر و باکیفیت تر به مشتری تحویل دهید. هرچه سریعتر بتوانید ویژگی های جدید را منتشر و اشکالات را برطرف کنید، سریعتر می توانید به نیازهای مشتریان خود پاسخ دهید و مزیت رقابتی ایجاد کنید. یکپارچه سازی مستمر و تحویل مستمر شیوه هایی هستند که فرآیند انتشار نرم افزار را از ساخت تا استقرار خودکار می کنند.
- قابلیت اطمینان
از کیفیت بهروزرسانیهای برنامه و تغییرات زیرساخت فناورانه اطمینان حاصل کنید تا بتوانید بهطور قابلاطمینانی با سرعت بیشتری محصولات و خدمات چابک ارائه دهید و در عین حال تجربه مثبتی را برای کاربران نهایی حفظ کنید. از روش هایی مانند یکپارچه سازی مداوم و تحویل مداوم برای آزمایش اینکه هر تغییری کاربردی و ایمن است استفاده کنید. روشهای نظارت و ثبت گزارش به شما کمک میکند از عملکرد واقعی محصولات و خدمات چابک، مطلع شوید.
- مقیاس پذیری
زیرساخت ها و فرآیندهای توسعه خود را در مقیاس های مختلف، اجرا و مدیریت کنید. اتوماسیون و سازگاری دواپس به شما کمک می کند تا سیستم های پیچیده یا در حال تغییر را به طور موثر و با کاهش ریسک مدیریت کنید. به عنوان مثال، زیرساخت به عنوان کد به شما کمک می کند تا محیط های توسعه، آزمایش و تولید خود را به شیوه ای تکرارپذیر و کارآمدتر مدیریت کنید.
- همکاری بهبود یافته
با بکارگیری دواپس، تیمهای مؤثرتری بسازید که بر ارزشهایی مانند مالکیت و مسئولیتپذیری تأکید دارند. توسعه دهندگان و تیم های عملیاتی از نزدیک با یکدیگر همکاری می کنند، مسئولیت های زیادی را به اشتراک می گذارند و گردش کار خود را ترکیب می کنند. این باعث کاهش ناکارآمدی و صرفه جویی در زمان می شود (به عنوان مثال کاهش دوره های تحویل بین توسعه دهندگان و عملیات، نوشتن کدی که محیطی که در آن اجرا می شود را در نظر می گیرد)
- امنیت
با حفظ کنترل و حفظ انطباق، سریع حرکت کنید. با استفاده از خطمشیهای انطباق خودکار، کنترلهای دقیق و تکنیکهای مدیریت پیکربندی، میتوانید یک مدل DevOps را بدون به خطر انداختن امنیت اتخاذ کنید. به عنوان مثال، با استفاده از زیرساخت به عنوان کد و خط مشی به عنوان کد، می توانید انطباق را در مقیاس تعریف و سپس پیگیری کنید.
جمع بندی
اگر دوست دارید که یک تیم خیلی چابک داشته باشید که خیلی سریع، بر اساس بازخورد کاربران و تغییرات بازار، خودش را بهروز میکند، DevOps به درد شما میخورد. برعکس، اگر همهچیز در تیم شما بهصورت دستی پیش میرود و سازمان اجازه اتومات کردن برخی فرآیندها را نمیدهد، DevOps کاربرد خاصی برایتان نخواهد داشت.
اما آنچه مهم است این است که در جامعه امروز با توجه به شرایط VUCA نیازمند مدیریت چابک در همه ابعاد می باشیم و DevOOps می تواند به ما این امکان را بدهد تا همیشه در تعامل با هم باشیم و در نهایت هیچ مشتری را از دست ندهیم
اما همیشه در حال ارتقا هم باشیم. شاید مزیت اصلی دواپس در مدیریت چابک نیز، همین موضوع باشد.
در جامعه امروز با توجه به شرایط VUCA نیازمند مدیریت چابک در همه ابعاد می باشم. دواپس می تواند به ما این امکان را بدهد تا همیشه آنلاین باشیم و هیچ مشتری را از دست ندهیم ولی همیشه در حال ارتقا هم باشیم. شاید مزیت اصلی دواپس در مدیریت چابک این باشد.
دیدگاهتان را بنویسید