معرفی و تعریف
توسعه بکاند به مهارت ساخت و نگهداری بخش سمت سرور نرمافزار گفته میشود؛ بخشی که درخواست کاربران یا سرویسهای دیگر را دریافت میکند، منطق کسبوکار را اجرا میکند و اطلاعات را از پایگاه داده میخواند یا در آن تغییر ایجاد میکند.
توسعهدهنده بکاند معمولاً مسئولیتهایی مانند موارد زیر را بر عهده دارد:
طراحی و پیادهسازی API
کار با پایگاه داده
پیادهسازی احراز هویت و مدیریت سطح دسترسی
مدیریت و ثبت خطاها بهگونهای که امکان بررسی و رفع آنها وجود داشته باشد
طراحی سرویسهایی که در برابر افزایش تعداد کاربران و تغییر نیازهای محصول، قابل نگهداری و توسعه باشند
هدف از توسعه بکاند فقط پاسخدادن به درخواستهای کاربران نیست؛ بلکه سرویس باید پایدار، قابلاعتماد، امن و قابل توسعه باشد.
این مهارت به زبان برنامهنویسی یا فریمورک خاصی محدود نیست و میتوان آن را با فناوریهایی مانند Node.js، ASP.NET Core، Laravel و Spring Boot پیادهسازی کرد. توسعهدهندگان بکاند و فولاستک از این مهارت برای ساخت و نگهداری سرویسهای نرمافزاری استفاده میکنند و در برخی تیمها، مهندسان دواپس نیز در بخشهایی از نگهداری و اجرای این سرویسها نقش دارند.
اهمیت و کاربردها
چرا این مهارت مهم است؟
بکاند محل اجرای بسیاری از قواعد و فرایندهای اصلی یک محصول نرمافزاری است. برای مثال، کارهایی مانند موارد زیر معمولاً در این بخش انجام میشوند:
ثبت و پردازش سفارش
محاسبه قیمت
مدیریت حسابهای کاربری
کنترل سطح دسترسی
ذخیره و مدیریت دادهها
ارتباط با سرویسهای خارجی
اگر بکاند بهدرستی طراحی یا پیادهسازی نشود، ممکن است خطای کاربر، ناسازگاری دادهها یا اختلال در عملکرد سرویس ایجاد شود.
کاربرد بکاند در بازار کار
در آگهیهای شغلی ایران ممکن است با عنوانهایی مانند موارد زیر روبهرو شوید:
توسعهدهنده بکاند (Back-end Developer)
برنامهنویس Node.js
برنامهنویس .NET
برنامهنویس PHP/Laravel
برنامهنویس Java
فناوری و سطح مهارت موردنیاز در هر آگهی متفاوت است و باید شرح وظایف هر موقعیت جداگانه بررسی شود. بااینحال، مفاهیمی مانند چرخه درخواست، طراحی API، کار با پایگاه داده، تست و مدیریت خطا در بسیاری از مسیرهای توسعه بکاند مشترک هستند.
برای اینکه نمونهکار در یک مصاحبه فنی قابل ارزیابی باشد، بهتر است بتوانید مدل داده را توضیح دهید، یک قرارداد API مشخص و قابل استفاده طراحی کنید، خطاهای احتمالی را پیشبینی کنید و تغییرات کد را با Git و تستهای مناسب مدیریت کنید.
کاربردها
-
ساخت API برای وب و موبایل
پیادهسازی endpointهایی برای ثبتنام، ورود، نمایش داده، ثبت سفارش یا بهروزرسانی اطلاعات که کلاینت وب یا اپلیکیشن موبایل از آنها استفاده میکند.
-
پیادهسازی منطق کسبوکار
تبدیل قواعد محصول به کد؛ مانند بررسی موجودی پیش از ثبت سفارش، محاسبه تخفیف یا جلوگیری از ثبت درخواست تکراری.
-
مدیریت دادههای عملیاتی
طراحی مدل داده، اجرای عملیات ایجاد، خواندن، ویرایش و حذف و حفظ سازگاری دادهها در پایگاه داده.
-
احراز هویت و کنترل دسترسی
شناسایی کاربر، مدیریت نشست یا توکن و اعمال مجوزهای متفاوت برای نقشهایی مانند کاربر، پشتیبان و مدیر.
-
یکپارچهسازی با سرویسهای بیرونی
ارتباط امن و قابلمدیریت با درگاه پرداخت، پیامک، ایمیل، نقشه، انبار یا APIهای سازمانی.
-
ساخت پردازشهای پسزمینه
اجرای کارهای زمانبر مانند ارسال اعلان، تولید گزارش یا پردازش فایل بدون معطلکردن پاسخ درخواست کاربر.
-
استفاده از کش و صف در سرویسهای نیازمند آن
استفاده از Redis برای کش دادههای پرتکرار، صف کارهای پسزمینه یا محدودسازی نرخ درخواست در صورت نیاز سامانه؛ Redis برای هر سرویس بکاند ضروری نیست.
ابزارهای مرتبط
پیشنیازها
موارد زیر پایههای لازم برای شروع را نشان میدهند.
- آشنایی مقدماتی با مفاهیم برنامهنویسی مانند متغیر، شرط، حلقه، تابع و ساختار داده
- توانایی خواندن مستندات فنی انگلیسی در سطح پایه
مسیر یادگیری توسعه بکاند
-
۳۵ ساعت
نوشتن برنامههای پایه با یک زبان سمت سرور
یک زبان را برای شروع انتخاب کنید و مبانی آن را در عمل یاد بگیرید. JavaScript با Node.js، C# با ASP.NET Core، PHP با Laravel و Java با Spring Boot مسیرهای رایجاند. متغیرها، توابع، کلاسها، مدیریت خطا، کار با فایل و نصب وابستگیها را با تمرینهای کوچک تثبیت کنید.
در پایان این گام باید بتوانید یک برنامه خط فرمان بنویسید که ورودی بگیرد، آن را اعتبارسنجی کند و خروجی یا خطای قابلفهم برگرداند.
-
۳۵ ساعت
درک چرخه درخواست و پاسخ HTTP
مفاهیم HTTP، مسیر، روشهای GET و POST و PUT و DELETE، header، body، کدهای وضعیت و JSON را یاد بگیرید. سپس یک وبسرور ساده بسازید و چند نقطه پایانی API (endpoint) با ورودی و خروجی مشخص پیادهسازی کنید.
با Postman درخواستهای درست و نادرست بفرستید تا تفاوت خطاهای اعتبارسنجی، نبودن منبع و خطای داخلی سرور را درک کنید.
-
۳۰ ساعت
طراحی و پیادهسازی API قابلاستفاده
منابع، مسیرها، قرارداد ورودی و خروجی، صفحهبندی، فیلتر و ترتیب نمایش داده را طراحی کنید. نامگذاری و ساختار پاسخها باید برای توسعهدهنده فرانتاند یا موبایل قابل پیشبینی باشد.
یک API برای موجودیتهایی مانند کاربر، محصول و سفارش بسازید و پیش از کدنویسی، نمونه درخواست و پاسخ هر endpoint را بنویسید.
-
۳۰ ساعت
مدلسازی و پرسوجوی داده
مفاهیم جدول، کلید اصلی و خارجی، رابطهها، محدودیتها، تراکنش و ایندکس را یاد بگیرید. برای یک مسئله واقعی، مدل داده طراحی کنید و عملیات اصلی را با SQL اجرا کنید.
سپس برنامه را به PostgreSQL یا MySQL متصل کنید. ورودی کاربر را اعتبارسنجی کنید و از ساخت پرسوجوی ناامن با الحاق مستقیم متن جلوگیری کنید.
-
۲۵ ساعت
ایمنسازی و قابلاعتماد کردن سرویس
احراز هویت، هشکردن گذرواژه، کنترل دسترسی مبتنی بر نقش، اعتبارسنجی ورودی و مدیریت امن اطلاعات حساس را تمرین کنید. تفاوت خطایی که باید به کاربر نشان داده شود با جزئیاتی که فقط باید در لاگ ثبت شوند را مشخص کنید.
برای مسیرهای مهم تست بنویسید و سناریوهایی مانند داده نامعتبر، دسترسی غیرمجاز، تکرار درخواست و قطع سرویس وابسته را بررسی کنید.
-
۲۵ ساعت
تحویل یک سرویس قابل اجرا و قابل نگهداری
کد را به لایههای روشن تقسیم کنید تا منطق کسبوکار، دسترسی به داده و لایه HTTP در هم آمیخته نشوند. تنظیمات محیطی، لاگ ساختیافته برای رخدادها و خطاهای مهم، معیارهای عملیاتی پایه و راهنمای بررسی خطا را آماده کنید. برای خطاهای اثرگذار بر کاربر یا سرویس، آستانه و هشداردهی مناسب تعریف کنید.
پروژه را با Git نسخهبندی کنید و در صورت امکان آن را با Docker اجرا کنید. خروجی این گام باید پروژهای باشد که فرد دیگری بتواند با راهنما اجرا، endpointهای آن را آزمایش و وضعیت خطاهای اصلی آن را بررسی کند.
برای فردی که مبانی برنامهنویسی را میداند و هفتهای ۱۰ ساعت تمرین میکند، این مسیر معمولاً حدود ۱۵۰ تا ۲۲۰ ساعت زمان میگیرد. شروع از صفر یا یادگیری همزمان یک زبان و فریمورک، این زمان را افزایش میدهد.
زمان تقریبی یادگیری
برآورد مجموع زمان آموزش، مطالعه و تمرین تا رسیدن به سطح کاربردی؛ بسته به پیشزمینه شما میتواند کمتر یا بیشتر باشد.
پروژههای تمرینی
برای آشنایی بهتر با این مهارت، توجه به موارد زیر میتواند مفید باشد.
-
API مدیریت کارها
توضیح پروژه: سرویسی برای ایجاد، ویرایش، حذف و فیلتر کارها بسازید. برای هر کار وضعیت، مهلت و مالک تعریف کنید و خطاهای ورودی نامعتبر را مدیریت کنید.
-
سامانه رزرو نوبت
توضیح پروژه: مدل داده پزشک یا ارائهدهنده خدمت، بازه زمانی و رزرو را طراحی کنید. از رزرو همزمان یک زمان مشخص جلوگیری کنید و وضعیت رزرو را قابل پیگیری نگه دارید.
-
API فروشگاه کوچک
توضیح پروژه: محصول، سبد خرید و سفارش را پیادهسازی کنید. هنگام ثبت سفارش، موجودی را بررسی و مبلغ نهایی را در سمت سرور محاسبه کنید.
-
سرویس احراز هویت و نقشها
توضیح پروژه: ثبتنام، ورود، تغییر گذرواژه و نقشهای کاربر و مدیر را بسازید. endpointهای مدیریتی باید فقط برای نقش مجاز قابل دسترسی باشند.
-
یکپارچهسازی سرویس خارجی با مدیریت خطا
توضیح پروژه: یک API عمومی را فراخوانی کنید و برای timeout، پاسخ نامعتبر و خطای سرویس بیرونی رفتار مشخص داشته باشید. نتیجه و خطاهای مهم را ثبت کنید.
پرسشهای رایج درباره توسعه بکاند
در این بخش، به تعدادی از پرسشهای رایج درباره این مهارت پاسخ داده شده است.
برای شروع توسعه بکاند کدام زبان را انتخاب کنم؟
زبانی را انتخاب کنید که برای آن فرصت یادگیری، نمونه پروژه و آگهی شغلی بیشتری در مسیر هدف شما وجود دارد. Node.js، C#/.NET، PHP/Laravel و Java/Spring Boot گزینههای رایجاند. پس از انتخاب، مدام میان زبانها جابهجا نشوید و یک پروژه کامل بسازید.
آیا بدون یادگیری فرانتاند میتوان بکاندکار شد؟
بله. برای توسعه بکاند لازم نیست رابط کاربری حرفهای بسازید، اما باید بدانید کلاینت چگونه API را فراخوانی میکند و بتوانید پاسخهای قابلاستفاده برای وب یا موبایل طراحی کنید.
آیا SQL برای توسعه بکاند ضروری است؟
برای بیشتر موقعیتهای بکاند، بله. حتی اگر پروژه از ابزارهای لایه دسترسی به داده استفاده کند، درک مدل داده، رابطهها، تراکنش و پرسوجو برای رفع خطا و طراحی درست ضروری است.
چند پروژه برای نشان دادن مهارت بکاند لازم است؟
دو یا سه پروژه کوچک اما کامل معمولاً از تعداد زیادی پروژه نیمهتمام ارزشمندتر است. هر پروژه باید API، پایگاه داده، مدیریت خطا، راهنمای اجرا و تاریخچه قابل بررسی در Git داشته باشد.
تفاوت توسعه بکاند با طراحی و توسعه API چیست؟
طراحی و توسعه API بخشی مهم از توسعه بکاند است. توسعه بکاند دامنه گستردهتری دارد و منطق کسبوکار، داده، امنیت، پردازشهای پسزمینه، خطا و نگهداری سرویس را نیز در بر میگیرد.
آیا یادگیری Docker برای شروع بکاند الزامی است؟
برای شروع ضروری نیست، اما در پروژههای تیمی و استقرار سرویس بسیار مفید است. ابتدا یک API و پایگاه داده را درست بسازید، سپس اجرای پروژه با Docker را به نمونهکار خود اضافه کنید.