/
مدیریت /
مدیریت فناوری نقشه راه دواپس DevOps Roadmap
در این گفتار هم به نیازهای سازمان و هم به نیازهای مهندسین دواپس توجه شده است.
مهمترین نکته قابل اشاره در مورد تمامی این نقشهها متغیر بودن ترتیب اجرای گامهاست و عامل تعیین کننده این موضوع وضعیت جاری شما در شرکتی در آن فعال هستید (به عنوان یک مهندس دواپس)، و یا نوع فعالیت و محصولات شرکت شما است.
دواپس شامل فرهنگ و فرآیند و ابزار میگردد و ترتیب موارد قابل تغییر نیست، موارد زیر بر همین اساس تنظیم شده اند.
مرحله اول: DevOps Fundamentals
مرحله دوم: Agile & Scrum
این مرحله شامل آموزش اجرای اجایل و اسکرام در تیم شما است و استفاده از اجایل جزء اصول پایه ایی دواپس است.
فرهنگ و فرآیند: در این زمینه نیاز است تا حداقل در دوره Professional Scrum Master شرکت نمایید و در صورتی که مدیر و یا سرپرست هستید در دوره Professional Scrum Product Owner نیز شرکت نمایید. همچنین جهت کسب دانش اولیه به بخش دوره رایگان اسکرام مراجعه بفرماییید.
ابزارها: در این بخش دو ابزار عمده قابل استفاده در ایران شامل، Atlassian Jira & Confluence و Microsoft Azure DevOps Server است. همچنین دوره ویدیویی آموزش مدیریت محصول چابک و تیم اسکرام با استفاده از Azure DevOps 2020 Boardsاست. در خارج از ایران سایر ابزارها مثل Gitlab و GitHub issues and projects در این بخش قابل استفاده هستند.
مرحله سوم: Network
Network: در زمینه شبکه به حداقل دانش جهت اشنایی با لایههای شبکه و سابنتینگ نیازمند خواهید بود. در این زمینه جهت استفاده از منابع رایگان، در اینترنت ویدیو تیم Network Kings با نام CCNA Course - CCNA Routing and Switching-CCNA200-301 را جستجو بفرمایید. همچنین در کتاب Networking & Kubernetes به اندازه کافی به این موضوع پرداخته شده است.
سیستم عاملهای Windows Server: در این سیستم عامل برای اسکریپت نویسی از زبان Powershell استفاده میگردد و نیاز است بر این زبان مسلط گردید،
سیستم عامل لینوکس: دورههای اصلی و پایه در زمینه لینوکس شامل Lpic1 و Lpic2 میباشد، که نیاز شما حتما این دو دوره را گذرانده باشید، در لینوکس زبان اصلی اسکریپت نویسی Bash میباشد و نیاز است بر این زبان مسلط باشید، در دورههای Lpic به اندازه کافی به این موضوع اشاره میگردد.
مرحله چهارم: Version Control & Git
تنها گزینه مورد استفاده در قابل اتکا در بخش ورژن کنترل استاندارد Git است که دارای پیاده سازیهای متفاوتی است، در زیر موارد اصلی قابل استفاده در ایران لیست شده اند.
Azure DevOps Repos همچنین دوره ویدیویی آموزش مدیریت Git Repoها با استفاده از Azure DevOps 2020 در این زمینه ارائه شده است.
GitHub
GitLab CE
Atlassian Bitbucket
مرحله پنجم: Build & Package managers
کدهای توسعه داده شده در این مرحله تبدیل به پکیجهای استاندارد میگردند.
MSBuild / Dotnet: ابزار لازم جهت بیلد زبانهای توسعه داده شده توسط مایکروسافت مثل C#
Maven / Gradle: ابزار لازم جهت بیلد کدهای زبان java
NPM: ابزار لازم جهت مدیریت پکیجهای javascript
Nuget: ابزار لازم جهت پکیج نمودن فایلهای توسعه داده شده با تکنولوژیهای مایکروسافت
مرحله ششم: Artifact Management
محصولات تولید شده در مرحله پنجم باید در محلی امن نگهداری شده و دارای شناسنامه باشند. ابزارهای زیر در این زمینه به شما کمک خواهند نمود. امکان نگهداری فایلهای عمومی مثل فایلهای zip یا rar در این ابزارها وجود ندارد.
Sonatype Nexus: ابزاری متن باز جهت نگهداری انواع پکیجهای استاندارد است، نزدیک به ۱۵ قالب مختلف پشتیبانی میگردد.
CNCF Harbor: یکی از بهترین ابزارهای متن باز متعلق به بنیاد CNCF جهت نگهداری کانتینرهای شما و انجام بررسیهای امنیتی روی لایههای کانتینرها
Azure DevOps Artifacts: امکان نگهداری پکیجهای nuget و paython و maven و npm را فراهم مینماید. در این زمینه دوره آموزش ci cd با پیاده سازی پروژههای اجرایی در Azure DevOps ارائه شده است.
GitHub Packages: این ابزار امکان ذخیره سازی انواع مختلفی از پکیجها مثل npm و Containerها را دارا میباشد.
مرحله هفتم: Containers
تتمامی ابزارهای زیر طبیعتا بر اساس Container runtime interface یا CRI هستند.
Containerd: ترجیحا سعی نمایید تا از این گزینه استفاده نمایید.
nerdctl / Rancher Desktop: این دو ابزار در کنار هم میتوانند به عنوان جایگزین داکر و Minikube بر روی سیستم شما عمل نمایند.
Docker: این ابزار رسما در حال حذف میباشد و یکی از دلایل حذف آن در سازمانها متن باز نبودن آن و نیاز سازمانها به پرداخت هزینه است که حذف گسترده آن را رقم زده است.
مرحله هشتم: Automation & CI /CD
در ایران ۴ گزینه زیر به راحتی قابل استفاده هستند و حداقل یک مورد از این ۴ گزینه امکان رفع نیاز شما در زمینه CI /CD را دارد و نیازی به پیاده سازی بیش از ۱ مورد نمیباشد. اگر چه استفاده از ابزاری مثل jenkins با توجه به اوپن سورس بودن آن و محدود بودن توان این ابزار در مقایسه با سایر گزینهها و استفاده از نسخههای پولی ۳ گزینه دیگر به صورت رایگان در ایران توصیه نمیگردد.
Azure DevOps Pipelines در این زمینه دوره آموزش ci cd با پیاده سازی پروژههای اجرایی در Azure DevOps ارائه شده است.
GitHub Workflows: در این زمینه دوره آموزش پیاده سازی CI CD و DevSecOps با GitHub ارائه شده است.
Gitlab Pipelines
Jenkins
Atlassian Bamboo
مرحله نهم: Infrastructure as code یا IAC
جهت خودکار سازی فرآیندهای مرتبط با نصب و راه اندازی و Config سرورها میتوان از ترکیب دو ابزار زیر استفاده نمود.
Terraform: این ابزار متن باز بوده و جزء راهکارهای جدید به شمار میآید. با کمک آن میتوان تمامی زیرساختهای مرتبط با شبکه و سیستم عاملها و سرویسهای مختلف موجود در Cloud را خودکار سازی نمود و شامل لایههای Iaas و Paas میگردد. همچنین این ابزار را میتوان به عنوان Configuration Management نیز استفاده نمود. منابع بیشتر مرتبط با این ابزار در بخش آموزش Terraform قابل دسترس هستند.
Ansible: این ابزار بیشتر جهت خودکار سازی تنظیمات سرورها (Configuration Management) مثل نصب ایجنتها روی دسته ایی از سرورها و یا اعمال تغییرات یکسان بر روی سرورهای تست و پروداکشن مورد استفاده قرار میگیرد. این ابزار قدیمی بوده و در حال حذف شدن میباشد.
Crossplane: این ابزار حتی تنظیمات شما را در کوبرنیتیز ذخیره میکند و وظیفه پیاده سازی IAC در کوبرنیتیز را بر عهده دارد و به همین دلیل از مزیت بیشتری به نسبت دو ابزار دیگر برخوردار است ولی مشکل اصلی یکی شدن این ابزار با محیطهای بر پایه کوبرنیتیز است که ممکن است باعث افزایش پیچیدگیها در برخی سازمانها شود.
Azure ARM Templates: این تکنولوژی جهت پیاده سازی IAC بر بستر خدمات ابری مایکروسافت کاربرد دارد.
AWS Cloud Formation: این تکنولوژی جهت پیاده سازی IAC بر بستر خدمات ابری آمازون کاربرد دارد.
مرحله دهم: Programming
برخی مواقع نیاز است جهت رفع نیازهای سازمان آستینها را بالا زده و نیازمندی خاص سازمان را خود پیاده سازی کنید، در این زمانها دو زبان برنامه نویسی زیر به کمک شما میشتابند. به عنوان مثال اگر سازمان شما از GitHub استفاده مینماید و شما نیازمند اکشنهای خاص منظوره هستید و یا نیازمند خودکار سازی برخی کارها در گیتهاب هستید، نیاز دارید که بر زبان برنامه نویسی جاوااسکریپت مسلط باشید.
GO: به عنوان مثال در صورتی که نیازمند تست کدهای ترافرم خود است (بله میتوان برای کدهای IAC هم تست نوشت!)، برخی ابزارهای تست مرتبط با این زبان به توسعه تستها میپردازند.
Python: Python For DevOps: A Complete Guide For DevOps Engineers
JavaScript: این زبان به خصوص در توسعه اکشنها و خودکار سازی فرایندهای GitHub کارایی زیادی دارد.
Terraform HCL: زبان برنامه نویسی مورد استفاده در ابزار ترافرم
مرحله یازدهم: Cloud & CNCF
جهت پیاده سازی MicroServiceها نیاز است از ساختار Cloud Native استفاده نمایید. مهمترین گزینه این بخش در زیر بیان شده
Kubernetes: ابزاری متن باز برای رهبری کانتینرها، از این ابزار حتی میتوان به عنوان یک پلتفرم برای ارائه سایر سرویسها به سازمان و مشتریان استفاده نمود.
Azure: این زیر ساخت ابری متعلق به شرکت مایکروسافت بوده و حجم عظیمی از خدمات را در خود جای داده است. به زودی دورههای مرتبط با Azure به زبان فارسی و قیمتی مناسب در این سایت ارائه خواهند شد. جهت کسب موقعیت شغلی مناسب بیرون از ایران اشنایی با انواع سرویسهای ابری میتواند برگ برنده شما باشد. در این زمینه دوره آموزش Azure مدرک Azure Fundamentals - AZ-900 ارائه شده است.
AWS: این زیرساخت ابری متعلق به شرکت آمازون است و حجم عظیمی از خدمات متنوع را در خود جای داده است.
GCP: این زیرساخت متعلق به شرکت گوگل بوده و دارای خدمات متنوعی میباشد ولی بعد از دو مورد بالا در رده سوم از نظر حجم نفوذ در شرکتها و بازار برخوردار است.
مرحله دوازدهم: لاگ و مانیتورینگ Log & Monitoring
مانیتورینگ و اندازه گیری وضعیت جاری سازمان چه از نظر تجاری و چه از نظر زیرساختی و چه از نظر اپلیکیشن جز موارد مهم اشاره شده در الگوهای دواپس است. در ایران ابزارهای زیر قابل دسترسی هستند، عدم امکان دسترسی به ابزارهای اماده موجود در بازار بین المللی مثل Datadog و Azure Monitor باعث شده است تا در ایران تیمها مجبور به متخصص شدن در امر مانیتورینگ شوند و کم کم به صورت تخصصی جداگانه مطرح شود.
Elastic stack یا ELK: ابزاری دارای نسخههای متن باز جهت مدیریت logها و نمایش آنها
CNCF Prometheus: ابزاری متن باز برای جمع آوری متریکها
Grafana: ابزاری متن باز برای نمایش متریکها
CNCF Jaeger: ابزاری متن باز متعلق به CNCF جهت دیباگ محصولات مایکروسرویس
Splunk: ابزاری فوق العاده در زمینه مدیریت لاگ و متریک، ولی متن باز نیست.
Zabbix: ابزاری متن باز که عمدتا برای مانیتورینگ زیرساختها و سرورها استفاده میگردد.
آموزش مقدماتی مانیتورینگ شبکه با زبیکس Zabbix | فرادرس
https://faradars.org/courses/network-monitoring-using-zabbix-fvnet104
آموزش zabbix (مانیتورینگ شبکه با زبیکس)
https://faraznetwork.ir/product/zabbix/
Top 11 Splunk Alternatives in 2024 [Includes Free & Open-Source Tools] | SigNoz
https://www.aparat.com/v/ib7ea
مرحله سیزدهم: DevSecOps
این بخش شامل ابزارها و پلتفرمهایی است که به شما در پیاده سازی خودکارسازی امنیت کمک خواهد نمود.
GitHub CodeQL & Dependabot: این راهکار در محیط گیتهاب به طور کامل نیاز تیمهای توسعه نرم افزار را برطرف خواهد نمود.
Whitesource/Mend: این ابزار توانایی بررسی تمامی پکیجهای شما از نظر لایسنز و مشکلات امنیتی را داراست و همچنین توانایی بررسی کانتینرهای شما جهت پیدا نمودن مشکلات امنیتی را دارد.
Synopsys Coverity: این ابزار مثل CodeQL به بررسی مشکلات امنیتی موجود در سورس کد شما میپردازد.
مرحله سیزدهم: GitOps
این بخش شامل ابزارها و پلتفرمهایی است که به شما در پیاده سازی GitOps کمک خواهد نمود.
Argo CD: ابزاری متن باز جهت پیاده سازی گیت اپس بر بستر کوبرنیتیز.
Flux: ابزاری متن باز جهت پیاده سازی گیت اپس.
همچنین میتوان از ابزارهای بخش CI/CD هم برای پیاده سازی GitOps استفاده نمود ولی دو ابزار بالا به شکل تخصصی در این زمینه توسعه داده شده اند.
2. مفاهیم مختلف سیستم عامل را درک کنید
اینجا جایی بود که قسمت Ops وارد شد، قبلاً فقط توسط افراد و افراد sysadmin که مسئول دانستن سیستم عامل و سخت افزار بودند پشتیبانی میشد، اما با DevOps، اکنون توسعه دهنده نیز باید آنها را بشناسد. شما حداقل باید در مورد مدیریت فرآیند، رشتهها و همزمانی، سوکتها، مدیریت ورودی/خروجی، مجازی سازی، ذخیره سازی حافظه و سیستمهای فایل همانطور که در نقشه راه پیشنهاد شده است بدانید.
3. زندگی در ترمینال را بیاموزید
برای یک DevOps، داشتن فرمان خوب در خط فرمان مهم است، به خصوص اگر در لینوکس کار میکند. دانستن برخی از پوسته لینوکس مانند Bash یا Ksh و ابزارهایی مانند find، grep، awk، sed، lsof و دستورات شبکه مانند nslookup و netstat الزامی است.
4. شبکه و امنیت
در دنیای امروز، همه چیز به همه چیز متصل است که شبکه و امنیت را بسیار مهم میکند. برای تبدیل شدن به یک مهندس DevOps خوب، باید در مورد مفاهیم اولیه شبکه و امنیت مانند DNS، مدل OSI، HTTP، HTTPS، FTP، SSL، TLS و غیره بدانید.
5. ماهیت سرویسها چیست و چگونه راه اندازی میشود
به عنوان یک قهرمان DevOps، باید بدانید که چه چیزی در دستگاه شما تنظیم شده است و چگونه میتوانید آن را تنظیم کنید، فقط میتوانید به خودکارسازی آن فکر کنید. به طور کلی، یک مهندس DevOps باید بداند که چگونه یک وب سرور مانند IIS، Apache و Tomcat راه اندازی کند. او همچنین باید در مورد CachingServer، LoadBalancer، ReverseProxy و Firewall و غیره اطلاعات داشته باشد.
6. زیرساخت را به عنوان کد یاد بگیرید
این احتمالاً مهمترین چیز برای یک مهندس DevOps است و همچنین منطقه بسیار وسیعی است. به عنوان یک مهندس DevOps، باید در مورد کانتینرهایی مانند Docker و Kubernetes، ابزارهای مدیریت پیکربندی مانند Ansible، Chef، Salt و Puppet، تجهیزات زیرساخت مانند Terraform و Cloud formation اطلاعات داشته باشید.
7. برخی از ابزارهای یکپارچه سازی و تحویل مداوم (CI/CD) را بیاموزید
این یکی دیگر از موارد بسیار مهم برای مربیان و قهرمانان DevOps است، یعنی راه اندازی فرایند برای یکپارچه سازی و تحویل مداوم. ابزارهای زیادی در ناحیه CI/CD وجود دارد به عنوان مثال. Jenkins, TeamCity, Drone ,Gitlab و غیره اما، اکیداً توصیه میکنم حداقل Jenkins را یاد بگیرید، زیرا این ابزار پرکاربردترین و احتمالاً بالغترین ابزار CI/CD در بازار است.
8. نظارت بر نرم افزار و زیرساخت را یاد بگیرید
جدای از راهاندازی و استقرار، Monitoring یکی دیگر از جنبههای مهم DevOps است و به همین دلیل است که برای یک مهندس DevOps مهم است که در مورد زیرساخت و نظارت بر برنامهها بیاموزد. ابزارهای زیادی در این فضا وجود دارد به عنوان مثال. Nagios، Icing، Datadog، Zabbix، Monit، AppDynanic، New Relic و غیره. بسته به اینکه کدام یک در شرکت شما استفاده میشود.
9. درباره Cloud Provides بیاموزید
Cloud چیز بزرگ بعدی است و دیر یا زود باید برنامه خود را به ابر منتقل کنید، از این رو برای یک مهندس DevOps مهم است که حداقل درباره برخی از ارائه دهندگان ابر محبوب و اصول اولیه آنها بداند. در حالی که AWS به وضوح پیشرو در فضای ابری است، تنها نیست، Google Cloud و Azure به آرامی در حال پیشرفت هستند و سپس ما بازیکنان دیگری مانند Heroku، Cloud Foundry و Digital Ocean را داریم.
آموزش دواپس (DevOps)
https://git.ir/devops/
صعود | 7 پروژهی گیتهاب که برای هر برنامه نویس جاواسکریپت ضروری است
https://soud.ir/blog/7-GitHub-projects-essential-for-every-Javascript-developer
42 نکته برای خوب شدن در DevOps و زندگی - سایت آموزشی ابزارهای DevOps و خدمات دواپس - DevOps
https://enginedevops.com/2022/07/30/tips-for-getting-good-at-devops-life/
OpenTelemetry در مقابل Datadog - انتخاب بین OpenTelemetry و Datadog
https://nabfollower.com/blog/opentelemetry-vs-datadog-choosing-between-opentelemetry-and-datadog-2c84/
آموزش اسپلانگ - Google Search
https://www.google.com/search?q=%D8%A2%D9%85%D9%88%D8%B2%D8%B4%20%D8%A7%D8%B3%D9%BE%D9%84%D8%A7%D9%86%DA%AF&ie=utf-8&oe=utf-8&client=firefox-b-m
elastic vs - Google Search
https://www.google.com/search?q=elastic+vs&ie=utf-8&oe=utf-8&client=firefox-b-m