مرور سریع DevOps و ابزارهای زیرساخت
جمعبندی نکات کلیدی CI/CD، Docker، Azure، Git و Terraform برای مرور شب قبل مصاحبههای DevOps و زیرساخت.
این جزوه مهمترین نکات DevOps، کانتینر و ابر را که در مصاحبههای برنامهنویسی و زیرساخت پرتکرارند، در یک صفحه جمع کرده تا در کمترین زمان مرور کنید. نکات ⭐ (طلایی) پرتکرارترین سؤالات مصاحبه هستند — اگر وقت کم دارید، فقط همانها را بخوانید.
فهرست بخشها
DevOps0/5
DevOps یعنی همکاری تیم توسعه (Dev) و عملیات (Ops) برای خودکارسازی فرآیند ساخت، تست و استقرار نرمافزار.
اگر در مصاحبه پرسیدند تفاوت CI و CD چیست، بگو: CI یعنی ادغام و تست خودکار کد بعد از هر Commit، CD یعنی انتشار خودکار همان کد تستشده روی محیط Production.
# مثال واقعی یک پروژه ASP.NET Core API
git push # 1. کد Push میشود
# 2. CI بهطور خودکار Build میکند
# 3. تستها اجرا میشوند
# 4. Docker Image ساخته میشود
# 5. روی سرور Deploy میشود
# 6. کاربران نسخه جدید را دریافت میکنند، بدون کپی دستی فایل
OpenTelemetry0/5
OpenTelemetry استانداردی متنباز برای جمعآوری دادههای Observability (لاگ، متریک و Trace) در برنامههای .NET است.
dotnet add package OpenTelemetry.Extensions.Hosting
dotnet add package OpenTelemetry.Exporter.Console
using OpenTelemetry.Trace;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddOpenTelemetry()
.WithTracing(tracing =>
{
tracing
.AddAspNetCoreInstrumentation()
.AddConsoleExporter();
});
var app = builder.Build();
app.MapGet("/", () => "Hello");
app.Run();
GET /orders/1
Request
├── Database Query
├── Redis Call
└── External API Call
اگر در مصاحبه پرسیدند OpenTelemetry چیست، کوتاه بگو: استاندارد متنباز Observability در .NET که Log، Metric و Trace را جمعآوری و به ابزارهایی مثل Jaeger، Prometheus و Grafana ارسال میکند تا عملکرد و مشکلات سیستمهای توزیعشده تحلیل شود.
Azure - سرویسهای اصلی برای برنامهنویس .NET0/5
Microsoft Azure مجموعه سرویسهای ابری است که امکان اجرای برنامههای ASP.NET Core بدون خرید و مدیریت سرور فیزیکی را فراهم میکند.
[HttpGet]
public string Hello()
{
return "Hello Azure";
}
"Server=myserver.database.windows.net;" +
"Database=ShopDb;" +
"User Id=admin;" +
"Password=123;"
BlobClient blobClient = new BlobClient(
connectionString,
"images",
"profile.jpg");
Docker0/5
Docker ابزاری برای بستهبندی برنامه بههمراه تمام وابستگیهایش داخل یک Container قابل اجرا در هر محیطی است.
اشتباه رایج این است که Image و Container را یکی فرض کنند؛ Image فقط الگوی ثابت (فایل نصبکننده) است و Container نمونه در حال اجرای آن Image است.
# نمایش کانتینرهای در حال اجرا
docker ps
# نمایش همه کانتینرها (حتی متوقفشده)
docker ps -a
# توقف یک کانتینر
docker stop CONTAINER_ID
# حذف یک کانتینر
docker rm CONTAINER_ID
# نمایش Imageها و حذف یک Image
docker images
docker rmi nginx
docker run -d -p 8080:80 nginx
# ورود به داخل کانتینر (مثلاً یک شل لینوکسی)
docker exec -it my-nginx bash
FROM node:18
WORKDIR /app
COPY . .
RUN npm install
CMD ["npm", "start"]
docker build -t my-app .
docker run -p 3000:3000 my-app
docker run -v mydata:/data nginx
services:
app:
build: .
ports:
- "3000:3000"
db:
image: mysql
docker compose up
docker compose down
Git - دستورات کاربردی0/5
Git مهمترین ابزار کنترل نسخه است که در تقریباً همه پروژههای .NET برای مدیریت کد، همکاری تیمی و تاریخچه تغییرات استفاده میشود.
# گرفتن آخرین تغییرات
git pull
# وضعیت تغییرات
git status
# اضافه کردن تغییرات
git add .
# ثبت تغییرات
git commit -m "Fix user authentication"
# ارسال به سرور
git push
# ساخت و سوییچ به Branch جدید
git switch -c feature-payment
# تغییرات...
git add .
git commit -m "Add payment service"
# ارسال Branch
git push origin feature-payment
git restore Program.cs
git restore --staged a.cs
git revert abc123
git reset --hard HEAD-1
git reset --hard تاریخچه و تغییرات را بهطور غیرقابل بازگشت حذف میکند؛ در Branchهای مشترک بهجای آن از git revert استفاده کن.
git cherry-pick a12bc34
Scrum0/5
Scrum یک چارچوب Agile برای مدیریت پروژه است که با تقسیم کار به بخشهای کوچک و بازههای زمانی کوتاه (Sprint)، تحویل سریعتر و انعطاف بیشتر را ممکن میکند.
Terraform0/5
Terraform ابزاری برای مدیریت زیرساخت بهصورت کد (Infrastructure as Code) است که منابع Cloud مثل Azure را از روی فایلهای متنی میسازد.
resource "azurerm_resource_group" "app" {
name = "myapp-rg"
location = "West Europe"
}
terraform init
terraform plan
terraform apply
# حذف تمام منابع ساختهشده
terraform destroy
چرا از Azure استفاده کنیم؟0/5
مقایسه هزینه، مدیریت و مقیاسپذیری بین خرید و مدیریت سرور شخصی در برابر استفاده از Azure.
اگر پرسیدند چرا Azure بهجای سرور اختصاصی، تمرکز جواب باید روی سه محور باشد: کاهش هزینه نگهداری و مدیریت، مقیاسپذیری خودکار (Auto Scaling) و پرداخت بر اساس مصرف.
