در تماس های شما عزیزان با تیم ALM-DevOps همیشه درخواست های زیادی مبنی بر ارائه یک نقشه راه در زمینه DevOps مطرح شده بود، جهت پاسخگویی به این نیاز در این سند تلاش شده با توجه به شرایط موجود در ایران و ترتیب اجرای موارد، یک Roadmap بهینه ارائه گردد. در این سند هم به نیازهای سازمان و هم به نیازهای مهندسین دواپس توجه شده است.
نقطه شروع دواپس دوره DevOps Fundamentals می باشد، شما تمامی اطلاعات لازم جهت آشنایی با دواپس و نحوه پیاده سازی آن را فرا در اختیار خواهید داشت، چه به عنوان شخص و چه به عنوان سازمان.
جهت آشنایی بیشتر شما با بازار کار دواپس و جزئیات کارهای موجود و نحوه تحلیل آنها در دو بخش وظایف دواپس و بررسی موقعیت های شغلی DevOps در ایران و بررسی موقعیت های شغلی DevOps در خارج از ایران به بررسی موقعیت های شغلی مرتبط با دواپس در ایران و خارج از ایران پرداخته شده است.
نقشه راه ارائه شده توسط تیم ALM-DevOps با توجه به شرایط خاص ایران و عدم تمایل و یا امکان پرداخت هزینه نرم افزارها از طرف شرکت های ایرانی طراحی شده است. مهم ترین نکته قابل اشاره در مورد تمامی این نقشه ها متغیر بودن ترتیب اجرای گام هاست و عامل تعیین کننده این موضوع وضعیت جاری شما در شرکتی در آن فعال هستید (به عنوان یک مهندس دواپس)، و یا نوع فعالیت و محصولات شرکت شما است. (به عنوان مدیر)
آشنایی با مسیر یادگیری DevOps پیشنهادی تیم ALM-DevOps
می توانید از اینجا فایل مسیر یادگیری دواپس را دانلود بفرمایید. دواپس شامل فرهنگ و فرآیند و ابزار می گردد و ترتیب موارد قابل تغییر نیست، موارد زیر بر همین اساس تنظیم شده اند.
به ضمیمه این مقاله ۶ مثال از رودمپ های دواپس موجود در اینترنت ارائه شده است.
گام اول در یادگیری و اجرای دواپس تشریح ابعاد و مفهوم دواپس است تا شما در تعریف اولیه این مفهوم دچار مشکل نباشید. بررسی یکی از دوره های اصول دواپس موجود در اینترنت و یا تهیه دوره آموزش اصول DevOps به صورت ویدیو ضبط شده با کمترین هزینه است، همچنین بخش هایی از این دوره جهت آشنایی شما با ابعاد اصول دواپس در بخش آموزش رایگان دواپس قابل دسترسی است. در صورت نیاز شما می توان این دوره را به شکل از راه دور و با توجه به نیاز سازمان شما برگزار نمود.
مرحله دوم: Agile & Scrum
این مرحله شامل آموزش اجرای اجایل و اسکرام در تیم شما است و استفاده از اجایل جزء اصول پایه ایی دواپس است.
مرحله سوم: Network
- Network+: در زمینه شبکه به حداقل دانش در سطح مدرک نتورک پلاس نیاز است.
- سیستم عامل های Windows Server: در این سیستم عامل برای اسکریپت نویسی از زبان Powershell استفاده می گردد و نیاز است بر این زبان مسلط گردید،
- سیستم عامل لینوکس: دوره های اصلی و پایه در زمینه لینوکس شامل Lpic1 و Lpic2 می باشد، که نیاز شما حتما این دو دوره را گذرانده باشید، در لینوکس زبان اصلی اسکریپت نویسی Bash می باشد و نیاز است بر این زبان مسلط باشید، در دوره های Lpic به اندازه کافی به این موضوع اشاره می گردد.
مرحله چهارم: Version Control & Git
تنها گزینه مورد استفاده در قابل اتکا در بخش ورژن کنترل استاندارد Git است که دارای پیاده سازی های متفاوتی است، در زیر موارد اصلی قابل استفاده در ایران لیست شده اند.
مرحله پنجم: Build & Package managers
کدهای توسعه داده شده در این مرحله تبدیل به پکیج های استاندارد می گردند.
- MSBuild / Dotnet: ابزار لازم جهت بیلد زبان های توسعه داده شده توسط مایکروسافت مثل C#
- Maven / Gradle: ابزار لازم جهت بیلد کدهای زبان java
- NPM: ابزار لازم جهت مدیریت پکیج های javascript
- Nuget: ابزار لازم جهت پکیج نمودن فایل های توسعه داده شده با تکنولوژی های مایکروسافت
مرحله ششم: Artifact Management
محصولات تولید شده در مرحله پنجم باید در محلی امن نگهداری شده و دارای شناسنامه باشند. ابزارهای زیر در این زمینه به شما کمک خواهند نمود. امکان نگهداری فایلهای عمومی مثل فایلهای zip یا rar در این ابزارها وجود ندارد.
مرحله هفتم: Containers
تنها گزینه های پر استفاده و قابل توجه جهت استفاده دو مورد زیر هستند.
- Containerd: ترجیحا سعی نمایید تا از این گزینه استفاده نمایید.
- Docker
مرحله هشتم: Automation & CI /CD
در ایران ۴ گزینه زیر به راحتی قابل استفاده هستند و حداقل یک مورد از این ۴ گزینه امکان رفع نیاز شما در زمینه CI /CD را دارد و نیازی به پیاده سازی بیش از ۱ مورد نمی باشد. اگر چه استفاده از ابزاری مثل jenkins با توجه به اوپن سورس بودن آن و محدود بودن توان این ابزار در مقایسه با سایر گزینه ها و استفاده از نسخه های پولی ۳ گزینه دیگر به صورت رایگان در ایران توصیه نمی گردد.
مرحله نهم: Infra as code
جهت خودکار سازی فرآیندهای مرتبط با نصب و راه اندازی و Config سرورها می توان از ترکیب دو ابزار زیر استفاده نمود.
- Terraform: این ابزار متن باز بوده وبا کمک آن می توان زیرساخت های مرتبط با شبکه و سیستم عامل ها را خودکار سازی نمود و شامل لایه Iaas می گردد.
- Ansible: این ابزار بیشتر جهت خودکار سازی تنظیمات سرورها (Configuration Management) مثل نصب ایجنت ها روی دسته ایی از سرورها و یا اعمال تغییرات یکسان بر روی سرورهای تست و پروداکشن مورد استفاده قرار می گیرد.
مرحله دهم: Programming
برخی مواقع نیاز است جهت رفع نیازهای سازمان آستین ها را بالا زده و نیازمندی خاص سازمان را خود پیاده سازی کنید، در این زمان ها دو زبان برنامه نویسی زیر به کمک شما می شتابند.
مرحله یازدهم: Cloud & CNCF
جهت پیاده سازی MicroService ها نیاز است از ساختار Cloud Native استفاده نمایید، همچنین در خارج از ایران مفهوم دواپس بدون وجود cloud تقریبا غیر قابل تصور است ولی در ایران راهکار ما جایگزین نمودن این موضوع با زیرساخت های بر اساس Cloud Native است. مهم ترین گزینه این بخش در زیر بیان شده.
- Kubernetes: ابزاری متن باز برای رهبری کانتینرها، از این ابزار حتی می توان به عنوان یک پلتفرم برای ارائه سایر سرویس ها به سازمان و مشتریان استفاده نمود.
- Azure: این زیر ساخت ابری متعلق به شرکت مایکروسافت بوده و حجم عظیمی از خدمات را در خود جای داده است. به زودی دوره های مرتبط با Azure به زبان فارسی و قیمتی مناسب در این سایت ارائه خواهند شد. جهت کسب موقعیت شغلی مناسب بیرون از ایران اشنایی با انواع سرویس های ابری می تواند برگ برنده شما باشد. در این زمینه دوره آموزش Azure مدرک Azure Fundamentals - AZ-900 ارائه شده است.
مرحله دوازدهم: Monitoring
مانیتورینگ و اندازه گیری وضعیت جاری سازمان چه از نظر تجاری و چه از نظر زیرساختی و چه از نظر اپلیکیشن جز موارد مهم اشاره شده در الگوهای دواپس است. در ایران ابزارهای زیر قابل دسترسی هستند، عدم امکان دسترسی به ابزارهای اماده موجود در بازار بین المللی مثل Datadog و Azure Monitor باعث شده است تا در ایران تیم ها مجبور به متخصص شدن در امر مانیتورینگ شوند و کم کم به صورت تخصصی جداگانه مطرح شود.
- Elastic stack یا ELK: ابزاری دارای نسخه های متن باز جهت مدیریت log ها و نمایش آنها
- CNCF Prometheus: ابزاری متن باز برای جمع آوری متریک ها
- Grafana: ابزاری متن باز برای نمایش متریک ها
- CNCF Jaeger: ابزاری متن باز متعلق به CNCF جهت دیباگ محصولات مایکروسرویس
- Splunk: ابزاری فوق العاده در زمینه مدیریت لاگ و متریک، ولی متن باز نیست.
- Zabbix: ابزاری متن باز که عمدتا برای مانیتورینگ زیرساخت ها و سرورها استفاده می گردد.