
بک اند چیست؟ تعریف، معماری و مهارت های ضروری
ساده بگوییم: بک اند جایی است که منطق کسب وکار، مدیریت داده و امنیت اجرا می شود. فرانت اند درخواست می فرستد و بک اند با اعتبارسنجی، اجرای قواعد و اتصال به دیتابیس پاسخ می دهد. بنابراین اگر دنبال سیستم قابل اتکا هستی، باید بک اند را درست طراحی کنی.
- بک اند چیست و چه وظایفی دارد؟
- بلوک های سازنده: API، دیتابیس، کش، صف
- الگوهای معماری رایج
- امنیت و اعتبارسنجی
- مدیریت داده و تراکنش
- تست و مشاهده پذیری
- دیپلوی و مقیاس پذیری
- انتخاب استک بک اند
- پرسش های پرتکرار
- جمع بندی
بک اند چیست و چه وظایفی دارد؟
بک اند درخواست را دریافت می کند، ورودی را اعتبارسنجی می کند، منطق کسب وکار را اجرا می کند، به منابع داده متصل می شود و پاسخ استاندارد می سازد. همچنین لاگ، ریت لیمیت و خطاها را مدیریت می کند تا سیستم پایدار بماند.
بلوک های سازنده: API، دیتابیس، کش، صف
در قلب بک اند، APIها قرار دارند. سپس دیتابیس برای پایداری داده، کش برای سرعت و صف برای پردازش های غیرفوری وارد می شوند. در نتیجه، تاخیر کم و تاب آوری بالا حاصل می شود.
نمونه API مینیمال (Node.js/Express)
const express=require("express"); const app=express(); app.use(express.json()); app.get("/health",(req,res)=>res.json({ok:true})); app.post("/orders",(req,res)=>{ const {items}=req.body||{}; if(!items||!items.length) return res.status(400).json({error:"invalid"}); res.status(201).json({id:Date.now()}); }); app.listen(3000);
الگوهای معماری رایج
به طور معمول از لایه بندی (Presentation/Domain/Data)، معماری هگزagonal، یا مایکروسرویس استفاده می شود. انتخاب به اندازه تیم، پیچیدگی دامنه و نیاز مقیاس پذیری بستگی دارد. ابتدا ساده شروع کن و بعد جدا کن.
نمونه مینیمال API در #C (Minimal APIs)
var app = WebApplication.CreateBuilder(args).Build(); app.MapGet("/health", () => new { ok = true }); app.MapPost("/orders", (Order o) => Results.Created($"/orders/{Guid.NewGuid()}", o)); app.Run(); record Order(string CustomerId, decimal Total);
امنیت و اعتبارسنجی
امنیت از ورودی امن، احراز هویت، مجوز، نرخ دهی و محافظت در برابر تزریق شروع می شود. همچنین باید اسرار را در Vault نگه داری و لاگ حساس را مینیمم کنی.
نمونه اعتبارسنجی ساده (Express)
app.post("/login",(req,res)=>{ const {email,password}=req.body||{}; if(!/^[^@\s]+@[^@\s]+\.[^@\s]+$/.test(email)) return res.status(400).json({error:"email"}); if((password||"").length<8) return res.status(400).json({error:"weak"}); res.json({token:"...jwt..."}); });
مدیریت داده و تراکنش
مدل سازی داده، ایندکس گذاری و تراکنش های اتمیک حیاتی اند. همچنین الگوهایی مانند CQRS، Read Model و آدیت لاگ، خوانایی و قابلیت پیگیری را بالا می برند.
نمونه تراکنش (SQL)
BEGIN; UPDATE accounts SET balance=balance-100 WHERE id=1; UPDATE accounts SET balance=balance+100 WHERE id=2; COMMIT;
تست و مشاهده پذیری
با تست واحد، یکپارچه و قراردادی، رفتار API را تثبیت کن. سپس با لاگ ساخت یافته، متریک و تریس، مشکلات را سریع شکار کن. در نتیجه Mean-Time-To-Recovery کم می شود.
نمونه تست قراردادی (JSON Schema)
{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","required":["id"],"properties":{"id":{"type":"integer"}}}
دیپلوی و مقیاس پذیری
دیپلوی کانتینری، مهاجرت دیتابیس، و بلواِ/گرین یا کاناری، خطرات انتشار را کم می کند. همچنین با کش توزیع شده، صف و افقی سازی، ظرفیت بالا می رود.
نمونه Dockerfile ساده
FROM node:20-alpine WORKDIR /app COPY package*.json ./ RUN npm ci COPY . . EXPOSE 3000 CMD ["npm","start"]
انتخاب استک بک اند
انتخاب استک به تیم، اکوسیستم و نیازهای غیرعملکردی بستگی دارد. برای تیم کوچک، یک فریم ورک باتجربه و ابزار تست آماده مزیت است. برای پرفورمنس سخت، زبان سیستمی یا بهینه سازی عمیق لازم است. در هر حال، اندازه گیری کن و تصمیم را مستند کن.
- تعریف SLA: تاخیر، دسترس پذیری، بودجه خطا.
- ارزیابی اکوسیستم: کتابخانه ها، جامعه و مستندات.
- پروتوتایپ و بنچمارک روی داده واقعی.
پرسش های پرتکرار درباره بک اند
بک اند چیست و از کجا شروع کنم؟
با HTTP، REST، یک فریم ورک وب و دیتابیس شروع کن. سپس تست، امنیت و دیپلوی را اضافه کن. در نهایت روی مشاهده پذیری سرمایه گذاری کن.
مونولیت بهتر است یا مایکروسرویس؟
ابتدا مونولیت ماژولار انتخاب معقولی است. بعد از رسیدن به پیچیدگی واقعی، سرویس های مستقل را جدا کن.
جمع بندی
حالا می دانی بک اند چیست و چه اجزایی دارد. یک سرویس کوچک بساز، لاگ و تست را جدی بگیر و نتایج را اندازه بگیر. سپس معماری را به صورت تدریجی ارتقا بده. برای ادامه مسیر، راهنماهای داخلی زیر را ببین.
مطالب مرتبط: برنامه نویس کیست؟ و انواع زبان های برنامه نویسی؛ همچنین مسیر آموزش پایتون را دنبال کن.