Agile یا DevOps؟

1398/05/09
در این بلاگ یک تعریف اجمالی از دو متدولوژی اعلام شده بیان می گردد. سپس بررسی می گردد که چه تفاوت هایی در این دو متد وجود دارد و آیا هر دو برای پشبرد اهداف یک شرکت لازم است؟
اگر شما شخصی باشید که به نرم افزار و متدولوژی توسعه نرم افزار علاقه مند باشید، احتمالا با کلماتی نظیر اسکرام و یا اجایل تا حدی آشنایی دارید. منظور از اجایل، یک متدولوژی چابک که بر تکرار های متناوب از تولید و تست و رسیدن به خروجی در زمان مینیمم تاکید دارد. در این متد توسعه نرم افزار، محصول به بخش های کوچک قابل انجام تقسیم شده و در تست نهایی یکپارچه می گردد. این متدولوژی به روش های متعددی نظیر اسکرام، کانبان و... قابل انجام است
scrum-methodoly.png
 ممکن است مفهوم دیگری که طول عمر چندانی ندارد و در بلاگ های قبلی به آن اشاره شده نیز برایتان تا حدی آشنا باشد. منظور DevOps به عنوان یک متد توسعه نرم افزار است.
DevOps یک روش توسعه نرم افزار است که تمرکز آن بر روی ارتباطات و همکاری بین افراد IT می باشد تا قادر به تولید سریع تر نرم افزار شوند. DevOps یک فرهنگ که بر همکاری بین توسعه دهندگان یا به عبارتی developer ها و تیم عملیاتی تمرکز دارد و خواستار تولید در سرعت بالاتر و تا حد امکان خودکار می باشد.
devops.jpg
  • اما حالا این سوال مطرح است که چه تفاوتی بین این دو مفهوم وجود دارد؟
  • آیا یکی کامل کننده دیگری است؟
  • آیا یک شرکت نرم افزاری به هر دو راهکار جهت پیشبرد هرچه بهتر نیاز دارد؟
  • رابطه بین این دو مفهوم چیست؟
  • چه تفاوت هایی به این دو متد توسعه نرم افزار وجود دارد؟
 
تولید یک نرم افزار معمولا به درخواست مشتری و پس از یک نیاز آغاز می شود. یک شرکت در ابتدا به بررسی نیاز مطرح شده پرداخته و نیاز را برای مشتری و خود تیم تولید شفاف می کنند و پس از بررسی های لازم، نتایج در قالب مستنداتی به مشتری تحویل داده می شود. اما آیا این نیازمندی درست تشخیص داده شده؟ آیا نتیجه نهایی، مناسب برای پاسخ گویی به نیاز اولیه مشتری است؟ آیا مشتری از مسئله و پیشنهاد شرکت پیمانکار مطلع است؟
همه این موارد حین رابطه شکل گرفته تیم تولید با مشتری مورد بحث قرار می گیرد. متدولوژی اجایل بر این رابطه و حداقل کردن هزینه مالی و زمانی اشاره دارد و منافع هر دو سمت یعنی، هم مشتری و هم تیم تولید مدنظر می باشد.
اما آیا این تنها مسئله ممکن در فرآیند تولید است؟ در صورتی که نیاز به درستی مستخرج و یپاده سازی گردد کار به اتمام می رسد؟
پاسخ پرسش بالا، متاسفانه و یا خوشبختانه خیر است.. متاسفانه از این حیث که همچنان مسائلی هست که سبب اختلال در روال می گردد و خوشبخانه به دلیل اینکه متد توسعه نرم افزار DevOps برای بهبود این اختلال راهکاری دارد.
اما مسئله چیست؟
در بعضی پروژه ها بنا به تعریف پروژه پس از ارائه سیستم به مشتری، شخص یا اشخاصی جهت استقرار و پایداری سیستم در نظر گرفته می شوند. تعامل بعدی بین تیم برنامه نویس و این افراد است. DevOps بر این رابطه تاکید دارد و دنبال راهکاری جهت بهبود این تعامل است.
شکل زیر مطالب ارائه شده را شفاف تر بیان می کند.



1234.png
در ادامه به چند تفاوت بین دو متدولوژی Agile و DevOps می پردازیم
 
اجایل چیست؟ دوآپس چیست؟
 
DevopsAgile.jpg

اجایل به یک رویکرد تکرار شونده اشاره دارد که تمرکز آن بر روی همکاری، بازخورد مشتری، کوچکی و انتشار سریع است. در این متد وقتی یک نرم افزار پیاده سازی می شود و انتشار می یابد، تیم اجایل دیگر ادامه روند را مانیتور نمی کنند و بعد از آن در حیطه تمرکزشان نیست.
دوآپس یک تمرین جهت نزدیکی هرچه بیشتر تیم برنامه نویس و Operation است. در این متد، هدف هدایت یک نرم افزار آماده انتشار و استقرار آن در بهترین و قابل اطمینان ترین راه است.
 
هدف از این دو متدولوژی؟
goal-methodology-(1).png

اجایل کمک میکند تا پروژه های پیچیده قابل مدیریت باشد و نهایتا یک نرم افزار تولید گردد اما مفهوم اصلی دواپس مدیریت کردن ارتباط مهندس – مهندس است و در واقع دنبال راه حلی برای روابط کاری  End- End می باشد. در این متد، هدف انتشار سریع و امن (با حداقل باگ) می باشد
 
Task

task.jpg

فرآیند های اجایل بر تغییرات مداوم تمرکز دارد در حالی که رویکرد دواپس تست و انتشار مداوم است


Implementation


implementation.png 

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

مجموعه مهارت تیمی

skill.jpg
تاکید اجایل بر این است که کلیه اعضای تیم توانایی های گسترده ای از مهارت های ساده و مساوی داشته باشند اما در دواپس مجموعه مهارت های لازم بین تیم برنامه نویسی و عملیاتی تقسیم می گردد.

تعداد اعضای تیم
 
team-size.png

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

بازه زمانی

duration.jpg


متدولوژی اجایل توسط واحد های کوچک زمانی به نام اسپرینت مدیریت می شود. هر اسپرینت معمولا کمتر از یک ماه (حدود 2 تا 4 هفته) می باشد. در مقابل در متد دواپس تلاش بر این است که ددلاین ها رعایت شده و ایده آل، ارائه کد نهایی قابل اجرا به صورت روزانه و یا هر چند ساعت یک بار است.

Feedback

feedback.jpg


در اجایل فیدبک توسط مشتری ارائه می گردد در حالیکه در دواپس فیدبک توسط اعضای داخلی مطرح می شود.

ارتباطات

communication.jpg


در اجایل لازم است هر عضو آنچه برای روند پروژه نیاز است را بداند و زمانی که هر فرد از تیم، کاری انجام دهد فهم پروژه و یکپارچگی بیشتر می گردد. اسکرام یک شیوه تعامل متداول برای اجرایی کرن اجایل می باشد. یکی از جلسات معروف در اسکرام Daily Scrum Meeting یا جلسات روزانه است که ایستاده برگزار می شود.
در متد دواپس تیم تولید و تیم عملیاتی از یکدیگر جدا هستند، در نتیجه روابط در این حالت پیچیده تر است. ارتباطات DevOps شامل مشخصات و اسناد طراحی است. این مهم است که تیم عملیاتی بتواند نسخه نرم افزار و جوانب سخت افزاری / شبکه آن را برای اجرای مناسب فرایند استقرار کاملاً درک کنند.

مستندات

documentation.jpg


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

خودکار سازی

Automation.jpg


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

سرعت و ریسک

risk.png


تیمی که از اجایل استفاده می کند، تغییرات سریع و یک ساختار نرم افزار قوی را پشتیبانی می کند. در دواپس افراد باید مطمئن باشند که تغییراتی که در معماری ایجاد شده، هیچ وقت ریسکی برای کل پروژه نخواهد داشت.

کیفیت

quality.png


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

ابزارهای مورد استفاده

tool.jpg



agile-tools.png 
devops-tools.png
User Avatar
نویسنده : ملیکا مقدس
امتیاز شما :

دیدگاه کاربران



ارسال پیام



 Security code