فرآیند دواپس چیست؟ DevOps و Agile چه تفاوتی دارند؟
اگر شما در زمینه نرم افزار فعالیت کرده باشید یا به مطالعه در این حوزه علاقهمند باشید، حتما نام «دواپس» را شنیدهاید. مفهوم DevOps برای نخستین بار در سال 2009 مطرح شد و از 2014 مورد استقبال گسترده قرار گرفت.
در گذشته، در شرکتهای نرم افزاری دو تیم، با اهداف کاملا متفاوت و متضاد فعالیت میکردند. تیم توسعه(Development) و تیم عملیات (Operation). هدف تیم توسعه، افزودن ویژگیهای جدید به محصول و هدف تیم عملیات، ثابت نگه داشتن وضعیت محصولات بود. به همین دلیل بین این دو تیم فاصله و شکاف عمیقی وجود داشت. مفهوم DevOps با هدف افزایش تعامل، از بین بردن فاصله بین این دو تیم و تحویل سریع ارزش به مشتریان مطرح شد.
اگر شما هم میخواهید دقیقتر بدانید دواپس چیست، چه کاربردی دارد و چه تفاوتی با متدولوژی Agile دارد، تا پایان این مطلب همراه ما باشید تا همه چیز درباره devops را بیان کنیم.
دواپس چیست؟
قبل از ورود به بحث، باید بدانیم Devops مخفف چیست؟ همان طور که اشاره کردیم، اصطلاح DevOps از دو واژه توسعه (Development) و عملیات (Operations) ساخته شده است. دواپس نوعی فرایند تولید نرم افزار است که بر مبنای همکاری و ارتباط میان تیمهای توسعه نرم افزار و تیمهای اجرایی بنا شده است. در واقع دواپس، پلی است بین تیم توسعه و تیم عملیات که با استفاده از روشهای جدید، انجام کارها را سریعتر کرده و محصولات را به نیاز مشتریان نزدیکتر میکند.
فرآیند دواپس چیست؟
در طی این فرآیند DevOps ، عملیات توسعه نرم افزار و اعمال تغییرات زیرساختی به صورت خودکار انجام میشود. این فرآیند به 5 مرحله اصلی تقسیم میشود.
-
برنامه ریزی (Planning)
در مرحله اول، تیمی اهداف پروژه را ترسیم کرده و ساختار کلی نرم افزار را تعیین میکنند. متخصص دواپس باید از دانش فنی اعضای تیم استفاده کرده و بررسی کند چگونه میتوان سازمان را در قالب یک سیستم یکپارچه به تمام اهداف مورد نظر رساند. پس از برنامه ریزیهای اولیه، متخصص دواپس باید به دنبال راهکارهایی برای انجام خودکار فرآیندهای مختلف باشد. به بیان دیگر، باید قادر باشد تیم را در جهت افزودن قابلیتها و تکنولوژیهای تولید شده به سیستم، هدایت کند. در این مرحله مهندس devops باید برای سوالات زیر پاسخ مناسب پیدا کند:
دو سرویس مختلف چگونه با هم تعامل میکنند؟
برای مرتبط کردن این دو سرویس از چه راهکاری باید استفاده کرد؟
چه چیزهایی را باید تولید کنیم و چه چیزهایی را باید خریداری کنیم؟
آیا یک وظیفه خاص در سیستم میتواند به صورت خودکار انجام شود؟
-
توسعه (Development)
اکنون که چارچوب کلی کار مشخص شده، نوبت توسعه دهندگان یا Developer ها است تا کد بزنند و فیچرهای پیشبینی شده را برای نرم افزار توسعه دهند. در این مرحله مهندس دوآپس باید راهی پیدا کند تا توسعه دهندگان بتوانند بهترین فعالیت را در کوتاهترین زمان ممکن انجام دهند. در واقع او به دولوپرها میگوید که از کدام ابزارها استفاده کنند و این ابزارها را در اختیارشان قرار میدهد. همچنین بخشهای مختلف کدهایی که به وسیله دولوپرها در محیط توسعه نوشته شدهاند را کنار هم قرار داده و آنها را با محیط نهایی نرم افزار سازگار و هماهنگ میکند. سوالاتی که متخصص دواپس در این مرحله ممکن است با آنها روبرو شود، عبارتند از:
چگونه میتوانیم کارایی و بهرهوری دولوپرها را افزایش دهیم؟
چکونه محیط نهایی نرم افزار را برای توسعه دهندگان ترسیم کنیم؟
توسعه دهندگان در چه شرایطی میتوانند از ابزارهای مورد علاقه خود استفاده کنند؟
-
آزمایش کردن (Testing)
در این مرحله کدها به وسیله توسعه دهندگان و مسئولان کنترل کیفیت (QC) تست شده و برای یکپارچه شدن با سورس کد اصلی آماده میشود. اما توجه داشته باشید که برای اجرای دستی کدها بر روی سیستمهای داخلی سازمان هنوز به حضور دولوپرها و مسئولان کنترل کیفیت نیاز داریم.
اکنون مهندس دواپس با استفاده از ابزارهای CI (Continuous Integration) مانند Jenkins، Bamboo یا Drone باید برای تکرار خودکار تستها راهی پیدا کند تا به این وسیله تست مداوم کدها آسانتر شود. موضوعاتی که یک متخصص دواپس در این مرحله با آنها روبرو است عبارتند از:
چگونه تاریخچه تستها را بررسی کنیم و با استفاده از آنها روندهای موجود را پیدا کنیم؟
بعد از تست کدها، چگونه مشکلات احتمالی را به توسعه دهندگان اعلام کنیم؟
چطور میتوانیم چندین محیط مشتری (Client Environment) تکرارپذیر ایجاد کنیم؟
-
استقرار (Deployment)
در این مرحله باید تعیین کنید کدهای نوشته شده چگونه و با چه نظمی در محصول نهایی قرار داده شوند تا کاربران نرم افزار بتوانند از سرویس شما استفاده کنند. در واقع Deployment در اینجا به معنای آپلود کدها بر روی سرور اصلی نرم افزار است. در اینجا نیز متخصصان دواپس از ابزارهای CI استفاده میکنند. سوالاتی که در این مرحله باید پاسخ داده شوند، عبارتند از:
چگونه میتوانیم فرآیند Deploy شدن یا استقرار را به صورت خودکار درآوریم؟
چطور مطمئن شویم سرویسی که به تازگی مستقر شده، اختلال و مشکلی ایجاد نمیکند؟
چگونه بدون اینکه کاربر متوجه شود، سرویسی را Deploy کنیم؟
نسخه نهایی نشده از نرم افزار، چه زمانی برای Deploy شدن آماده است؟
چگونه میتوانیم فرآیند استقرار را با روشهای تکرارپذیر انجام دهیم؟
-
نگهداری (Maintenance)
این مرحله در مورد انجام تمام فعالیتهایی است که باعث در دسترس قرار گرفتن یک سیستم و حفظ کارایی آن میشود. توجه داشته باشید که این مرحله بیشترین زمان یک مهندس دواپس را به خود اختصاص میدهد. موضوعات و سوالات این مرحله را در ادامه بیان کردهایم:
چگونه میتوانیم از باگها و مشکلات موجود در محصول مطلع شویم؟
چگونه باگهای زیرساختی موجود در محصول را برطرف کنیم؟
چطور میتوانیم از سلامت و کارایی همه سرویسها مطمئن شویم؟
چگونه مشکلات مختلف موجود در سرویس را به تیم مناسب ارجاع دهیم؟
چارچوب CALMS چیست؟
CALMS نوعی راهنما برای رسیدن به فرآیند DevOps است و همانطور که پیداست از 5 قسمت تشکیل شده است.
Culture
توجه داشته باشید که دوآپس، بیشتر یک مفهوم فرهنگی است. یعنی باید مرز بین افراد و تیمها از بین برود تا آنها تعامل مناسبی داشته باشند و به یک هدف مشترک برسند.
Automation
شما نمیتوانید بدون ابزارهای CI مانند Continuous Deploymentو ontinuous Integration از دوآپس استفاده کنید و همه کارها را به صورت دستی انجام دهید. چرا که فرایندهای دستی کند هستند و احتمال خطای بالایی دارند.
Lean
یکی از اصول اساسی DevOps از بین بردن تمامی اقدامات و فرآیندهای اضافی است. در واقع هر فعالیتی که ارزش خلق نمیکند، باید حذف شود.
Measurement
برای ایجاد یک فرآیند کارآمد، دقیق و منظم، همه سطوح باید به خوبی شفاف سازی شوند. برای این منظور نیاز است که وضعیت موجود را با ابزارهایی مانند Infrastructure Monitoring یا Log Management ارزیابی کنیم.
Sharing
این مفهوم در مورد به اشتراک گذاری مراحل پشت سر گذاشته شده صحبت میکند. در حالی که قبل از اجرای DevOps ، شکاف بین تیمها مانع میشد که مطالب آموخته شده بین اعضا پخش شود و تکرار اشتباهات همچنان ادامه داشت.
دلیل اهمیت دواپس چیست؟
تا اینجا دانستیم دواپس چیست و فرآیند آن شامل چند مرحله است. در این بخش اهمیت اصول دواپس را بررسی خواهیم کرد.
همانطور که میدانید، تغییر بر اساس تحولات بازار و نیاز مشتریان از ویژگیهای اصلی کسب و کارها در حوزه فناوری اطلاعات محسوب میشود. قبل از معرفی DevOps، ارتباط ضعیفی بین تیمهای تضمین کیفیت، اجرا، توسعه و… وجود داشت، اکثر اوقات آنها مشکلات ایجاد شده را به گردن هم میانداختند و یکدیگر را محکوم میکردند. از سوی دیگر، به دلیل نزدیک بودن مرز کارها، امکان نظارت دقیق فراهم نبود.
سیستم DevOps مرز میان دو تیم را از میان برداشت و آنها را به هم نزدیکتر کرد. همچنین با خودکارسازی بسیاری از روالهای تکراری، فرآیند تحویل ارزش به مشتریان را سرعت بخشید.
تفاوت اجایل و دواپس چیست؟
اما بین این دومتد Agile و DevOps چه تفاوتی وجود دارد؟ هر دو برای پیشبرد اهداف سازمان لازماند؟
شما میتوانید برای آشنایی کامل با متدلوژی Agile ، مطلب همه چیز درباره سیستم مدیریت چابک را بخوانید.
- اجایل، نوعی متدولوژی چابک است که بر تکرارهای متناوب در تمامی مراحل تولید، تست و رسیدن به خروجی تاکید دارد. در این راهکار توسعه نرم افزار، محصول به بخشهای کوچک تقسیم و در تست نهایی یکپارچه میشود. خوب است بدانید این متدولوژی به روشهای متعدد مانند اسکرام و کانبان قابل انجام است. اما DevOps یک روش توسعه نرم افزار و نوعی فرهنگ با تمرکز بر ارتباط و همکاری بین تیمهای سازمان برای تولید سریعتر نرم افزار است. این متد بر تولید سریع و خودکار تاکید دارد.
- فرآیندهای رویکرد Agile بر تغییرات مداوم تمرکز دارد، در حالی که رویکرد DevOps مبتنی بر تست و انتشار مداوم است.
- با کمک Agile میتوانید پروژههای پیچیده را مدیریت کرده و در نهایت یک نرم افزار تولید کنید. در حالی که DevOps به دنبال راه حلی برای مدیریت ارتباطات کاری با هدف انتشار سریع و امن است.
- متد Agile با چارچوبهایی مانند اسپرینت و اسکرام قابل اجرا است. اما راهکار DevOps مبتنی بر همکاری است و نمیتوانیم یک چارچوب معمولی برای اجرای آن در نظر بگیریم.
و در انتها…
دواپس از ترکیب دو واژه Development به معنی توسعه نرم افزار و Operations به معنی عملیات فناوری اطلاعات تشکیل شده است. میتوان DevOps را نوعی فرآیند تولید نرم افزار در نظر گرفت که بر ارتباط و همکاری هر چه بیشتر تیمهای توسعه نرم افزار و تیمهای اجرایی تاکید دارد.
به بیان دیگر، متد دواپس مخلوطی از چندین نقش بوده و هدف آن کنار هم قرار دادن توسعه دهندگان و مهندسان اجرایی است. فرهنگ DevOps ویژگیهای جدید محصول را به خوبی با زیرساختهای آن هماهنگ و سازگار میکند و باعث میشود در کنار هم به خوبی عمل کنند.
در این مطلب ضمن پاسخ به سوال دواپس چیست و چه کاربردی دارد، به بررسی تفاوتهای Agile و DevOps نیز پرداختیم.
عالی بود
ممنون
سلام
خلاصه و مفید
تشکر فراوان