استخدام کارشناس دواپس (DevOps)
وقتی صحبت از دواپس میشود، بسیاری از افراد به این موضوع فکر میکنند که آیا یک مهندس DevOps صرفا یک توسعه دهنده نرم افزار است یا نقشهای دیگری مانند ادمین سیستم، تست نرم افزار را بر عهده دارد. برخی دیگر نیز بر این باورند که یک مهندس دواپس، شخصی است که به طور کلی مسئولیت کلی یک نرم افزار (از زمان شروع پروژه تا پروسه ساخت و پشتیبانی آن) را در اختیار دارد. در این مقاله میخواهیم یک تعریف جامع از مهندس DevOps را ارائه دهیم و ببینیم یک شخص برای تبدیل شدن به مهندس دواپس باید چه شرایطی داشته باشد.
تیم دواپس از چه بخشهایی تشکیل شده است؟
به صورت کلی، یک تیم مستقل DevOps از چندین مهندس با تجربه تشکیل میشود که هر کدام مسئولیت بخشهای مختلفی را بر عهده دارند. هر تیم دواپس از دو بخش مهم تشکیل میشود.
۱- بخش اول متشکل از یک مهندس ارشد دواپس است که مسئولیت مدیریت کل تیم را بر عهده دارد. این فرد وظیفه توسعه ساختار و برنامه ریزی فرآیند کلی ساخت نرم افزار را دارد. او همچنین مشخص میکند که اعضای تیم از چه ابزاری برای انجام کارهای خود استفاده میکنند. در حقیقت مهندس ارشد وظیفه دارد تا کل فرآیند را مدیریت کرده و تمام زیرساختهای مورد استفاده را بررسی نماید.
۲-بخش دوم نیز متشکل از تعدادی مهندس دواپس (کارشناس دواپس) بوده که بسته به نوع پروژه، مسئولیتهای متنوعی را بر عهده دارند. بسته به برنامهای که توسط مهندس ارشد طراحی میشود، این افراد مسئولیت دارند تا فرآیند مدنظر را به اجرا در آورده و نتایج خود را گزارش دهند.
۱- بخش اول متشکل از یک مهندس ارشد دواپس است که مسئولیت مدیریت کل تیم را بر عهده دارد. این فرد وظیفه توسعه ساختار و برنامه ریزی فرآیند کلی ساخت نرم افزار را دارد. او همچنین مشخص میکند که اعضای تیم از چه ابزاری برای انجام کارهای خود استفاده میکنند. در حقیقت مهندس ارشد وظیفه دارد تا کل فرآیند را مدیریت کرده و تمام زیرساختهای مورد استفاده را بررسی نماید.
۲-بخش دوم نیز متشکل از تعدادی مهندس دواپس (کارشناس دواپس) بوده که بسته به نوع پروژه، مسئولیتهای متنوعی را بر عهده دارند. بسته به برنامهای که توسط مهندس ارشد طراحی میشود، این افراد مسئولیت دارند تا فرآیند مدنظر را به اجرا در آورده و نتایج خود را گزارش دهند.
مهندس دواپس کیست؟
مهندسان DevOps در اصل میتوانند توسعه دهندگان، ادمینها یا حتی افرادی باشند که سلامت نرم افزار را مورد بررسی قرار میدهند و علاقه به اسکریپت نویسی و همچنین اتوماسیون سازی فرآیند دارند. این افراد روی برخی از موضوعات تسلط دارند که میتواند آنها را از افراد معمولی متمایز کند.
یک مهندس دواپس از چه ابزاری استفاده میکند؟
همانطور که گفتیم، هر توسعه دهنده، ادمین سیستم و آزمایش کننده امنیت میتواند به عنوان یک مهندس دواپس فعالیت کند ولی پیش از آن، نیاز است که مهارتهای مشخصی در کار با ابزارهای خاصی را فرا بگیرد. در ادامه نگاهی خواهیم انداخت به مهارتهایی که یک مهندس DevOps باید از آنها بهرهمند شود.
۱- آشنایی با ابزارهای مدیریت کد در دواپس
یکی از مهمترین ابزارهایی که بسیاری از کسب و کارها تلاش میکنند تا برای هماهنگی بهتر از آن استفاده کنند، گیت (GIT) است. داشتن اطلاعات کافی در خصوص ابزارهای SCM یا Source Code Management برای هر مهندس DevOps بسیار ضروری است. این افراد با تعریفاتی مانند شاخه بندی (Branching) آشنا هستند و میدانند که چگونه باید سورس کد را با ابزارهای یکپارچه سازی مانند Jenkins ادغام کنند تا به این روش، کار را برای اتوماسیون سازی فرآیند تست و پیادهسازی تسهیل کنند. همانطور که گفتیم، از میان ابزارهای SCM موجود در بازار، سامانه کنترل توزیع شده گیت طرفداران پر و پا قرص فراوانی دارند. چرا که در این نوع سیستمها، شما نه تنها میتوانید از یک مخزن از راه دور (Remote Repository) استفاده بکنید، بلکه به یک مخزن محلی (Local Repository) نیز دسترسی خواهید داشت. این مخزن محلی میتواند یک کپی از اطلاعات شما را در خود نگه داشته تا در صورت خرابی مخزن از راه دور، بتوانید به راحتی تمام فایلهای مربوط به پروژه را دوباره از روی هارد توسعه دهندگان نرم افزار بازیابی کنید.
۲- آشنایی با رایانش ابری
یک مهندس دواپس باید تجربه کار با پلتفرمهایی مانند Amazon AWS و یا Google Cloud و همچنین Microsoft Azure را داشته باشد. اطلاع از نحوه کار این ابزار میتواند باعث ساخته شدن یک مهندس DevOps موفق گردد. چرا که افراد بسیار اندکی هستند که مفاهیم زیرساخت به عنوان سرویس یا IaaS و پلتفرم به عنوان سرویس یا Paas را بشناسند و از تفاوت میان اپلیکیشنهای حالت دار (Stateful) و بدون حالت (Stateless) مطلع باشند. نکته اینجاست که یک کارشناس دواپس باید بتواند از میان ابزارهایی که مایکروسافت، گوگل و آمازون در اختیار کاربران قرار میدهند بهینهترین استفاده ممکن را بکند. در اصل وی باید قادر باشد تا از فضای ذخیره سازی، شبکه و پردازش ابری نهایت استفاده را ببرید تا با کمترین هزینه، بیشترین بازده را رقم بزند.
۳- آشنایی با سرویسهای تست اتوماسیون
یک مهندس DevOps باید بتواند مهارت بالایی در استفاده از ابزارهای سنجش نرم افزار مانند Selenium داشته باشد. علاوه بر این مورد، آشنایی با نحوه استفاده از ابزارهای یکپارچهسازی مانند Jenkins نیز میتواند برای یک مهندس دواپس مزیت محسوب شود.
۴- آشنایی با ابزارهای کار بر روی اتوماسیون
همانطور که پیشتر نیز اشاره کردیم، یک مهندس DevOps باید بتواند دانش بالایی در زمینه تغییر نگرش سنتی کسب و کار به یک شیوه مدرن داشته باشد. برای دستیابی به این مهم، نیاز است که شخص حتما بتواند با ابزارهای مدیریت و تغییر یک سیستم اتوماسیون آشنایی کامل داشته باشد. به بیانی دیگر، وی باید بتواند با برنامههایی مانند Puppet، Chef و Ansible کار کند.
۵- آشنایی با معماری میکروسرویس
از آنجایی که امروزه بیشتر کسب و کارها در تلاشند تا ساختار خود را به معماری میکرو سرویس تغییر دهند و همچنین سعی دارند تا از منابع خود به بهینهترین حالت ممکن استفاده کنند، کانتینرها در میان بسیاری از توسعهدهندگان به برنامهای پرطرفدار تبدیل گشتهاند. لذا اگر شخصی قصد دارد که به عنوان یک کارشناس دواپس به فعالیت خود ادامه دهد، باید با برنامههای شبیهساز سیستم عامل مانند Docker آشنایی کافی را داشته باشد. ابزارهایی مانند Kubernetes هستند که کار مدیریت این کانتینرها را راحتتر میسازند.
۶- آشنایی با ابزارهای مانیتورینگ در دواپس
یک مهندس DevOps وظیفه سنگینی در کنترل مداوم نرمافزار دارد و برای انجام این کار، باید از ابزارهای مربوط به این امر استفاده نماید. بهرهگیری از ابزارهای گزارشگیری و مانیتورینگ مانند Splunk و Nagios میتواند آنها را در این امر یاری نماید.
چه مواردی باعث تبدیل شدن به یک مهندس دواپس موفق میشود؟
حال که با تعریف مهندس DevOps آشنا شدیم و دریافتیم که افرادی که این مسئولیت را به عهده میگیرند معمولا از چه ابزاری استفاده میکنند، وقت آن است که ببینیم یک شخص چگونه میتواند در زمینه دواپس وارد شده و پیشرفت کند.
۱- توانایی کار با لینوکس و اسکریپت نویسی
یک مهندس DevOps باید مهارت بالایی در کار با سیستم عامل لینوکس داشته باشد و حداقل به یک زبان اسکریپت نویسی تسلط داشته باشد. علاوه بر این، وی باید قادر باشد تا مفهوم زیرساخت به عنوان کد یا Infrastructure as Code یا IaC را درک نماید.
۲- تجربه کار در زمینه رایانش ابری
شاید بتوان اینگونه گفت که آشنایی با سیستمهای رایانش ابری برای یک مهندس دواپس از نان شب هم واجبتر است! همچنین اگر یک شخص تعاریف و توضیحات اولیه مربوط به DevOps را درک نکند، هرگز این امکان وجود نخواهد داشت که در این زمینه به موفقیتی برسد. پس هر کسی که قصد دارد وارد دنیای دواپس شود، پیش از هر چیزی باید اصول آن را درک نماید.
۳- توانایی انجام کار گروهی
همانطور که گفتیم، بخش DevOps در هر سازمانی متشکل از یک تیم است. لذا همانند سایر قسمتها، این نیاز احساس میشود که شخص بتواند در کنار سایر اعضا به خوبی فعالیت کرده و اهداف تیم را بر اهداف شخصی مقدم بشمارد.
۴- توانایی یکپارچه سازی مداوم و تحویل همزمان
با توجه به ابزارهایی که در اختیار یک مهندس دواپس قرار میگیرد، این امکان برای وی فراهم است که بتواند تا تغییرات مدنظر را در لحظه اعمال کرده و گزارشات مربوط به آن را به اطلاع مهندس ارشد برساند. تحت این شرایط توسعهدهندگان میتوانند به صورت مستمر، کدهایی که توسعه دادهاند را در کنار سورس اصلی قرار داده و در صورت وجود مشکل یکپارچگی، آن را شناسایی کنند.
۵- کار با ابزارهای مختلف دواپس
همانطور که در بالا هم اشاره کردیم، یک مهندس DevOps باید بتواند ابزارهای متفاوتی را به کار بگیرید تا از این طریق مدیریت بهتری بر کل مجموعه داشته باشد. لیستی از ابزارهای مورد استفاده توسط یک مهندس دواپس را در بالا بررسی کردیم.
شرح وظایف یک مهندس دواپس چیست؟
از آنجایی که هر شخص که در یک کسب و کار مشغول فعالیت است شرح وظایف مشخصی دارد، در ادامه قصد داریم کارهایی که از یک مهندس DevOps در یک شرکت انتظار میرود را برشماریم.
از آنجایی که امروزه ارائه دهندگان سرویسهای ابری از تنوع سرویس بالایی برخوردار هستند، یک مهندس دواپس باید بتواند بسته به نوع پروژه، بهترین سرویس را برگزیده و به صورت منظم آنها را تحت کنترل و مدیریت قرار دهد.
موضوع دوم این است که بسته به معماری داخلی که برای نرمافزار استفاده میشود، مهندس DevOps باید توانایی کار با چندین ابزار متنوع را داشته باشد. علاوه بر این، از او انتظار میرود تا این میزان تواناییاش را گسترش داده و ابزارهای گوناگونی را بسته به شرایط استفاده کند.
هیچ کاری مرتبط با اتوماسیونسازی بدون داشتن دانش کافی در زمینه برنامهنویسی انجامپذیر نیست. لذا کارشناس دواپس باید بتواند با دانشی که در خصوص یک زبان برنامهنویسی مانند Node.js یا Python دارد، فرآیند اتوماسیون سازی سیستم را در مسیر درستی قرار بدهد.
هدف نهایی از استخدام مهندس DevOps، این است که با سرعت بخشیدن به کارها و مدیریت بهتر، فرآیند تولید و اجرا سرعت بیشتری پیدا کرده و مشتری رضایت بیشتری داشته باشد. لذا مهندس دواپس باید با شرکت در جلسات درون و برون سازمانی، نهایت تلاش خود را برای دستیابی به این مهم انجام دهد.
از آنجایی که امروزه ارائه دهندگان سرویسهای ابری از تنوع سرویس بالایی برخوردار هستند، یک مهندس دواپس باید بتواند بسته به نوع پروژه، بهترین سرویس را برگزیده و به صورت منظم آنها را تحت کنترل و مدیریت قرار دهد.
موضوع دوم این است که بسته به معماری داخلی که برای نرمافزار استفاده میشود، مهندس DevOps باید توانایی کار با چندین ابزار متنوع را داشته باشد. علاوه بر این، از او انتظار میرود تا این میزان تواناییاش را گسترش داده و ابزارهای گوناگونی را بسته به شرایط استفاده کند.
هیچ کاری مرتبط با اتوماسیونسازی بدون داشتن دانش کافی در زمینه برنامهنویسی انجامپذیر نیست. لذا کارشناس دواپس باید بتواند با دانشی که در خصوص یک زبان برنامهنویسی مانند Node.js یا Python دارد، فرآیند اتوماسیون سازی سیستم را در مسیر درستی قرار بدهد.
هدف نهایی از استخدام مهندس DevOps، این است که با سرعت بخشیدن به کارها و مدیریت بهتر، فرآیند تولید و اجرا سرعت بیشتری پیدا کرده و مشتری رضایت بیشتری داشته باشد. لذا مهندس دواپس باید با شرکت در جلسات درون و برون سازمانی، نهایت تلاش خود را برای دستیابی به این مهم انجام دهد.
بازار کار برای مهندسان دواپس چگونه است؟
طبق آمار بیش از ۸۱ درصد کسب و کارهای بزرگ در سراسر دنیا از سیستمهای DevOps استفاده میکنند. این عدد در خصوص کسب وکارهای کوچک و متوسط چیزی در حدود ۷۰ درصد است. این بدان معنی است که بیش از ۲۰ میلیون شغل در سرتاسر دنیا برای مهندسان دواپس موجود است. از آنجایی که سالانه تقاضا برای این شغل به میزان ۲۲ درصد در حال افزایش است، میتوان نتیجه گرفت که در آینده کمپانیهای بیشتری به سمت استفاده از مهندسان DevOps روی خواهند آورد.
درآمد یک مهندس دواپس چقدر است؟
همانطور که در بالا اشاره داشتیم، کار کارشناسان دواپس یک کار پر زحمت و حساس است. علاوه بر آن، این کار نیازمند مهارتهای گوناگون در بسیاری از حوزهها و همچنین تجربه کاری طولانی میباشد. در کشورهای اروپایی، یک مهندس دواپس میتواند به صورت میانگین چیزی در حدود ۳۵ هزار یورو درآمد داشته باشد. این درحالی است که ماکزیمم میزان دریافتی یک مهندس DevOps در این کشورها چیزی در حدود ۴۲ هزار یورو بیان شده است.
از سویی دیگر یک مهندس دواپس در کشور آمریکا حقوقی ۱۲۲ هزار دلاری در سال دریافت میکند. البته باید به این نکته توجه داشت که بسته به سابقه کار و میزان مهارت، این عدد میتواند تفاوت داشته باشد.
از سویی دیگر یک مهندس دواپس در کشور آمریکا حقوقی ۱۲۲ هزار دلاری در سال دریافت میکند. البته باید به این نکته توجه داشت که بسته به سابقه کار و میزان مهارت، این عدد میتواند تفاوت داشته باشد.