آشنایی با DEVOPS و اثرات آن در توسعه سریع و کم هزینه محصول
با تغییر نسل نرمافزارها و ظهور معماریهای مبتنی بر سرویس و ماکرو سرویس و استفاده از سرورهای ابری بجای سرورهای فیزیکی، رویکردهای توسعه نرمافزار نیز تغییر کرده است.راهکار DevOps براساس معماریهای جدید و جهت کاهش هزینههای توسعه، به تدریج از سال 2009 آغاز شد و تا 2016 به بلوغ رسیده است.مهمترین ویژگی DevOps افزایش سرعت در توسعه و تحویل محصول است.
به گزارش پایگاه خبری بانکداری الکترونیک، زمان زیادی نیست که برای خرید نرمافزارهای جدید کسی به سراغ فروشگاههای عرضه CD نمیرود. اغلب مردم برنامههای موردنیاز خود را از طریق مراکزی مانند google app store یا bazar دانلود میکنند.
در بسیاری از مواقع نیز کل نیاز ما از طریق وب برطرف میشود. شرکتهای بزرگ سرویسدهنده سعی دارند بهجای فروش مستقیم نرمافزارهای جدید، سرویسها و خدمات خود را بفروشند و با راهاندازی APIها و بهکارگیری خلاقیت شرکتهای استارتآپی، هزینههای خود را کاهش دهند و مشتریان متنوعی نیز جذب کنند.
با تغییر نسل نرمافزارها و ظهور معماریهای مبتنی بر سرویس و ماکرو سرویس و استفاده از سرورهای ابری بجای سرورهای فیزیکی، رویکردهای توسعه نرمافزار نیز تغییر کرده است.
اگر کار شما نیز بانکی است، به نوشتن برنامههای بانکی روی اینترنت، انواع مختلف گوشی و تبلت، تلویزیون، یخچال و اخیرا شبکههای اجتماعی فکر کردهاید اما هزینههای آن بسیار زیاد است و فرصت انجام همه آنها را نخواهید داشت.
راهکار DevOps براساس معماریهای جدید و جهت کاهش هزینههای توسعه، به تدریج از سال 2009 آغاز شد و تا 2016 به بلوغ رسیده است. اما مهمترین ویژگی DevOps که آنرا مورد توجه قرار داده، افزایش سرعت در توسعه و تحویل محصول است.
DevOps چیست؟ معمولا در متون مختلف به DevOps، عناوین متفاوتی اطلاق میشود، مانند متدولوژی، نکات مدیریتی، چابکگرایی، ابزارهای خودکارسازی و غیره. درواقع DevOps هیچکدام از اینها نیستند بلکه همه این موارد را شامل میشود.
DevOps به مجموعهای از روشها اطلاق میشود که به منظور مدیریت بهینه شرکت¬های تولید نرمافزار ایجاد شده است. برای درک بهتر DevOps باید اصول و قوانین اساسی آن را دید.
1.اقدامات مشتریمحور؛ ارزشهای مشتری باید به محیط تولید نرمافزار انتقال یابد.
2.تولید با درک انتهای کار؛ تمام اعضای تیم میبایست قادر به دیدن انتهای کار باشد و درک واحدی ار آن داشته باشند.
3.تیمهای خودمختار؛ که با ساختار کوچک و قابلیت بالا، متشکل از افرادی است که برای توسعه کامل محصول و تحویل آن به مشتری، مهارت و اختیار کافی دارند.
4.بهبود متناوب؛ با تعیین معیارهای کارایی، معیارهای خلاقیت و معیارهای فرهنگ؛ هر چیزی قابل اندازهگیری میشود و با استفاده از تجربیات، امکان اصلاح و پیشرفت را فراهم میکند.
5.خودکارسازی هر چیزی که میتوانید، مهمترین راهکاری است که از الزامات معماریهای جدید است.
اصلیترین مشکل سازمانها که DevOps قصد حل آن را دارد، بهتر کردن ارتباط افراد و از بین بردن سردرگمی بین گروه تولید (Dev) و عملیات (Ops) است. معمولا گروه تولید در حال تغییر دادن محصول و ساختار سرویسهاست به همین دلیل متمایل به روشهای چابک است تا تغییرات را در کمترین زمان ممکن انجام دهد.
در مقابل هدف عملیات ایجاد حالت قابل اعتماد در سرویسها و کم کردن ریسک تغییرات است به همین دلیل معمولا متمایل به روشهای پایدار هستند و میخواهند حالت فعلی را حفظ کنند. این تقابل باعث بوجود آمدن مشکلات هماهنگی بین این دو گروه میشود.
راه حلهای DevOps سعی در کم کردن این مشکلات میکند. پیشنهاد DevOps استفاده از متدولوژیهای چابک به همراه متدولوژی Lean است. سوال مهم این است که مرز بین تولید و عملیات چگونه مشخص میشود؟ آیا نصب و پشتیبانی بطور کامل باید به تیمها سپرده شود؟ آیا نگهداری پایگاه دادهها و سرورهای آن هم برعهده تیم است؟ آیا نوع کسبوکار در مشخص کردن خط مرز بین تولید و عملیات نقشی دارد؟ این پاسخها را DevOps میدهد و ابزارهای آنرا پیشنهاد میکند.
در متدولوژی ها و روشهای توسعه با عناوین مختلفی نام برده شده و ابزارهای متنوعی برای آن توصیه میشود. در شکل زیر برخی از مهمترین مفاهیم بهکاررفته در DevOps را میتوان مشاهده کرد که هر کدام بخشی از فرآیند توسعه را پوشش میدهند.
محصولات قدرتمندی مانند Jenkins, Git, Ansible, Sonar, Maven, Dockers در این مسیر رشد کردهاند. بسیاری از شرکتهای پیشرو مانند Microsoft، , Oracle IBM، چرخه DevOps را با استفاده از محصولات بسیار گرانقیمت ارائه میکنند و البته اغلب آنها با ابزارهای رایگان اشاره شده، هماهنگی دارند.
عمید برهانی/هادی آقاسی