یکی از مهمترین کارهایی که در فرایند توسعه اپلیکیشنهای مدرن انجام میشود، مدیریت فرایند استقرار اپلیکیشنها و اصطلاحا زنده نگهداشتن آنهاست. مهندسین و متخصصین حوزه DevOps در عملی کردن این موضوع اصلیترین نقش را ایفا کرده و به همین دلیل بخشی بسیار ضروری در هر کسب و کاری هستند.
به همین دلیل است که در دنیای بازار کار نیز حقوق این دسته از افراد به نسبت میانگین درآمد شغلهای حوزه تکنولوژی بیشتر است.
در این مطلب از وبلاگ همروش قصد داریم شما را با مسیر تبدیل شدن به یک مهندس دوآپس آشنا کرده و فرایند قدم به قدم آن را دنبال کنیم.
دواپس (devops) چیست؟
دواپس ترکیبی از انجام دو کار یعنی Development (توسعه) و Operation (عملیات) است. در فرایند دواپس تلاش میشود تا با ترکیب کردن ابزارهای این دو حوزه، در سریعترین زمان ممکن یک اپلیکیشن یا سرویس را ارائه دهیم و آن را در دنیای اینترنت زنده نگهداریم. از این جهت میتوان دواپس را یکی از حیاتیترین بخشهای هر کسبوکاری دانست.
با بهوجود آمدن دواپس تا حد بسیار زیادی شکاف میان تیمهای توسعه و تیمهای عملیات که مسئولیت استقرار اپلیکیشن و مدیریت زیرساختها را داشتند کمتر شد و به همین دلیل یک تجربه یکپارچه و همکاری تیمی شکل گرفت که کمک میکرد تا اپلیکیشنها با سرعت بالاتری توسعه و استقرار یابند.
مهندس دواپس چه کاری انجام میدهد؟
یک مهندس دواپس به زبان ساده وظیفه دارد تا فرایند توسعه و استقرار اپلیکیشنها را آسانتر و سریعتر بکند. برای اینکه بهتر وظیفه یک مهندس دواپس را درک کنید نیاز است که روشهای قدیمی که برای توسعه و استقرار اپلیکیشن استفاده میشد را به یاد بیاورید.
پیش از بهوجود آمدن دواپس، توسعهدهندگان نرمافزار بهصورت مستقل یک اپلیکیشن را ایجاد میکردند و برای منتشر یا مستقر کردن آن (زنده کردن آن در اینترنت) اپلیکیشن را به تیم عملیات و مهندسین IT ارسال میکردند تا آن را روی سرور قرار دهند.
همانطور که در این روش مشاهده میکنید دو تیم به صورت جداگانه و مستقل از همدیگر عملیاتها را پیش میبردند و این موضوع ناهماهنگیها و مشکلات بسیار زیادی را بوجود میآورد.
حال کاری که مهندسین و متخصصین DevOps باید انجام دهند این است که این فضای خالی میان دو تیم را پر کرده و فرایند توسعه و عملیات را یکپارچه کنند. این کار نیز با استفاده کردن از ابزارهای مختلفی صورت میگیرد که در ادامه با آنها آشنا خواهید شد.
چرا دواپس مهم است؟
کمتر شدن فرایندهای دستی، تحویل سریعتر نرمافزار، یکپارچه کردن تیمهای توسعه و عملیات، کاهش زمان انتظار و… همگی جزو اصلیترین دلایلی هستند که منجر میشوند شرکتهای مختلف از تکنولوژی DevOps استفاده کنند.
از طرفی دیگر با ظهور معماریهای جدید توسعه نرم افزار مانند میکروسرویس، توسعه و استقرار آنها با استفاده کردن از روشهای سنتی بسیار سخت و خطاپذیر است، اما دواپس به شما کمک میکند تا در مواجه با چنین اپلیکیشنهایی به سرعت فرایند استقرار آن را شروع کنید.
مزایا و ویژگیهای بسیار زیادی دیگری نیز وجود دارد که در نهایت همگی با هم منجر میشوند تا دواپس به یک تکنولوژی بسیار ضروری در کسب و کارها تبدیل شود.
مسیر یادگیری دواپس
حال که به صورت کلی با چیستی دواپس و ضرورت استفاده از آن در کسب و کارهای مختلف آشنا شدید، نیاز است تا به صورت قدم به قدم با چگونه تبدیل شدن به یک مهندس دواپس آشنا شویم. ما تلاش میکنیم تا به صورت جامع، استانداردترین مواردی که برای تبدیل شدن به DevOps Engineer نیاز دارید را در ادامه ذکر کنیم.
قدم اول: یادگیری گیت
گیت از جمله مهمترین و ضروریترین ابزارهایی است که متخصصین DevOps باید از آن استفاده کنند. گیت یک ابزار برای مدیریت نسخههای مختلف از یک اپلیکیشن است و برای ردیابی و زیر نظر گرفتن تغییرات یک اپلیکیشن، انجام کارهای تیمی در فرایند توسعه اپلیکیشن، استقرار و موارد بسیاری دیگر کاربردی و ضروری است.
در فرایند یادگیری گیت مطمئن شوید که با دستورات مقدماتی گیت آشنا میشوید و با مفاهیمی مانند Pull Request، Branching و Merging به صورت عملی کار خواهید کرد.
منابع آموزشی:
قدم دوم: یادگیری یک زبان برنامهنویسی
به عنوان یک متخصص دواپس، نیاز است که حداقل روی یک زبان برنامهنویسی تسلط داشته باشید. بیشتر استفاده از این زبان برنامهنویسی نیز در فرایند خودکارسازی و نوشتن اسکریپتهای مرتبط با آن است. بنابراین باید یک زبان برنامه نویسی را انتخاب کنید که در این مسیر بتواند به شما کمک بکند.
پایتون، Go و جاوا اسکریپت سه زبان برنامه نویسی هستند که بیشتر متخصصین دواپس روی یکی از آنها تسلط دارند. هر کدام این زبانها توانایی کافی برای توسعه فرایندهای خودکارسازی را دارند اما پایتون در این زمینه بهتر از بقیه موارد عمل میکند.
منابع آموزشی:
قدم سوم: یادگیری لینوکس و اسکریپتنویسی
یکی دیگر از اساسیترین موضوعات پایهای که مهندسین دواپس باید روی آن تسلط داشته باشند سیستم عامل لینوکس است. از آنجایی که بیشتر سرورها از یکی از توزیعهای لینوکس استفاده میکنند شما باید به خوبی بتوانید با محیط خط فرمان لینوکس کار بکنید و در این زمینه مشکلی نداشته باشید.
یادتان باشد که ضروریترین موارد لینوکس مانند کار با فایل سیستم، شبکه، مدیریت کاربران، مجازیسازی، POSIX و… را به خوبی یاد بگیرید.
همچنین برای بهبود تواناییتان در نوشتن فرایندهای خودکارسازی شده نیاز است تا زبان Bash را در محیط لینوکس یاد بگیرید تا بتوانید در محیط لینوکس به خوبی اسکریپتنویسی کنید. دانستن یک زبان برنامه نویسی مانند پایتون و همچنین Bash شما را به یک فرد حرفهای در زمینه اسکریپتنویسی برای توسعه فرایندهای خودکارسازی شده تبدیل میکند.
منابع آموزشی:
- آموزش کلی سیستم عامل
- آموزش اسکریپتنویسی در محیط لینوکس
- آموزش اسکریپتنویسی با Microsoft Powershell
- آموزش دستورات لینوکس
قدم چهارم: یادگیری شبکه و امنیت
به عنوان یک مهندس دواپس نیاز است تا با مقدماتیترین موضوعات دنیای شبکه آشنا شوید. این موضوع به شما کمک میکند تا با درک بهتری در روبرو شدن با چالشها و مشکلات، آنها را حل کنید. برای مثال یاد بگیرید که شبکههای کامپیوتری چگونه کار میکنند، DNS چیست، مدل OSI چیست، منظور از IP Adress یا Port چیست و… .
همچنین یادگیری مقدماتیترین مفاهیم دنیای امنیت و چگونگی پیکربندی فایروال به شما کمک میکند تا بهتر در مدیریت فرایندهای عملیاتی شرکت داشته و در هنگام به وجود آمدن مشکلات با دید بازتری به راهحلهای آن فکر کنید.
منابع آموزشی:
قدم پنجم: یادگیری مدیریت سرور
مدیریت سرور به تمام فرایندهایی گفته میشود که شما در آن زیرساختهای سرور را مانیتور، بررسی و تعمیر میکنید تا در نهایت سرور بتواند به خوبی و با اطمینان بالا اپلیکیشن را اجرا کند.
برخی از اهداف اصلی که در فرایند مدیریت سرور پیش میرود عبارت از موارد زیر است:
- کاهش نرخ Downtime و از کار افتادن سرور
- برقراری امنیت حداکثری و کاهش احتمالات نفوذ
- مقیاسدهی به سرور
در این مسیر نیاز است که با مفاهیمی مانند کشینگ سرور، پروکسی سرور، وب سرور و انواع آن و… آشنا شوید.
منابع آموزشی:
قدم ششم: یادگیری کانتینرها
حال به یکی از اساسیترین ابزارهای مهندسین DevOps میرسیم. کانتینرها در واقع واحدهای نرمافزاری یکپارچهای هستند که هر چیزی که برای اجرا اپلیکیشن نیاز است را در خود نگهداری میکنند. با استفاده از این تکنولوژی اجرا و استقرار اپلیکیشنها با سرعت بسیار بیشتری انجام میشود.
داکر محبوبترین و پر استفادهترین تکنولوژی کانتینر است که در بیشتر شرکتها استفاده میشود و انتظار میرود که تمام متخصصین حوزه دواپس بتوانند به خوبی با آن کار کنند.
بنابراین شما در این قدم نیاز است تا به خوبی با داکر آشنا شوید و یاد بگیرید چگونه با استفاده از داکر و سرویسهای مختلفی که این تکنولوژی ارائه میدهد کار بکنید.
منابع آموزشی:
قدم هفتم: یادگیری Container Orchestration
ارکستراسیون کانتینر تکنیکیست که با استفاده از آن میتوانید فرایند استقرار، مدیریت، مقیاسدهی و شبکهسازی در کانتینرها را خودکارسازی کنید.
هر جایی که شما از معماری کانتینر استفاده کنید خواهید توانست که از تکنولوژیهای Container Orchestration استفاده کنید. مهمترین ابزاری که در این زمینه نیز مورد استفاده قرار میگیرد کوبرنتیز نام دارد که شما در فرایند تبدیل شدن به یک مهندس دواپس حتما باید به خوبی آن را یاد بگیرید.
کوبرنتیز چیست، کوبرنتیز چگونه کار میکند، کلاسترها در کوبرنتیز به چه شکلی هستند، فرایند استقرار و مدیریت نرم افزار با استفاده از کوبرنتیز به چه شکلی است و… از جمله مواردیست که باید در فرایند یادگیری کوبرنتیز به خوبی با آنها آشنا شوید.
منابع آموزشی:
قدم هشتم: یادگیری CI/CD
CI/CD مخفف Continuous Integration و Continuous Deployment است که در واقع شیوهای برای خودکارسازی فرایند تحویل و استقرار اپلیکیشنها به حساب میآید. برای مثال تصور کنید که شما یک ویژگی از اپلیکیشن را بروزرسانی کردهاید و حال میخواهید در سریعترین زمان ممکن این ویژگی در اپلیکیشن نهایی اعمال شود، در این حالت میتوانید با استفاده از این تکنیکها، کل فرایند و چرخه را به صورت خودکار پیش ببرید.
مقاله پیشنهادی: CI/CD چیست؟
البته هر کدام این موارد همانطور که از نامشان پیداست بخشی از این چرخه را مدیریت میکنند. CI وظیفه ادغام کردن تغییرات جدید را برعهده دارد و CD در بخش استقرار و دیپلوی کردن نقش دارد.
پیادهسازی این متدها یکی از اساسیترین وظایف یک مهندس DevOps است و در نتیجه باید به خوبی آنها را یاد گرفته و در پروژههای عملی از آنها استفاده کنید.
منابع آموزشی:
قدم نهم: یادگیری مانیتورینگ
منظور از مانیتورینگ، زیر نظر گرفتن تمام پروسه توسعه و استقرار اپلیکیشنهاست: از برنامهریزیهای اولیه و توسعه تا ادغام و تستینگ و استقرار. در این پروسه شما باید با استفاده از سرویسهایی که به صورت بلادرنگ یا Real-Time وضعیت کلی اپلیکیشن، سرویسها و زیرساختها را نشان میدهند، همه چیز را زیر نظر داشته باشید.
مانیتورینگ زمانی اهمیت بالایی پیدا میکند که اپلیکیشن ما در مرحله اجرا باشد، این دقیقا همان زمانی است که ما به مشتریان سرویس میدهیم. در این حالت باید مدام مراقب باشیم که اپلیکیشن یا زیرساختها با مشکلی روبرو نشوند.
دو ابزار کاربری که در زمینه مانیتورینگ به شما کمک خواهند کرد، Prometheus و Grafana است که شما به عنوان مهندس دواپس باید حداقل کار با یکی از این ابزارها را بلد باشید.
منابع آموزشی:
قدم دهم: یادگیری استفاده از سرویسدهندگان ابری
سرویسهای بسیار زیادی هستند که به عنوان فراهم کننده ابری شناخته میشوند. استانداردترین این موارد شامل AWS، Azure و Google Cloud میشود اما در ایران نیز وبسایتها و شرکتهای بسیاری هستند که این امکانات را فراهم میکنند.
به عنوان یک مهندس دواپس حتما باید کار با یکی از فراهم کنندگان را به خوبی یاد بگیرید تا در مراحل نهایی با سرویسهای مختلفی که ارائه میدهند آشنایی کامل داشته باشید.
منابع آموزشی:
جمعبندی
در این مطلب از وبلاگ همروش ما شما را با مسیر تبدیل شدن به یک متخصص دواپس به صورت قدم به قدم آشنا کردیم. همچنین با تعاریف اولیه DevOps آشنا شدیم و سعی کردیم تا از اهمیت و ضرورتهای DevOps در کسب و کارهای مختلف بگوییم.
یک نظر
[…] البته بررسی کامل این موضوع نیاز به یک مطلب دیگه داره که حتما در آینده خواهم نوشت. اما توی این مطلب قصد داشتم شما رو با یک نمونه کار خودم آشنا کنم که براساس همان قالب محتوایی Roadmap نوشته شده: چطور مهندس دواپس شویم؟ […]