مقدمه: دواپس دقیقاً یعنی چه؟
وقتی یک نرمافزار نوشته میشود، کار هنوز تمام نشده است. کد باید تست شود، بستهبندی شود، روی سرور برود، پایدار بماند و اگر مشکلی پیش آمد سریع پیدا و رفع شود. دواپس (DevOps) مجموعهی فرهنگ، روش و ابزارهایی است که این مسیر را از کدنویسی تا اجرا خودکار، قابلتکرار و قابلاعتماد میکند.
مسیر دواپس برای تازهکارها گاهی گیجکننده است، چون ابزارهای زیادی دارد و هر کس از یک جای متفاوت شروع میکند. این مقاله ترتیب مشخصی به شما میدهد: اول چه چیزی یاد بگیرید، هر مرحله را تا کجا ادامه دهید و چه زمانی آمادهاید قدم بعدی را بردارید.
مهندس دواپس چه کاری انجام میدهد؟
مهندس دواپس پلی بین توسعه و عملیات است. او کمک میکند کدی که توسعهدهندهها مینویسند سریع، امن و بدون دردسر به دست کاربر برسد و روی سرورها پایدار بماند.
- ساخت و نگهداری خط لولهی CI/CD برای تست و انتشار خودکار
- بستهبندی برنامهها با Docker و اجرای آنها روی سرور یا کلاستر
- مدیریت سرورها و محیطهای لینوکسی
- تعریف زیرساخت بهصورت کد با ابزارهایی مثل Terraform و Ansible
- راهاندازی مانیتورینگ، لاگگیری و هشدار
- توجه به امنیت، پشتیبانگیری و مدیریت دسترسیها
- همکاری با تیم توسعه برای بهبود روند انتشار
- رفع مشکلات عملکرد و پایداری سیستم
پیش از شروع: چه چیزی لازم است؟
دواپس معمولاً برای کسانی که از قبل کمی برنامهنویسی یا مدیریت سیستم میدانند راحتتر است؛ چون ابزارهای آن با کد، سرور و شبکه سروکار دارند. اگر هیچکدام را نمیدانید هم میتوانید شروع کنید، فقط مرحلهی پایه را جدیتر بگیرید.
- آشنایی با یک زبان برنامهنویسی یا اسکریپتنویسی (مثلاً Python یا Bash)
- کار با کامپیوتر و ترمینال
- درک ساده از ساختار یک اپلیکیشن وب
- خواندن مستندات و پیامهای خطا به انگلیسی
- دوست داشتن خودکار کردن کارهای تکراری
- حوصله برای پیدا کردن ریشهی مشکل
- دقت در جزئیات و نوشتن مستندات
- آمادگی برای یادگیری مداوم ابزارهای جدید
نقشه راه گامبهگام یادگیری دواپس
برای اینکه تصویر کلی را داشته باشید، ابتدا مراحل را یکجا ببینید. در ادامه هر مرحله جداگانه توضیح داده میشود.
- لینوکس و خط فرمان: زبان مشترک سرورها
- شبکه و وبسرور: فهمیدن اینکه درخواست چطور به برنامه میرسد
- Git و CI/CD: خودکار کردن تست و انتشار
- Docker: بستهبندی برنامه برای اجرای یکسان در همه جا
- ابر و زیرساخت بهعنوان کد: ساخت سرور و شبکه با کد
- Kubernetes: مدیریت کانتینرها در مقیاس بالا
- مانیتورینگ، لاگ و امنیت: دیدن و محافظت از سیستم
- پروژه و رزومه: تبدیل مهارت به نمونهکار
مرحله اول: لینوکس و خط فرمان
بیشتر سرورهایی که برنامهها روی آنها اجرا میشوند لینوکس دارند. اگر ترمینال برایتان آشنا نباشد، بقیهی مسیر سخت میشود، پس این مرحله را با تمرین جدی بگیرید.
- ساختار پوشهها و مسیرها
- دستورهای پایه مثل 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 و کار تیمی راحت باشید.
- کامیت، شاخه و ادغام
- Pull Request و بازبینی کد
- حل تداخل (Conflict)
- استراتژیهای شاخهبندی ساده
- استفاده از GitHub یا GitLab
- مفهوم 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 پرکاربردترین ابزار این حوزه است.
- تفاوت ایمیج (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 به کلاستر
مرحله هفتم: مانیتورینگ، لاگ و امنیت
سیستمی که نمیتوانید ببینید، نمیتوانید درستش کنید. در این مرحله یاد میگیرید وضعیت سرویسها را زیر نظر بگیرید و مشکلات را قبل از شکایت کاربران پیدا کنید.
- جمعآوری متریکها با ابزارهایی مثل Prometheus
- داشبورد با Grafana
- مدیریت متمرکز لاگ
- تعریف هشدار برای مشکلات مهم
- مفهوم SLA و SLO
- مدیریت رمزها و کلیدها
- بهروزرسانی منظم و وصلههای امنیتی
- اصل حداقل دسترسی
- پشتیبانگیری و بازیابی
- اسکن امنیتی ایمیجها و وابستگیها
مرحله هشتم: پروژه، نمونهکار و رزومه
در دواپس هم مثل بقیهی حوزهها، نمونهکار از گواهی مهمتر است. بهترین کار این است که یک پروژهی واقعی را از ابتدا تا انتشار خودکار و مانیتورینگ پیش ببرید.
- یک برنامهی ساده (مثلاً یک API) بنویسید یا آماده بردارید
- آن را با Docker بستهبندی کنید
- برایش Pipeline بسازید که تست و ساخت را خودکار انجام دهد
- آن را روی یک سرور یا سرویس ابری مستقر کنید
- مانیتورینگ و لاگ اضافه کنید
- همه را با README روشن و نمودار ساده در GitHub مستند کنید
- در رزومه بهجای فهرست ابزارها، نتیجه و کاری که انجام دادهاید را توضیح دهید
سطحبندی مهارت: جونیور تا سنیور
سطح | مهارتهای مورد انتظار | نشانه آمادگی |
|---|---|---|
جونیور | لینوکس، Git، مبانی شبکه، Docker، CI/CD ساده، اسکریپتنویسی | مستقر کردن یک برنامه با Pipeline خودکار روی یک سرور |
میدلول | Terraform یا Ansible، Kubernetes، مانیتورینگ، امنیت پایه، طراحی Pipeline | مدیریت مستقل یک محیط واقعی و رفع مشکلات آن |
سنیور | معماری زیرساخت، پایداری و مقیاسپذیری، مدیریت هزینه، فرهنگسازی در تیم | طراحی و رهبری تصمیمهای زیرساختی در سطح سازمان |
- ترتیب درست یادگیری مهمتر از تعداد ابزارهاست
- لینوکس و شبکه، پایهی همهی مراحل بعدی هستند
- Docker را قبل از Kubernetes یاد بگیرید
- پروژهی کامل از کد تا انتشار و مانیتورینگ، بهترین نمونهکار شماست
مسیر دواپس مسیری تدریجی است: از لینوکس و ترمینال شروع میشود، با بستهبندی و خودکارسازی ادامه پیدا میکند و با مدیریت سیستمهای واقعی به بلوغ میرسد. اگر میخواهید این مسیر را اصولی و همراه با پروژه طی کنید، دورههای آکادمی NRTech برای همین هدف طراحی شدهاند.
اشتباهات رایج مسیر دواپس
- لینوکس و ترمینال را با تمرین واقعی یاد بگیرید
- هر ابزار را داخل یک پروژهی کوچک امتحان کنید
- همه چیز را در Git نگه دارید و مستند کنید
- اول مفهوم را بفهمید، بعد ابزار را انتخاب کنید
- مستقیم سراغ Kubernetes نروید و لینوکس و Docker را رد نکنید
- هر ابزار جدیدی را فقط بهخاطر ترند یاد نگیرید
- رمزها و کلیدها را داخل کد یا مخزن عمومی نگذارید
- فقط فهرست ابزارها را در رزومه ننویسید

