NRTech
مسیر یادگیریمسیر یادگیری دواپس

نقشه راه جامع دواپس از لینوکس و Git تا CI/CD، Docker و Kubernetes

سطح
متوسط تا پیشرفته
مدت تقریبی
20 دقیقه
نقشه راه جامع دواپس با لینوکس، Git، CI/CD، داکر، کوبرنتیز و ابزارهای ابری

مقدمه: دواپس دقیقاً یعنی چه؟

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

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

موضوعنقشه راه یادگیری دواپس
سطح مخاطبمتوسط
مسیر اصلیلینوکس، Git، CI/CD، Docker، ابر، Kubernetes
نتیجهآمادگی برای موقعیت جونیور دواپس و داشتن نمونه‌کار
دواپس یک ابزار خاص نیست؛ طرز فکر خودکارسازی و تکرارپذیری است. ابزارها عوض می‌شوند، اما این اصول می‌مانند.

مهندس دواپس چه کاری انجام می‌دهد؟

مهندس دواپس پلی بین توسعه و عملیات است. او کمک می‌کند کدی که توسعه‌دهنده‌ها می‌نویسند سریع، امن و بدون دردسر به دست کاربر برسد و روی سرورها پایدار بماند.

وظایف اصلی یک مهندس دواپس معمولاً شامل موارد زیر است:
  • ساخت و نگهداری خط لوله‌ی CI/CD برای تست و انتشار خودکار
  • بسته‌بندی برنامه‌ها با Docker و اجرای آن‌ها روی سرور یا کلاستر
  • مدیریت سرورها و محیط‌های لینوکسی
  • تعریف زیرساخت به‌صورت کد با ابزارهایی مثل Terraform و Ansible
  • راه‌اندازی مانیتورینگ، لاگ‌گیری و هشدار
  • توجه به امنیت، پشتیبان‌گیری و مدیریت دسترسی‌ها
  • همکاری با تیم توسعه برای بهبود روند انتشار
  • رفع مشکلات عملکرد و پایداری سیستم

پیش از شروع: چه چیزی لازم است؟

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

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

نقشه راه گام‌به‌گام یادگیری دواپس

برای اینکه تصویر کلی را داشته باشید، ابتدا مراحل را یک‌جا ببینید. در ادامه هر مرحله جداگانه توضیح داده می‌شود.

نمای کلی مسیر
  1. لینوکس و خط فرمان: زبان مشترک سرورها
  2. شبکه و وب‌سرور: فهمیدن اینکه درخواست چطور به برنامه می‌رسد
  3. Git و CI/CD: خودکار کردن تست و انتشار
  4. Docker: بسته‌بندی برنامه برای اجرای یکسان در همه جا
  5. ابر و زیرساخت به‌عنوان کد: ساخت سرور و شبکه با کد
  6. Kubernetes: مدیریت کانتینرها در مقیاس بالا
  7. مانیتورینگ، لاگ و امنیت: دیدن و محافظت از سیستم
  8. پروژه و رزومه: تبدیل مهارت به نمونه‌کار

مرحله اول: لینوکس و خط فرمان

بیشتر سرورهایی که برنامه‌ها روی آن‌ها اجرا می‌شوند لینوکس دارند. اگر ترمینال برایتان آشنا نباشد، بقیه‌ی مسیر سخت می‌شود، پس این مرحله را با تمرین جدی بگیرید.

کار با سیستم
  • ساختار پوشه‌ها و مسیرها
  • دستورهای پایه مثل ls، cd، cp، mv و rm
  • کار با فایل‌ها و جست‌وجو با grep و find
  • مدیریت پکیج با apt
  • مدیریت پردازش‌ها و سرویس‌ها با systemd
اسکریپت و مدیریت
  • کاربران، گروه‌ها و مجوزهای فایل
  • ویرایشگر ترمینال مثل nano یا vim
  • نوشتن اسکریپت Bash ساده
  • SSH و اتصال امن به سرور
  • زمان‌بندی کارها با cron

مرحله دوم: شبکه و وب‌سرور

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

مفاهیم شبکه
  • آدرس IP، پورت و DNS
  • مدل کلاینت-سرور و پروتکل HTTP/HTTPS
  • فایروال و مفهوم پورت‌های باز
  • آشنایی با SSL/TLS و گواهی‌ها
  • ابزارهای عیب‌یابی مثل ping، curl و traceroute
وب‌سرور و پروکسی
  • نصب و پیکربندی Nginx
  • Reverse Proxy و Load Balancer ساده
  • نصب و راه‌اندازی یک برنامه‌ی وب روی سرور
  • مدیریت لاگ‌های وب‌سرور
  • فعال‌سازی HTTPS

مرحله سوم: Git و CI/CD

CI/CD یعنی هر بار که کد تغییر می‌کند، تست و ساخت و انتشار به‌صورت خودکار انجام شود. قبل از آن باید با Git و کار تیمی راحت باشید.

Git و کار تیمی
  • کامیت، شاخه و ادغام
  • Pull Request و بازبینی کد
  • حل تداخل (Conflict)
  • استراتژی‌های شاخه‌بندی ساده
  • استفاده از GitHub یا GitLab
CI/CD
  • مفهوم Continuous Integration و Continuous Delivery
  • نوشتن Pipeline با GitHub Actions یا GitLab CI
  • اجرای خودکار تست‌ها
  • ساخت و ذخیره‌ی آرتیفکت
  • استقرار خودکار روی سرور

یک Workflow ساده در GitHub Actions این شکلی است. با هر Push اجرا می‌شود و یک پیام چاپ می‌کند:

name: CI
on: push
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: echo 'Build is green'

مرحله چهارم: Docker و کانتینر

کانتینر برنامه را همراه با همه‌ی وابستگی‌هایش بسته‌بندی می‌کند تا روی هر سیستمی یکسان اجرا شود و جمله‌ی «روی سیستم من کار می‌کرد» از بین برود. Docker پرکاربردترین ابزار این حوزه است.

مفاهیم Docker
  • تفاوت ایمیج (Image) و کانتینر
  • نوشتن Dockerfile
  • کار با Volume و ذخیره‌ی داده
  • شبکه‌ی کانتینرها
  • ساخت ایمیج‌های سبک و امن
ابزارهای کاربردی
  • Docker Compose برای اجرای چند سرویس
  • Registry و ذخیره‌ی ایمیج‌ها
  • اجرای پایگاه داده در کانتینر
  • Multi-stage Build
  • اتصال Docker به Pipeline

اولین کد موفق شما

بعد از نصب Docker، این دستور را در ترمینال اجرا کنید. یک کانتینر کوچک می‌سازد، پیامی چاپ می‌کند و تمام می‌شود:

docker run hello-world

اگر پیام خوش‌آمدگویی Docker را دیدید، اولین کانتینر شما اجرا شده است. قدم بعدی بسته‌بندی برنامه‌ی خودتان است. یک Dockerfile ساده برای یک برنامه‌ی پایتونی این شکلی است:

FROM python:3.12-slim
WORKDIR /app
COPY . .
RUN pip install -r requirements.txt
CMD python app.py

مرحله پنجم: ابر و زیرساخت به‌عنوان کد

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

سرویس‌های ابری
  • مفهوم ابر عمومی، خصوصی و ترکیبی
  • سرور مجازی، شبکه و ذخیره‌سازی
  • مدیریت دسترسی و کاربران
  • ساخت یک سرور و اتصال به آن
  • آشنایی با یکی از ارائه‌دهندگان ابری یا ابرهای داخلی
زیرساخت به‌عنوان کد
  • آشنایی با Terraform برای ساخت زیرساخت
  • آشنایی با Ansible برای پیکربندی سرورها
  • نگهداری کد زیرساخت در Git
  • محیط‌های جدا برای تست و محصول
  • مدیریت اطلاعات حساس و رمزها

مرحله ششم: Kubernetes

وقتی تعداد کانتینرها زیاد می‌شود، به ابزاری برای مدیریت آن‌ها نیاز دارید. Kubernetes این کار را انجام می‌دهد، اما یادگیری آن زمان‌بر است؛ پس بعد از تسلط روی Docker سراغش بروید، نه قبل از آن.

مفاهیم اصلی
  • Pod، Deployment و Service
  • ConfigMap و Secret
  • Namespace و تفکیک محیط‌ها
  • Ingress برای مسیریابی ترافیک
  • مفهوم مقیاس‌پذیری خودکار
کاربرد عملی
  • اجرای یک برنامه روی کلاستر آزمایشی مثل minikube یا kind
  • استفاده از kubectl
  • آشنایی با Helm
  • استقرار مرحله‌ای و بازگشت به نسخه‌ی قبل
  • اتصال Pipeline به کلاستر
همه‌ی پروژه‌ها به Kubernetes نیاز ندارند. برای بسیاری از سرویس‌های کوچک، Docker Compose روی یک سرور کافی و ساده‌تر است.

مرحله هفتم: مانیتورینگ، لاگ و امنیت

سیستمی که نمی‌توانید ببینید، نمی‌توانید درستش کنید. در این مرحله یاد می‌گیرید وضعیت سرویس‌ها را زیر نظر بگیرید و مشکلات را قبل از شکایت کاربران پیدا کنید.

مانیتورینگ و لاگ
  • جمع‌آوری متریک‌ها با ابزارهایی مثل Prometheus
  • داشبورد با Grafana
  • مدیریت متمرکز لاگ
  • تعریف هشدار برای مشکلات مهم
  • مفهوم SLA و SLO
امنیت و پایداری
  • مدیریت رمزها و کلیدها
  • به‌روزرسانی منظم و وصله‌های امنیتی
  • اصل حداقل دسترسی
  • پشتیبان‌گیری و بازیابی
  • اسکن امنیتی ایمیج‌ها و وابستگی‌ها

مرحله هشتم: پروژه، نمونه‌کار و رزومه

در دواپس هم مثل بقیه‌ی حوزه‌ها، نمونه‌کار از گواهی مهم‌تر است. بهترین کار این است که یک پروژه‌ی واقعی را از ابتدا تا انتشار خودکار و مانیتورینگ پیش ببرید.

مسیر ساخت نمونه‌کار
  1. یک برنامه‌ی ساده (مثلاً یک API) بنویسید یا آماده بردارید
  2. آن را با Docker بسته‌بندی کنید
  3. برایش Pipeline بسازید که تست و ساخت را خودکار انجام دهد
  4. آن را روی یک سرور یا سرویس ابری مستقر کنید
  5. مانیتورینگ و لاگ اضافه کنید
  6. همه را با README روشن و نمودار ساده در GitHub مستند کنید
  7. در رزومه به‌جای فهرست ابزارها، نتیجه و کاری که انجام داده‌اید را توضیح دهید
یک API ساده با پایتون، همراه با Dockerfile، Docker Compose برای اجرای برنامه و پایگاه داده، Pipeline در GitHub Actions برای تست و ساخت خودکار، استقرار روی یک سرور با Nginx و HTTPS، و داشبورد ساده‌ی مانیتورینگ.

سطح‌بندی مهارت: جونیور تا سنیور

سطح

مهارت‌های مورد انتظار

نشانه آمادگی

جونیور

لینوکس، Git، مبانی شبکه، Docker، CI/CD ساده، اسکریپت‌نویسی

مستقر کردن یک برنامه با Pipeline خودکار روی یک سرور

میدلول

Terraform یا Ansible، Kubernetes، مانیتورینگ، امنیت پایه، طراحی Pipeline

مدیریت مستقل یک محیط واقعی و رفع مشکلات آن

سنیور

معماری زیرساخت، پایداری و مقیاس‌پذیری، مدیریت هزینه، فرهنگ‌سازی در تیم

طراحی و رهبری تصمیم‌های زیرساختی در سطح سازمان

نکات کلیدی
  • ترتیب درست یادگیری مهم‌تر از تعداد ابزارهاست
  • لینوکس و شبکه، پایه‌ی همه‌ی مراحل بعدی هستند
  • Docker را قبل از Kubernetes یاد بگیرید
  • پروژه‌ی کامل از کد تا انتشار و مانیتورینگ، بهترین نمونه‌کار شماست

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

اشتباهات رایج مسیر دواپس

انجام دهید
  • لینوکس و ترمینال را با تمرین واقعی یاد بگیرید
  • هر ابزار را داخل یک پروژه‌ی کوچک امتحان کنید
  • همه چیز را در Git نگه دارید و مستند کنید
  • اول مفهوم را بفهمید، بعد ابزار را انتخاب کنید
انجام ندهید
  • مستقیم سراغ Kubernetes نروید و لینوکس و Docker را رد نکنید
  • هر ابزار جدیدی را فقط به‌خاطر ترند یاد نگیرید
  • رمزها و کلیدها را داخل کد یا مخزن عمومی نگذارید
  • فقط فهرست ابزارها را در رزومه ننویسید