راهنمای مبتدیان برای یادگیری DevOps (با نمونه پروژه بلادرنگ)

DevOps یک فرهنگ و تمرین است که ترکیب می شود توسعه (Dev) و عملیات (Ops) برای بهبود همکاری، خودکارسازی فرآیندها و ارائه سریعتر و قابل اطمینان تر نرم افزار. چه یک توسعهدهنده باشید، چه مهندس عملیات، یا تازه شروع کردهاید، این وبلاگ با ساختن یک پروژه همزمان، شما را از طریق موضوعات کلیدی در DevOps راهنمایی میکند: «برنامه بررسی فیلم».
بررسی اجمالی پروژه بلادرنگ: برنامه بررسی فیلم
ما یک برنامه بررسی فیلم خواهیم ساخت که به کاربران امکان می دهد فیلم ها را بررسی و رتبه بندی کنند. برنامه استفاده خواهد کرد واکنش نشان دهید برای قسمت جلویی، Node.js/Express برای باطن، و MongoDB به عنوان پایگاه داده ما رویههای DevOps را در سراسر پروژه ادغام خواهیم کرد.
1. سیستم های کنترل نسخه
چیست؟
سیستم های کنترل نسخه (VCS) مانند Git به تیم ها کمک می کند تا تغییرات در کد را پیگیری کنند، همکاری کنند و نسخه های مختلف یک پروژه را مدیریت کنند.
مثال در پروژه:
-
راه اندازی Git:
- یک مخزن Git را راه اندازی کنید:
git init
-
فایل های اولیه را متعهد کنید:
git add . git commit -m "Initial commit with boilerplate code"
-
فشار دادن به یک مخزن راه دور:
git remote add origin https://github.com/user/movie-review-app.git git push -u origin main
- استفاده کنید GitHub یا GitLab برای میزبانی مخزن و همکاری با تیم خود.
2. یکپارچه سازی پیوسته (CI)
چیست؟
CI تضمین می کند که تغییرات کد به طور خودکار آزمایش شده و در شاخه اصلی یکپارچه می شوند و مشکلات یکپارچه سازی را کاهش می دهند.
مثال در پروژه:
-
راه اندازی CI با جنکینز:
- جنکینز را نصب کنید و یک خط لوله جدید ایجاد کنید.
- خط لوله را پیکربندی کنید تا تغییرات را از مخزن GitHub انجام دهد.
- برای آزمایش باطن Node.js یک اسکریپت ساخت اضافه کنید:
pipeline { agent any stages { stage('Build') { steps { sh 'npm install' } } stage('Test') { steps { sh 'npm test' } } } }
- در هر فشار به مخزن، خط لوله را فعال کنید.
3. تحویل مستمر (CD)
چیست؟
CD فرآیند استقرار را خودکار می کند به طوری که تغییرات کد را می توان با حداقل تلاش دستی در محیط های تولید یا مرحله بندی منتشر کرد.
مثال در پروژه:
-
استقرار در AWS EC2 با استفاده از AWS CodePipeline:
- یک نمونه EC2 را برای میزبانی برنامه تنظیم کنید.
- از AWS CodePipeline برای استقرار خودکار استفاده کنید:
- منبع: خط لوله را به مخزن GitHub متصل کنید.
- ساخت: از AWS CodeBuild برای بسته بندی برنامه استفاده کنید.
- Deploy: برنامه را با استفاده از CodeDeploy در نمونه EC2 مستقر کنید.
- برنامه را با دسترسی به IP عمومی EC2 تست کنید.
4. زیرساخت به عنوان کد (IaC)
چیست؟
IaC از کد برای تهیه و مدیریت زیرساخت استفاده میکند که سازگاری و مقیاسپذیری را ممکن میسازد.
مثال در پروژه:
-
تامین زیرساخت با Terraform:
- الف بنویس
main.tf
فایل برای ارائه یک نمونه EC2:
provider "aws" { region = "us-east-1" } resource "aws_instance" "app_server" { ami = "ami-0c55b159cbfafe1f0" instance_type = "t2.micro" tags = { Name = "MovieReviewApp-Server" } }
- الف بنویس
-
اعمال تغییرات:
terraform init terraform apply
5. مدیریت پیکربندی
چیست؟
مدیریت پیکربندی تضمین میکند که سیستمها به طور مداوم در محیطها پیکربندی شدهاند.
مثال در پروژه:
-
برای نصب Node.js یک playbook بنویسید:
- hosts: webservers tasks: - name: Install Node.js apt: name: nodejs state: present
-
کتاب بازی را اجرا کنید:
ansible-playbook -i inventory.ini playbook.yml
6. کانتینرسازی
چیست؟
Containerization برنامه ها و وابستگی های آنها را در ظروف سبک وزن بسته بندی می کند تا به طور مداوم در محیط ها اجرا شوند.
مثال در پروژه:
-
کانتینر کردن برنامه با Docker:
- الف بنویس
Dockerfile
برای باطن Node.js:
FROM node:14 WORKDIR /app COPY . . RUN npm install CMD ["npm", "start"]
- الف بنویس
-
کانتینر را بسازید و اجرا کنید:
docker build -t movie-review-backend . docker run -p 3000:3000 movie-review-backend
7. ارکستراسیون
چیست؟
ارکستراسیون چندین کانتینر را مدیریت می کند و اطمینان می دهد که آنها به طور یکپارچه با هم کار می کنند.
مثال در پروژه:
-
استفاده از Kubernetes برای هماهنگ کردن کانتینرها:
- ایجاد یک
deployment.yaml
فایل:
apiVersion: apps/v1 kind: Deployment metadata: name: movie-review-app spec: replicas: 3 selector: matchLabels: app: movie-review template: metadata: labels: app: movie-review spec: containers: - name: movie-review-backend image: movie-review-backend:latest
- ایجاد یک
-
استقرار در Kubernetes:
kubectl apply -f deployment.yaml
8. نظارت و ثبت
چیست؟
نظارت تضمین میکند که سیستمها به خوبی کار میکنند، در حالی که ثبت گزارش با ردیابی رویدادها و خطاها به عیبیابی مشکلات کمک میکند.
مثال در پروژه:
-
نظارت با پرومتئوس و گرافانا:
- Prometheus را برای جمع آوری معیارهای برنامه نصب کنید.
- با تنظیم داشبورد، این معیارها را در Grafana تجسم کنید.
- معیارهای نمونه برای ردیابی: زمان پاسخ API، نرخ خطا، و حجم درخواست.
9. امنیت در DevOps (DevSecOps)
چیست؟
ادغام امنیت در رویههای DevOps تضمین میکند که آسیبپذیریها زود شناسایی و رفع شوند.
مثال در پروژه:
- آسیب پذیری های گزارش تولید شده را بررسی کنید و آنها را برطرف کنید.
10. ارائه دهندگان ابر
چیست؟
پلتفرمهای ابری مانند AWS، Azure و Google Cloud زیرساختها و ابزارهای مقیاسپذیر را برای میزبانی برنامهها و خدمات ارائه میکنند.
مثال در پروژه:
-
میزبانی برنامه در AWS S3:
- React frontend را در یک سطل S3 آپلود کنید.
- میزبانی وب سایت ایستا را فعال کنید و خط مشی سطل را برای دسترسی عمومی پیکربندی کنید.
- با استفاده از نقطه پایانی S3 به برنامه میزبانی شده دسترسی پیدا کنید.
خلاصه
با استفاده از روشهای DevOps برای ساخت برنامه بررسی فیلم، همه موضوعات اصلی از کنترل نسخه گرفته تا استقرار، نظارت و امنیت را پوشش دادهایم. یادگیری DevOps یک سفر است، اما تجربه عملی با پروژه هایی مانند این رشد شما را تسریع می کند. یادگیری مبارک!