تعریف مهندسی DevOps و نحوه آموختن آن
1398/01/28 17:22 , میلاد صاحب نظر

تعریف مهندسی DevOps و نحوه آموختن آن

DevOps یک فرهنگ و فلسفه است که به طور خلاصه، هدف آن متحد ساختن سیلوهای سابق توسعه (افرادی که برنامه‌های رایانه‌ای می‌ساختند) و عملیات (افرادی که اطمینان حاصل می‌کنند آن برنامه‌ها به صورت صحیح عمل کنند) در یک تیم است.

این تیم از روش‌های یکپارچه‌سازی پیوسته، تحویل پیوسته و تست استفاده می‌کند تا پیشرفت‌های قابل توسعه برای مجموعه کدهای درون یک محصول (برنامه نرم‌افزاری) منتشر کنند.

یک مهندس DevOps باید نه تنها ابزارها، بلکه همچنین فلسفه و فرآیندهایی که باعث می‌شوند DevOps عملی شود را نیز درک کند.

در نتیجه، مهندس DevOps شخصی است که دارای مهارت‌های ضروری برای خدمت در چنین تیمی باشد. اما همانند خیلی چیزهای دیگر، تعریف دقیق مهندس DevOps را به سختی می‌توان بیان کرد – و برخی افراد ادعا می‌کنند که واژه "مهندس DevOps" اصلاً یک توضیح شغلی معنادار و صحیح نیست.

با این حال، روز به روز شرکت‌های بیشتری می‌گویند که قصد دارند مهندسان DevOps استخدام کنند و حاضر هستند حقوق خوبی نیز برای این شغل بپردازند. بیایید بررسی کنیم این شرکت‌ها خواهان چه تخصصی هستند.

تعریف مهندس DevOps

پیاده‌سازی فلسفه DevOps به این معنا نیست که قرار است کل تیم‌های توسعه و عملیات خود را با تعداد زیادی کارکنان DevOps تعویض کنید. هر کارمند مهارت متفاوتی دارد. باید برنامه‌نویسان، مدیران سیستم، DBAها و غیره همه با هم کار کنند.

وقتی شرکت‌ها از واژه مهندس DevOps استفاده می‌کنند، به دنبال شخصی هستند که بتواند تمام این نقش‌ها را با هم مرتبط و متحد کند. وبلاگ شرکت Altexsoft (یک شرکت مهندسی نرم‌افزار) نقش DevOps را این‌گونه توصیف می‌کند:

بعضی‌ها این فرد را به عنوان یک مدیر سیستم که می‌داند چگونه باید کد بنویسد یا یک توسعه‌دهنده که دارای مهارت‌های مدیریت سیستم است، تصور می‌کنند. به نوعی، هر دو تعریف‌ها درست هستند.

وظیفه اصلی یک مهندس DevOps این است که جریان کاری تحویل پیوسته و یکپارچه‌سازی پیوسته را معرفی کند، که این امر نیاز به درک ابزار DevOps و تسلط به چندین زبان‌ برنامه‌نویسی دارد.

تعریف مهندس DevOps

تعریف مهندس DevOps

یا، همان‌طور که توسعه‌دهنده ایگور کانتور در یک پست وبلاگی گفته است: مهندس DevOps شخصی است که چرخه عمر توسعه نرم‌افزار را درک کرده و ابزارها و پردازش‌های مهندسی نرم‌افزار را برای حل مشکلات کلاسیک و قدیمی عملیات به کار می‌گیرد.

کلید کار این است که فرد علم و تجربه کافی در هر دو سمت dev و ops داشته باشد تا بتواند چگونگی کار کردن این دو با یکدیگر را درک کند – علاوه بر این مهارت‌های بخش احساسی  کمک می‌کند تا اعضای متخصص‌تر تیم‌ها با یکدیگر ارتباط برقرار کنند و دنیای ورای سیلوی خود را درک کنند.

آموزش مهندسی DevOps

یک صحبت در جاهایی مانند Reddit که حرفه‌ای‌های IT در آن‌ها هستند وجود دارد که می‌گوید: چیزی به نام مهندس DevOps مقدماتی وجود ندارد.

این حرف به این دلیل است که وسعت مهارت‌های فنی‌ای که شرکت‌ها انتظار دارند مهندسان DevOps داشته باشند خیلی فراتر از علمی است که یک شخص تازه فارغ‌التحصیل شده از دانشگاه یا یک تازه‌کار دارد.

روشی که با استفاده از آن می‌توان برای نقش مهندس DevOps آموزش دید، از طریق تجربه در حین کار است. به گونه‌ای که توسعه‌دهندگان مهارت‌های مرتبط با بخش عملیات را می‌آ‌موزند و برعکس.

همان‌طور که جفری لی در Hacker Noon بیان کرد:

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

آن‌ها به این دلیل استخدام می‌شوند که علم و تسلط زیادی در آن زمینه‌ها دارند و از تجارب زیادی برخوردار هستند. در LinkdIn تبلیغ شغلی پیدا نمی‌کنید که برای استخدام، به کمتر از ۵ سال تجربه و سابقه کار نیاز داشته باشید.

مهارت‌های مهندس DevOps

چون هیچ مسیر آموزشی رسمی‌ای برای مهندسی DevOps وجود ندارد، به این معنا نیست که نمی‌توانید شغل خود را به سمت شغل مهندسی DevOps هدایت کنید.

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

ایگور کانتور یک مجموعه کامل در مورد تکنولوژی‌ها و پلتفرم‌های کلیدی که برای تبدیل به مهندس DevOps شدن باید بیاموزید ارائه داده است. او این مجموعه را به دسته‌های زیر تقسیم کرده است:

  • بنیادین: مدیریت لینوکس، پایتون و AWS یا دیگر پلتفرم‌های ابری
  • پیکربندی: Terraform و Anisble
  • نسخه بندی: Git و GitHub
  • بسته بندی: Docker
  • پیاده‌سازی: Jenkins
  • اجرا: Amazon ECS و Kubernetes
  • نظارت: ELK stack

مسلماً، لیست بلند بالا و بلند پروازانه‌ای است‌! به هر حال، اگرچه تسلط بر تمام این پلتفرم‌ها یک کار غیر واقع‌گرایانه است، اما حداقل باید بدانید که آن‌ها چگونه کار می‌کنند. مهم‌تر اینکه، باید بدانید که هر وقت نیاز بود، چگونه می‌توانید بیشتر در مورد آن‌ها بیاموزید.

مهارت‌های مهندس DevOps

مهارت‌های مهندس DevOps

یک مهندس DevOps بودن فراتر از آشنایی با محصولات یا تکنولوژی‌های خاص است – و بالاخره، علوم همگام با توسعه و پیشرفت صنایع، تغییر می‌کنند.

به همین دلیل آشنایی با فلسفه DevOps و تسلط بر چرخه عمر برنامه‌ها بسیار مهم است. این بدان معنا است که شما باید فرآیند‌های تحویل پیوسته و یکپارچه‌سازی پیوسته (CI /CD) که قلب مهندسی DevOps هستند را همراه با تست نرم‌افزار که همگام با آن‌ها صورت می‌گیرد را درک کنید.

و همچنین مهارت‌های احساسی  را نیز فراموش نکنید: آن‌ها برای نقشی که در مرکز تغییر فرهنگ به سمت پیاده‌سازی سریع و مکرر نرم‌افزار و چرخه انتشار که پلی بین توسعه‌دهندگان و عملیات ایجاد می‌کند (که قبلاً ممکن است رابطه خصمانه با هم داشته باشند) بسیار حیاتی هستند.

مایک دی کالی مؤسس Cybric و مدیرعامل سابق Yahoo در یک پست در وبلاگ TechBeacon به طور مختصر بیان کرده است که: امروزه بیش از هر زمان دیگری سازمان‌ها به مهندسان نرم‌افزاری نیاز دارند که بر مهارت‌های احساسی مانند دلسوزی، کمال و انعطاف‌پذیری تسلط داشته باشند و به پرورش موج جدیدی از DevOps کمک کنند.

اگر سؤالات مصاحبه‌ای آنلاین در مورد مهندسی DevOps را بررسی کنید به خوبی متوجه خواهید شد که در این نقش چه انتظاری از شما خواهند داشت.

مسلماً، سؤالات در مورد تکنولوژی‌های خاص پرسیده می‌شوند، اما همچنین انتظار می‌رود که بتوانید توضیح دهید تمام آن پلتفرم‌ها و ابزارها چگونه با یکدیگر کار می‌کنند، همچنین باید به کارفرمایان بالقوه نشان دهید که فلسفه و فرآیندهای DevOps را درک کرده‌اید.

اگر به دنبال یک راهنمای سازمان‌یافته در مورد مجموعه مهارت‌هایی که باید داشته باشید تا بتوانید خودتان را یک مهندس DevOps بدانید هستید، بهتر است امتحان AWS Certified DevOps Engineer از آمازون را بررسی کنید.

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

راهنمای مطالعه Udemy می‌گوید که این علم به شما کمک می‌کند تا چگونگی توسعه یک Ci/CD Pipeline با کارایی کاملاً در AWS با استفاده از ابزارهای AWS Developer را بیاموزید.

نقش‌ها و مسئولیت‌های مهندسی DevOps

پس یک مهندس DevOps روزانه چه کارهایی انجام می‌دهد؟ Altexsoft می‌گوید که لیست مسئولیت‌های مهندس DevOps به این شرح است:

  • نوشتن مشخصات و مستندات برای ویژگی‌های سمت سرور
  • مدیریت CI/CD
  • نوشتن اسکریپت CI/CD
  • ارزیابی و نظارت بر عملکرد
  • نگهداری و مدیریت زیر ساختار IT (شامل سخت‌افزار، نرم‌افزار، شبکه، حافظه، ابزارهای مجازی و راه دور و حافظه اطلاعات ابری)

مسلماً، هیچ دو کاری شبیه به یکدیگر نیستند و نقش یک مهندس DevOps در شرکت‌های مختلف، متفاوت است. بزرگی سازمان ممکن است تأثیر مستقیم بر نقش مهندس DevOps داشته باشد.

در یک کسب و کار کوچک، وظایف شما ممکن است در چرخه عمر شغل DevOps شما تغییر کنند، در نتیجه در یک تیم بزرگ‌تر ممکن است در نهایت وظیفه شما نظارت و تمرکز روی یک بخش کوچک از آن باشد.

اگر می‌خواهید متوجه شوید که کارفرمایان انتظار دارند یک مهندس DevOps چه کاری انجام دهد، بهتر است قالب‌های توضیح شغل مهندس DevOps در سایت‌هایی مانند Dice، Workable و ZipRecruiter را بررسی کنید. با این کار متوجه خواهید شد که باید چه کارهایی در این شغل انجام دهید.

شغل‌های مهندس DevOps

شغل‌های مهندس DevOps در حال توسعه و ترویج هستند. TechTarget می‌گوید که گسترش شغل‌های DevOps به خاطر فراگیر شدن فلسفه DevOps است که این فلسفه به این دلیل به وجود آمد که سازمان‌ها می‌خواهند برنامه‌های نرم‌افزاری آن‌ها خیلی سریع‌تر به دست مشتریان داخلی و خارجی برسد.

آمارها بر اساس ترکیب حقوق متوسط و رضایت شغلی نشان می‌دهند که شغل‌های DevOps در رتبه ششم بهترین شغل‌ها در ایالات متحده قرار دارند.

منبع: Infoworld

 مطالب مرتبط

 مقدمه ای بر زبان برنامه نویسی #C و پلتفرم NET Framework.
 مقدمه ای بر NLog در هسته ASP.NET
 طبقه بندی زبان های برنامه نویسی
۷ زبان توسعه بازی Unity برای آموختن: کدام بهترین است؟
 LINQ(زبان جستجوی یکپارچه)
برنامه نویسی شیءگرا چیست؟

از آخرین دوره های آموزشی و تخفیف ها مطلع شوید

با تکمیل فرم زیر ، از اخبار و اطلاعات به روز برنامه نویسی و تکنولوژی عقب نمانید

آخرین مطالب

آموزش جامع SQL Server (جلسه ۱۲)
آموزش جامع SQL Server (جلسه ۱۲)

دستور UPDATE در SQL Server برای تغییر داده‌های موجود در یک جدول، از دستور UPDATE به شکل زیر استفاده ...

آموزش جامع SQL Server (جلسه ۱۵)
آموزش جامع SQL Server (جلسه ۱۵)

دستور DROP TABLE در SQL Server گاهی، لازم است یک جدول که دیگر استفاده‌ای ندارد را حذف کنید. برای ...

آموزش جامع SQL Server (جلسه ۳۵: Window Functionها – بخش ۲)
آموزش جامع SQL Server (جلسه ۳۵: Window Functionها – بخش ۲)

بخش اول از آخرین مبحث دوره جامع آموزش SQL Server در جلسه قبلی بررسی شد. این مبحث که ...

آخرین دیدگاه ها

دیدگاه خود را درباره این پست بنویسید

فرم ارسال نظرات