فرآیند توسعه نرم افزار همواره دستخوش تغییرات بوده است، چرا که برنامه نویسان خوش ذوق و خلاق همیشه به دنبال پیدا کردن راهی برای بهتر کردن شرایط موجود هستند. پیدایش زبانها، کتابخانهها و فریمورکهای جدید نشان میدهد که دنیای کامپیوتر در حال رشد و پیشرفت است و توسعه دهندگان نرم افزار باید برای مشکلات جدید، راه حلهای جدید و مبتکرانه ارائه دهند. اصطلاح DevOps چند سالی است که در بین توسعه دهندگان رایج شده و ممکن است برای شما نیز این سوال پیش آمده باشد که DevOps چیست و به چه کسی مهندس DevOps میگویند؟ در این مقاله قصد داریم به این موضوع بپردازیم و بررسی کنیم که DevOps چیست، کجا از آن استفاده میشود، چه مزایایی دارد و در آخر به این سوال هم جواب میدهیم که مهندس DevOps کیست؟ در ادامه با ما همراه باشید.
DevOps از دو کلمهی Development (توسعه) و Operation (عملیات) تشکیل شده و به نوعی این دو مفهوم را با هم ترکیب کرده است. دواپس بین تیم توسعهی محصول و تیم عملیاتی شرکت، همکاری و تعامل ایجاد میکند. DevOps یک زبان یا یک تکنولوژی خاص نیست بلکه ترکیبی از فلسفه، فرهنگ، شیوهها و ابزارهایی است که کمک میکنند محصولات یا خدمات ما سریعتر به دست مشتریان برسد.
منظور از Development، تیم توسعه است، یعنی تمام کسانی که در ساخت محصول، خطایابی، تست و در نهایت تکمیل محصول نقش دارند. منظور از Operation هم IT Operation یا تیم عملیاتی است. افرادی که در حالت کلی، نگهداری تجهیزات سخت افزاری، نرم افزاری، و محیطهای عملیاتی شرکت را به عهده دارند. DevOps به سازمانها کمک میکند تا سرعت انتقال محصولات یا خدمات خود به مشتریان را افزایش دهند، کیفیت کار را بالا نگه دارند و حضور قدرتمندی در بازار داشته باشند.
تا قبل از DevOps، تیمهای توسعه و عملیاتی در دو محیط ایزوله و جدا از هم فعالیت داشتند. جدا بودن برنامهی کاری این دو تیم باعث ایجاد تاخیر در تحویل و تکمیل پروژه میشد.آن زمان بدون DevOps، بیشتر وقت اعضای تیم به طراحی، تست و استقرار میگذشت به جای این که وقت برای ساخت پروژه واقعی صرف شود.
قبل از صحبت دربارهی DevOps بهتر است کمی دربارهی مدل Agile (اجایل) و متدهای آن صحبت کنیم. Agile یا چابک برازندهی نامی است که یدک میکشد و در پروژه باعث افزایش سرعت و بهرهوری میشود. بعضی از متدهای معروف Agile که در شرکتهای نرم افزاری به کار گرفته میشوند، عبارتند از اسکرام، XP ،AUP و… . با این که هر کدام از این متدها ساختار جداگانه و مستقل خود را دارند، اما در پایان به رشد مجموعه و بالا بردن کیفیت ختم میشوند. در این متدها مرتب با تکرار و گرفتن بازخورد (Feedback) سروکار داریم. Agile به افراد تیم کمک میکند تا در کنار هم، با سرعت بالا و حفظ کیفیت، تصمیم گرفته و پروژه را پیش ببرند.
نقطهی اشتراک اصلی دواپس و متد اجایل، سرعت است. هر دو تکنولوژی میخواهند چرخهی رسیدن نرم افزار به مشتری نهایی را تا حد ممکن کوتاه کنند. قرار نیست این مقاله تنها راجع به مهندسی نرم افزار و متدلوژیهای آن باشد، به همین خاطر، بیشتر از این دربارهی Aglie صحبت نمیکنیم.
DevOps تغییرات قابل توجهی در ساخت و توسعهی محصول ایجاد کرده است. بهتر است برای درک مفهوم دواپس از یک مثال استفاده کنیم و در این مثال، تفاوت بین روشهای سنتی و DevOps را بررسی کنیم.
سناریوی ما به این شکل است که فرض میکنیم پروژهی ما ساخت یک اپلیکیشن است و قرار است تا دو هفتهی دیگر این اپلیکیشن را بررسی کنیم. تا اینجای کار 80% برنامه نویسی پروژه انجام شده است و در حال خرید سرور برای آنلاین کردن پروژه و انتقال کدها به سرور هستیم. این سناریو را با استفاده از هر دو روش سنتی و دواپس، بررسی میکنیم:
تیم توسعه در روش کلاسیک، سرورهای جدید را فعال میکنند و کار آزمایش و تست روی پروژه آغاز میشود. از سوی دیگر، تیم عملیاتی مستندات پروژه را مینویسند و زیرساختهای موردنیاز را بررسی میکنند. در روش DevOps بعد از اینکه نیاز به سرورهای جدید احساس شد، قبل از اینکه تیم سفارشی ثبت کند، هر دو واحد توسعه و عملیات در کنار هم روی مستندسازی و کاغذبازی کار میکنند تا به خوبی نیازهای پروژه را پیدا کنند. سپس سرورهای جدید را تهیه میکنند.
در روش سنتی، برنامه نویسانی که در حال کار بر روی پروژه هستند، بهتر از هر کسی میتوانند در مورد مواردی مثل کانفیگ سرورها، موقعیت مکانی آنها، ترافیکی که برنامه احتمالا خواهد داشت و… تصمیم گیری کنند. اما معمولا به دلیل جدا بودن دو بخش توسعه و عملیات، توسعه دهندگان در این موارد دخالتی نمیکنند. در روش DevOps، توسعهدهندگان اطلاعات خود را در اختیار تیم عملیاتی قرار میدهند و آنها نیز از این ورودیها در انتخاب سرور استفاده میکنند.
در روش سنتی، تیم عملیاتی اطلاعی از مراحل ساخت نرم افزار ندارند و کارهای نظارتی و بررسی را با توجه به درک خود از پروژه انجام میدهند. در روش DevOps، تیم عملیاتی کاملا در جریان پیشرفت پروژه و مراحلی طی شده هستند. از آنجا که تیمهای توسعه و عملیاتی با هم در تعامل هستند، میتوانند با توجه به نیازهای IT و تجارت، یک برنامهی نظارتی مشترک طراحی کنند. همچنین ابزارهای مانیتورینگ یا APM) Application Performance Monitoring) هم استفاده میشود.
در روش سنتی، قبل از آنلاین کردن برنامه، تستهایی روی آن انجام میشود تا عملکرد برنامه برای آخرین بار تست شود. در این حالت ممکن است برنامه به مشکل خورده یا به کل از کار بیفتد. در این شرایط انتشار برنامه به تاخیر میافتد. در روش DevOps قبل از انتشار نهایی، یک تست روی برنامه اجرا شده و کمی سرعت آن افت میکند. تیم توسعه به سرعت گلوگاهها را تشخیص داده و مشکلات اصلی را برطرف میکنند. هیچ مشکلی در نظم کاری به وجود نیامده و برنامه طبق زمانبندی قبلی منتشر میشود.
چرخه حیات DevOps به 5 بخش کلی تقسیم میشود:
در مرحلهی اول، کل فرآیند توسعه به چرخههای کوچکتر تقسیم شده و سرعت ساخت و تحویل نرم افزار بالا میرود. در مرحلهی تست، تیم تضمین کیفیت یا QA از ابزارهای مختلفی مثل Selenium برای رفع اشکلات کدهای جدید استفاده میکنند. در مرحلهی ادغام، کدهای جدید با کدهای قبلی ادغام میشوند. در مرحلهی گسترش باید شرایط به گونهای باشد که هر زمان کد جدیدی به برنامه اضافه شد، در عملکرد محصول (مخصوصا اگر ترافیک زیادی داشته باشد) تاثیر منفی و نامطلوب نگذارد. در مرحلهی آخر و مرحلهی نظارت، تیم رفتار سیستم را زیر نظر داشته و باگهای پیش آمده را برطرف میکند.
برای مطالعهی بیشتر: اسکرام چیست؟
DevOps به توسعهدهندگان اجازه میدهد که cl) Continuous Integration) و ci) Continuous Delivery) را با هم ادغام کنند. این تکنیک کمک میکند تا محصولات شما سریعتر در بازار منتشر شوند. برخی از مزایایی که با استفاده از دواپس بدست میآوریم عبارتند از:
از DevOps بیشتر در پروژههای بزرگ استفاده میشود. مثلا در ساخت سایتهای تجاری پیچیده یا سرویسهایی که مبتنی بر فضای ابری هستند. همچنین در جاهایی که اطلاعات حساس و مهمی ردوبدل میشوند مثل بانکها، نیروگاههای هستهای، سازمانهای مرتبط با انرژی، نیرو و… استفاده از DevOps توصیه نمیشود.
مهندس DevOps یک متخصص IT است که با مهندسان نرم افزار، برنامه نویسان، اپراتورهای سیستم و دیگر افراد شاغل در حوزهی IT همکاری میکند. این شخص باید مهارتهای سخت و فنی بالایی داشته باشد. داشتن مهارتهای نرم به پیشرفت شغلی مهندس دواپس کمک زیادی میکند. چون باید با تیمهای مختلف توسعه، عملیات و تست در ارتباط بوده و با آنها همکاری داشته باشد.
برخی از مسئولیتها، نقشها و مهارتهایی که یک مهندس دواپس باید از عهدهی آنها برآید عبارتند از:
جمع بندی
دواپس به دنبال نزدیک کردن تیم توسعه و تیم عملیاتی است. اگر این امر محقق شود، سرعت ارائهی محصول یا خدمات به کاربران نهایی تا حد قابل توجهی افزایش پیدا میکند. DevOps یک تکنولوژی یا یک نوع خاص از برنامه نویسی نیست. بلکه مجموعهای از تکنیکها برای افزایش بهره وری و بالا بردن راندمان کار در تیمها است. از جمله مزایای دواپس نسبت به روشهای سنتی توسعه نرم افزار میتوان به انعطاف پذیری، کاهش ریسک، کیفیت بالاتر، نگهداری، قابل تکرار بودن، پیشبینی شکست یا موفقیت محصول و… اشاره کرد.
امیدوار هستیم که این مقاله برای شما مفید بوده باشد. خوشحال میشویم تجربیات و نظرات خود را در رابطه با دواپس، با ما و سایر کاربران به اشتراک بگذارید.