DevOps چیست؟
در شرکتهای بزرگ و کاردرست، دو تیم با نامهای تیم توسعه (Development Team) و تیم عملیات (Operation Team) وجود دارند. تیم توسعه وظیفه کدنویسی و توسعه پروژههای نرم افزاری را برعهده دارد و تیم عملیات نیز وظیفه آزمایش، بررسی و ارائه بازخوردهای لازم درباره عملکرد پروژه را دارد. در سالهای اخیر مفهوم جدیدی به نام DevOps به وجود آمده که سعی در ایجاد همکاری و یکپارچهسازی بهتر بین تیمهای توسعه و عملیات دارد؛ مفهومی که در مدت نسبتا کم، توانسته جای خود را در دنیای برنامه نویسی باز کند.
DevOps چیست؟ چه کاربردهایی دارد؟ مهارتهای لازم برای تبدیل شدن به یک مهندس دواپس چیست و پیشینه آن، به کِی برمیگردد؟ همه این موارد را میتوانید در ادامه این مطلب از وبلاگ سبزلرن مطالعه کنید!
به زبان ساده DevOps چیست؟
واژه DevOps (یا مهندسی DevOps) از ترکیب دو کلمه Development به معنی توسعه دادن و Operation به معنی عملیات به وجود آمده و مفهومی نسبتا جدید با تمرکز بر بهبود روابط و همکاری بین تیمهای توسعه و عملیاتی است. در دوآپس زبان برنامه نویسی یا تکنولوژی خاصی وجود ندارد؛ بلکه تمام تمرکز افراد بر ارائه هرچه سریعتر و بهتر محصولات یا خدمات به مشتریان است.
در روشهای سنتی و بدون استفاده از DevOps، تیم توسعه وظیفه برنامه ریزیهای مربوط به پروژه را برعهده داشت و بعد از توسعه و ساخت برنامه، خروجی را مورد آزمایش قرار میدادند. پس از انجام تستهای مختلف، پروژه برای انجام موارد مربوط به عملیاتی کردن و استقرار در اختیار تیم عملیات قرار میگرفت. این دو تیم کاملا جداگانه از یکدیگر از یکدیگر کار میکردند و ذهنیت یکسان یا حتی مشابهی نسبت به ماهیت و ساختار پروژه نداشتند. این موضوع باعث به وجود آمدن تاخیر و مشکلات زیادی میشد.
استفاده از DevOps در یک شرکت، باعث میشود تیم توسعه و تیم عملیاتی با یکدیگر تعامل سازنده و کافی داشته باشند. این کار با استفاده از ابزارها و روشهای مختلفی انجام میشود؛ به طوری که سازگاری کافی با هر دو تیم داشته و بتواند بر عملکرد و همکاری آنها تاثیر مثبت داشته باشد. تیم توسعه سعی میکند ویژگیها و امکانات جدیدی را به پروژه یا برنامه اضافه کنند؛ در حالی که تیم عملیات سعی در حفظ ثبات و عملکرد برنامه دارد و مسلما اضافه کردن ویژگیهای جدیدی به پروژه، با حفظ ثبات آن در تضاد است!
اینجاست که مهندس DevOps مانند فرشتهای دانا و کاربلد وارد ماجرا شده و تلاش میکند با ایجاد فرآیندی کاربردی و مفید بین این دو تیم، به آنها در رسیدن به اهدافشان کمک کند؛ طوری که نه سیخ توسعه دهندگان بسوزد و نه کباب تیم عملیاتی! در ادامه درباره مهندس DevOps و کارهایی که انجام میدهد بیشتر صحبت میکنیم؛ اما در ادامه، بهتر است دوآپس را با ذکر یک مثال، یاد بگیرید!
مثالی از کاربرد DevOps در برنامه نویسی
تصور کنید میخواهید یک سایت را به صورت کامل کدنویسی کنید. در روشهای سنتی، فرآیند توسعه یک سایت به صورت خطی و جدا از هم انجام میشود. ابتدا تیم توسعه، کدهای سایت را به زبانهای Html و CSS و JS نوشته و آنها را به تیم عملیات تحویل میدهد. تیم عملیات پس از پیکربندی سرور، آپلود فایلها و تنظیم دیتابیس، سایت را منتشر میکند. هر مرحله از این فرآیند ممکن است چندین روز یا حتی هفتهها طول بکشد و در صورت بروز مشکل، شناسایی و رفع آن زمانبر و پیچیده بوده و میتواند تیمها را با چالشهای غیرضروری مواجه کند.
در مقابل، مفهوم DevOps بر همکاری تنگاتنگ و موازی بین تیمهای توسعه و عملیات و خودکارسازی فرآیندها تأکید دارد. در این روش، تیمها به صورت مشترک روی پروژه کار میکنند و از ابزارهای یکسانی استفاده میکنند. هر تغییری که در کدهای سایت موردنظر ایجاد میشود، به صورت خودکار تست شده و در صورت موفقیت، به صورت خودکار روی سرور منتشر شود. این رویکرد باعث پیوستگی و افزایش سرعت توسعه و انتشار سایت شده و میتواند علاوه بر صرفهجویی در زمان، در کاهش هزینههای توسعه پروژه نیز تاثیرگذار باشد.
پیشنهاد دوره: اموزش دیپلوی
چرا DevOps به وجود آمد؟
اشاره کردیم که در شرکتهای بزرگ و حرفهای، دو تیم توسعه و عملیات فعال هستند که هرکدام وظایف خاص خود را دارند. تیم توسعه وظیفه کدنویسی و پیادهسازی پروژه مدنظر را برعهده داشته و بعد از توسعه و تست برنامه، آن را در اختیار تیم عملیات قرار میدهد. تیم عملیات یا همان تیم IT Operation وظیفه نگهداری از تجهیزات سخت افزاری (زیرساختهای فیزیکی نظیر سرورها)، نرم افزاری (ارائه پشتیبانیهای نرم افزاری) و محیطهای عملیاتی شرکت را به عهده دارند.
در شیوههای سنتی، بخش زیادی از فرآیند توسعه یک نرم افزار به استقرار و ایجاد سازگاری برنامه با زیرساختها و محیط عملیاتی شرکت اختصاص پیدا میکرد. همچنین تیمهای توسعه و عملیاتی، در دو محیط کاملا جداگانه و بدون ارتباط و همکاری خاصی فعالیت میکردند و این موضوع، بسیار مشکلساز بود!
تصور کنید چندین ماه زمان برای توسعه یک برنامه صرف شده و ناگهان، متوجه میشوید برنامه سازگاری کافی با زیرساختهای نرم افزاری یا سخت افزاری شرکت ندارد. در نتیجه باید چندین ماه دیگر را صرف ایجاد تغییرات لازم در پروژه کرده و احتمالا از برنامه ریزی عقب بمانید!
مهندس DevOps کیست و چه وظایفی دارد؟
اما مهندس دوآپس، فردی متخصص در IT است که با طیف گستردهای از افراد شاغل در بخش IT یک سازمان یا شرکت همکاری میکند. برای مثال، یک مهندس دوآپس با مهندسان نرم افزار، توسعه دهندگان، اوپراتورهای سیستم و پشتیبانان فنی همکاری میکند تا روند توسعه پروژه را با همکاری و هماهنگی بالاتری پیش ببرند.
به همین دلیل، بهتر است مهندس DevOps علاوه بر مهارتهای نرم نظیر ارتباطات، مدیریت زمان، مدیریت هیجان و موارد این چنینی، از دانش فنی گستنرده و مناسبی نیز برخوردار باشد. در بخش بعد، توضیحات گستردهای درباره مهارتهای یک مهندس DevOps ارائه میکنیم؛ اما در این بخش، میخواهیم بدانیم مهمترین وظایف یک مهندس DevOps چیست؟
تصویر زیر، برخی از مهمترین مسئولیتها و وظایف یک مهندس DevOps را نشان میدهد.
مهارتهای ضروری یک مهندس DevOps چیست؟
معمولا هرزمان که شاخه یا یکی از عنوانهای شغلی مربوط به برنامه نویسی را معرفی میکنیم، مهارتهای ضروری و مهمی که افراد فعال در آن باید آنها را یاد بگیرند را معرفی میکنیم. در خصوص مهندس DevOps و مهارتهایش، حرف بسیار است و مسیر طولانی و نسبتا دشواری برای تبدیل شدن به یک مهندس دوآپس حرفهای پیش روی شما قرار دارد.
پیشنهاد مطالعه: سرور چیست؟
مهمترین مهارتهای فنی در یادگیری دوآپس چیست؟
بیایید از یک روش منطقی برای پیدا کردن مهمترین مهارتهای فنی یک مهندس DevOps استفاده کنیم.
در بخش مهندس دوآپس چیست؟ اشاره کردیم که این شخص چه وظایفی دارد و ارتباط بین تیم توسعه و تیم عملیاتی را بهبود میبخشد. مسلما کسی که بخواهد بین دو تیم تخصصی ارتباط و همکاری ایجاد کرده و این همکاری را بهینه و مفیدتر کند، باید در بحث فنی توانایی کار در هر دو تیم را داشته باشد؛ یعنی هم بتواند به خوبی پروژه را کدنویسی، دیباگ و تست کند و هم بتواند آن را به خوبی استقرار کرده و بازخوردهای مفید را دریافت کند!
همچنین در بخش بعدی، تصویری را برای شما قرار دادیم که به ما نشان داد مهمترین وظایف مهندس DevOps چیست. در آن تصویر، اشاره کردیم که یک مختصص DevOps باید توانایی اسکریپت نویسی، مدیریت و پیکربندی زیرساختها، نظارت بر برنامه و حتی توسعه ابزارهای خودکارسازی فرآیندهای مختلف را داشته باشد. حتی به عنوان یک مهندس DevOps حرفهای، باید توانایی نوشتن مستندات فنی برای پروژهها و بخشهای مختلف آنها را داشته باشید! خلاصه که کار برای انجام زیاده!
حالا با استفاده از این اطلاعات، مهمترین مهارتهای فنی یک مهندس و متخصص DevOps را لیست میکنیم:
- برنامه نویسی با حداقل یک زبان برنامه نویسی + یک زبان اسکریپت نویسی (نظیر پایتون، پرل یا غیره)
- نیازسنجی و توسعه ابزارهای نرم افزاری برای خودکارسازی کارها
- کار، مدیریت و پیکربندی سرور و زیرساختهای نرم افزاری پروژه
- آشنایی با دیپلوی و استقرار پروژه (برای آشنایی بهتر با استقرار نرم افزار، مقاله دیپلوی چیست را مطالعه کنید)
- تست، دیباگ و آزمایش کدهای نوشته شده توسط تیم توسعه
- آشنایی با معماریهای مورداستفاده در توسعه نرم افزار
- توانایی نوشتن متنها و محتواهای فنی برای راهنمایی توسعه دهندگان و تیم عملیاتی
- و…
مهمترین مهارتهای نرم و غیرفنی در یادگیری دوآپس چیست؟
اما مهارتهای دیگری نیز غیر از مهارتهای مربوط به IT و برنامه نویسی وجود دارند که باید به عنوان یک مهندس DevOps آنها را یا بگیرید. برای صرفهجویی در زمان، تصویر زیر را برای شما آماده کردهایم که میتوانید تنها با یک نگاه، کل مهارتهای نرم موردنیاز را ببینید!
سایر مهارتهای ضروری برای یک مهندس DevOps چیست؟
برخی از مهارتها، باید در مواجه به هرگونه برنامه نویسی و همکاری با تیم برنامه نویسی مورداستفاده قرار بگیرند. مهارتهایی که در بهبود و نگهداری بهتر از پروژه تاثیرگذار بوده و هم اعضای تیم فنی و هم اعضای تیم عملیات، باید با آنها آشنایی داشته باشند. البته این موضوع که اکثر آگهیهای شغلی نیز بر داشتن این مهارتها تاکید دارند، بیتاثیر نیست! مهمترین این مهارتها عبارتند از:
- توانایی کار با سیسامهای مدیریت نسخه نظیر Git و Github
- آشنایی با سیستم عامل لینوکس
- آشنایی با معماری میکروسرویس
- آشنایی با Nginx
- آشنایی با ابزار داکر
- مجازیسازی
- مباحث شبکه و امنیت
وضعیت بازار کار DevOps در ایران
مهندسی DevOps یک عنوان شغلی نسبتا جدید در ایران به حساب میآید که تعداد شرکتهایی که نیاز به استخدام مهندسین آن دارند، رو به افزایش است. طبق آمارها و بررسیهایی که از سایتهای کاریابی ایرانی انجام دادیم، متوجه شدیم تعداد آگهیهای مربوط به استخدام مهندسین DevOps رو به افزایش بوده و حقوق خوبی نیز به این افراد پرداخت میشود.
در اکثر آگهیهای شغلی، سابقه کاری چندان مطرح نیست و میتوانید با سوابق اندک نیز در این عنوان مشغول به کار شوید. در آگهیهای فعال در این زمان (اواخر تیرماه 1403) مقدار حقوق پرداختی به مهندسین DevOps از حدود 15 میلیون تومان آغاز شده و به بیش از 55 میلیون تومان میرسد. با توجه به وجود فرصتهای شغلی پرتعداد و کمبود متخصص در زمینه DevOps، میتوانید به سرعت در این زمینه مشغول به کار شده و تا چند سال بعد، خود را به عنوان یک مهندس DevOps عالی مطرح کنید.
خلاصهای از DevOps و جزئیاتش
در این مطلب به سوالات مختلفی پاسخ دادیم. اینکه devOps چیست؟ متخصص devOps کیست و چه وظایفی دارد؟ چرا دوآپس به وجود آمده و منظور از چرخه حیات در آن چیست؟ همچنین مهارتهای فنی و غیرفنی مربوط به این شاخه را بررسی کرده و در نهایت، نگاه کوتاهی به وضعیت درآمد متخصصین این حوزه انداختیم. اگر بخواهیم به طور خلاصه، این مباحث را توضیح دهیم، میتوانیم بگوییم:
DevOps ه عنوان یک واسطه بین تیم توسعه و تیم عملیات عمل میکند که با استفاده از روشهای مختلف نظیر خودکارسازی، ایجاد تعامل بین دو تیم را آسان میکند. نتیجه استفاده از این کار، بهبود سرعت و وضعیت توسعه برنامهها و کاهش مشکلات احتمالی آنها در زمان عرضه یا بروزرسانی است که میتواند هزینههای فنی را تا حد زیادی کاهش دهد. یک مهندس DevOps بین 15 تا 55 میلیون تومان در تابستان 1403 درآمد دارد و بهتر است هم در زمینه برنامه نویسی و هم IT تخصص داشته باشد.
با سلام .
برای فردی که آشنایی با این مبحث نداره و برای افراد سنیور مکمل و زاویه نگرش جامعی بود . تشکر بابت کیفیت توضیح .