معرفی
این نقشه راه شامل ۸ گام است و بر مبنای زبان JavaScript و محیط اجرای Node.js طراحی شده است. از مبانی برنامهنویسی تا ساخت، تست و اجرای کامل یک «رابط برنامهنویسی کاربردی» (API) پیش میروید. API قراردادی است که برنامهها از طریق آن درخواست و پاسخ ردوبدل میکنند.
مجموع زمان گامها حدود ۳۷۰ ساعت برآورد میشود که شامل اجرای تمرینها و پروژههای پیشنهادی است. اگر برای رفع خطا، بازنویسی پروژه، مطالعه مستندات یا تمرین بیشتر به زمان نیاز داشته باشید، این مدت زمان میتواند تا حدود ۵۰۰ ساعت برسد.
ترتیب گامها بر اساس منطق زیر چیده شده است:
نگارش کد قابلفهم
مدلسازی دادهها
ساخت API
رسیدن به مسائل پیشرفتهتر مانند دسترسی، تست، رفع خطا و اجرای قابلتکرار
مقصد نهایی این مسیر، حفظ نام چند فریمورک مختلف نیست، بلکه کسب توانایی تحویل سرویس قابلبررسی با مستندات دقیق و تصمیمهای فنی روشن است. برای آشنایی با بازار کار و شرایط آگهیهای استخدامی، صفحه «توسعهدهنده بکاند» را مطالعه کنید.
مخاطبان نقشه راه
این نقشه راه برای علاقهمندان به برنامهنویسی و توسعه وب طراحی شده است که قصد دارند از مبانی برنامهنویسی تا طراحی ساختار داده و ساخت API را به صورت اصولی فرا بگیرند.
دستاورد پایانی
در پایان این مسیر، یادگیرنده توانایی ساخت، تست، ایمنسازی و کانتینرسازی یک سرویس بکاند کامل به همراه مستندات فنی و قابلیتهای پایگاه داده را به دست میآورد.
پیشنیازها
موارد زیر پایههای لازم برای شروع را نشان میدهند.
- کار با فایلها، پوشهها و نصب نرمافزار در رایانه
- توانایی خواندن تدریجی مستندات فنی انگلیسی
- دسترسی به رایانه شخصی برای اجرای پروژهها
- زمان ثابت هفتگی برای تمرین و رفع خطا
مسیر یادگیری شغل توسعهدهنده بکاند
-
۲۰ ساعت
ساخت محیط توسعه Node.js
هدف گام: محیط Node.js را آماده کنید تا بتوانید پروژه، وابستگیها و مخزن کد را روی رایانه خود اجرا کنید.
این نقشه راه بر JavaScript و Node.js متمرکز است. Node.js محیط اجرای JavaScript در سمت سرور است. یک ویرایشگر کد، Node.js و Git و PostgreSQL را نصب کنید. Git ابزار کنترل نسخه برای ثبت و پیگیری تغییرات کد است.
از همان ابتدا هر تمرین را در مخزن Git نگه دارید. هدف این گام، نصب همه ابزارهای بازار نیست. بلکه باید بتوانید پروژه خالی را اجرا، تغییر و نسخهبندی کنید.
مهارتها
ابزارها
مفاهیم تکمیلی
ساخت و اجرای پروژه محلیمدیریت وابستگیهای پروژهچرخه افزودن، ثبت و بازگردانی تغییراتخواندن فایلهای راهنمای پروژهمدیریت نسخه Node.js و وابستگیهاپروژه پیشنهادی: مخزنی برای «دفتر یادگیری بکاند» بسازید، برنامه سادهای هم از نوع خط فرمان ایجاد کنید و حداقل پنج تغییر معنادار را با پیام ثبت روشن در Git نگه دارید.
معیار پایان گام: میتوانید پروژه را از مخزن تازه دریافتشده اجرا کرده، تغییرات را در شاخه جدا ثبت کنید و علت تفاوت میان فایلهای تغییرکرده و ثبتهای Git را توضیح دهید.
دوره پیشنهادی
-
۷۰ ساعت
تسلط کاربردی بر JavaScript
هدف گام: کد ماژولار بنویسید، ورودیهای نامعتبر را مدیریت کنید و مسئلههای کوچک را بدون کپیکردن راهحل حل کنید.
زبان JavaScript را فراتر از دستورهای ساده بیاموزید. مفاهیم زیر را به دقت تمرین کنید:
توابع و اشیاء
آرایهها و ماژولها
مدیریت خطا
برنامهنویسی ناهمگام
درخواستهای وب و عملیات پایگاه داده بیشتر اوقات ناهمگام هستند. بنابراین درک مفاهیم Promise و «Async/Await» اهمیت زیادی دارد. تا زمانی که نتوانید مسئله کوچکی را به توابع قابل آزمون تقسیم کنید، وارد فریمورکها نشوید. تفکیک مسئولیتها، اعتبارسنجی ورودی و مدیریت خطا را در تمرینهای کوچک تکرار کنید.
مهارتها
ابزارها
مفاهیم تکمیلی
توابع و محدوده متغیرهاساختارهای داده پایهماژولبندی کدمدیریت خطا با استثناهابرنامهنویسی ناهمگاماعتبارسنجی ورودیخواندن و نوشتن فایلپروژه پیشنهادی: برنامهای برای مدیریت وظیفه خط فرمان بسازید که وظیفهها را در فایل ذخیره کرده، ورودی نادرست را رد کند و امکان افزودن، تغییر وضعیت و جستوجو داشته باشد.
معیار پایان گام: میتوانید برنامه را به چند ماژول تقسیم کرده، خطای ورودی را بدون توقف ناگهانی برنامه مدیریت کنید و دلیل استفاده از عملیات ناهمگام را در مثال توضیح دهید.
دوره پیشنهادی
-
۵۰ ساعت
مدلسازی داده و یادگیری SQL
هدف گام: دادههای مسئله محصول را به جدولها و ارتباطهای درست تبدیل کنید و پرسوجوهای مورد نیاز سرویس را بنویسید.
زبان SQL ابزار استاندارد برای تعریف، خواندن و تغییر دادهها در پایگاه داده است. طراحی پایگاه داده به شکل مستقیم بر سرعت و صحت سرویس اثر میگذارد. مفاهیم زیر را با پایگاه داده «PostgreSQL» تمرین کنید:
جداول و ساختار داده
کلیدهای اصلی و خارجی
روابط یکبهچند
محدودیتهای داده
تراکنشها
«شاخصها» (Indexes)
با استفاده از دستورات SQL دادهها را درج، بازیابی، ویرایش و حذف کنید. سپس پرسوجوهای چندجدولی، صفحهبندی و مرتبسازی را بنویسید.
مهارتها
ابزارها
مفاهیم تکمیلی
مدلسازی موجودیت و رابطهکلید اصلی و کلید خارجیمحدودیتهای صحت دادهپرسوجوهای انتخاب و اتصال جدولهاتراکنشهای پایگاه دادهصفحهبندی دادهشاخص و بررسی مقدماتی کندی پرسوجوپروژه پیشنهادی: طرح دادهای برای سامانه سفارش ساده شامل کاربر، کالا، سفارش و ردیف سفارش را طراحی کنید و پرسوجوهای گزارش سفارشهای هر کاربر و کالاهای پرفروش را بنویسید.
معیار پایان گام: میتوانید دلیل انتخاب رابطهها را توضیح دهید، تراکنشی برای ثبت سفارش بنویسید و با SQL داده مورد نیاز API فهرست را همراه با صفحهبندی دریافت کنید.
دوره پیشنهادی
-
۶۵ ساعت
ساخت API و منطق کسبوکار
هدف گام: یک سرویس HTTP با قرارداد روشن بسازید که داده را اعتبارسنجی و منطق محصول را اجرا کند.
فریمورک وبی مناسب برای Node.js انتخاب کنید و چرخه درخواست تا پاسخ را بیاموزید. تمرکز خود را روی درک جریان درخواست، اعتبارسنجی، دسترسی به داده و ساخت پاسخ بگذارید و از حفظ کردن ساختار پوشههای پروژه پرهیز کنید.
برای هر API موارد زیر را مشخص کنید:
«مسیر دسترسی» (Route)
متد HTTP
ورودیهای مورد نیاز
پاسخهای موفق و خطا
سطوح دسترسی
منطق کسبوکار را از لایه دریافت درخواست جدا نگه دارید تا تست و نگهداری آن سادهتر شود. از ابزار Postman برای تست و ارسال درخواستها استفاده کنید.
مهارتها
ابزارها
مفاهیم تکمیلی
چرخه درخواست و پاسخ HTTPطراحی مسیرهای APIکدهای وضعیت HTTPاعتبارسنجی بدنه و پارامترهای درخواستساختار پاسخ و پیام خطاجداسازی لایههای سرویس و دادهمستندسازی قرارداد APIپروژه پیشنهادی: برای سامانه سفارش گام قبل، API-های ثبتنام کاربر، فهرست کالا، ایجاد سفارش و مشاهده سفارشهای کاربر را بسازید و مجموعه درخواستهای Postman را همراه پروژه نگه دارید.
معیار پایان گام: API ورودی نامعتبر را با پاسخ قابل پیشبینی رد کرده، داده را در پایگاه داده ذخیره میکند و همتیمیها میتوانند با مستندات کوتاه، درخواستهای اصلی را اجرا کنند.
-
۴۰ ساعت
احراز هویت، مجوزدهی و امنیت پایه
هدف گام: دسترسی کاربران را کنترل کنید و خطاهای رایج امنیتی ناشی از اعتماد به ورودی کاربر را کاهش دهید.
احراز هویت به معنای تشخیص هویت کاربر و مجوزدهی به معنای تعیین عملیات مجاز او است. این دو مفهوم را از یکدیگر تفکیک کنید. برای پروژه تمرینی، قابلیتهای زیر را پیادهسازی کنید:
ثبتنام و ورود کاربران
نگهداری امن گذرواژهها
محافظت از مسیرهای خصوصی
هر ورودی را در سمت سرور اعتبارسنجی کنید، حتی اگر فرانتاند نیز این کار را انجام میدهد. اطلاعات حساس و کلیدهای محرمانه را در مخزن کد ثبت نکنید و متغیرهای محیطی را جدا نگه دارید. هدف در این مرحله، درک مرزهای دسترسی و خطرات افشای اطلاعات است.
مهارتها
ابزارها
مفاهیم تکمیلی
تفاوت احراز هویت و مجوزدهیهشکردن گذرواژهمدیریت نشست یا توکن دسترسیکنترل دسترسی مبتنی بر نقشاعتبارسنجی سمت سرورمدیریت متغیرهای محیطیپرهیز از افشای داده در پیام خطاپروژه پیشنهادی: به API سفارش نقشهای کاربر و مدیر را اضافه کنید. کاربر فقط سفارشهای خود را ببیند و فقط مدیر بتواند کالا ایجاد یا ویرایش کند.
معیار پایان گام: میتوانید با دو حساب کاربری متفاوت، محدودیت دسترسی را آزمایش کنید و نشان دهید که تغییر شناسه در درخواست، داده کاربر دیگر را افشا نمیکند.
-
۴۵ ساعت
تست، خطایابی و کیفیت کد
هدف گام: تغییرات مهم را با تست محافظت کنید و بتوانید خطای سرویس را از روی نشانهها بازتولید و بررسی کنید.
تست فقط برای افزایش تعداد فایلها نیست. ابتدا بخشهایی را تست کنید که احتمال خطا یا هزینه تغییرشان بالاست:
محاسبه مبلغ سفارش
کنترل موجودی
مجوز دسترسی و اعتبارسنجی
برای منطق مستقل، تست واحد بنویسید و برای API-های مهم، آزمون یکپارچهسازی انجام دهید.
خطاها را طوری ثبت کنید که برای رفع مشکل مفید باشند، اما گذرواژه، توکن یا داده حساس کاربر را در لاگ ننویسید. بازبینی کد نیز بخشی از یادگیری است، تغییرات کوچک، پیام ثبت روشن و توضیح دلیل تصمیمها، دریافت بازخورد را آسانتر میکند.
مهارتها
ابزارها
مفاهیم تکمیلی
تست واحد منطق کسبوکارتست یکپارچهسازی APIداده آزمایشی و جداسازی محیط تستبازتولید خطاثبت رخداد و خطابازبینی تغییرات کدمدیریت خطاهای غیرمنتظرهپروژه پیشنهادی: برای ثبت سفارش و کنترل دسترسی پروژه خود، تست بنویسید. سپس باگی عمدی در محاسبه مبلغ ایجاد کنید، آن را با تست آشکار و پس از رفع، تغییر را در Git ثبت کنید.
معیار پایان گام: میتوانید تستها را با کمک دستور سادهای اجرا کنید، خطای گزارش شده را بازتولید کرده و توضیح دهید کدام بخشها با تست واحد و کدام بخشها با تست یکپارچهسازی پوشش داده شدهاند.
-
۳۵ ساعت
عملکرد، کش و رفتار سرویس در خطا
هدف گام: گلوگاههای ساده سرویس را تشخیص دهید و برای دادههای پرتکرار، خطاها و درخواستهای همزمان تصمیم آگاهانه بگیرید.
پیش از افزودن کش، علت کندی را بررسی کنید. بسیاری از مشکلات از کوئری نامناسب، دریافت داده بیش از نیاز یا نبود شاخص مناسب میآیند. زمان پاسخ API را پیش و پس از تغییر مقایسه کنید و اثر تغییر را با داده آزمایشی مشاهده کنید.
Redis پایگاه دادهای است که بر روی حافظه اصلی کار میکند. میتوانید آن را برای تمرین کش و مدیریت دادههای موقت به کار ببرید، اما آن را جایگزین دیتابیس اصلی نکنید. وضعیتهای خطا و تلاش مجدد را نیز در سناریوهای حساس مانند ثبت سفارش مدیریت کنید.
مهارتها
ابزارها
مفاهیم تکمیلی
اندازهگیری زمان پاسخ APIتحلیل مقدماتی پرسوجوی کندانتخاب داده مناسب برای کشزمان انقضای داده کششدهمدیریت خطاهای وابستگیهاجلوگیری از عملیات تکراریثبت شناسه درخواست برای پیگیری خطاپروژه پیشنهادی: برای API فهرست کالا کش کوتاهمدت اضافه کنید، زمان پاسخ را ثبت کنید و سناریوی ثبت سفارش تکراری را طوری مدیریت کنید که سفارش ناخواسته دو بار ثبت نشود.
معیار پایان گام: میتوانید توضیح دهید کش در کدام مسیر استفاده شده، چه زمانی نامعتبر میشود و چرا پیش از افزودن آن، پرسوجوی پایگاه داده را بررسی کردهاید.
-
۴۵ ساعت
کانتینرسازی و تکمیل پروژه قابل ارائه
هدف گام: پروژه را به شکلی قابل اجرای تکرارپذیر بستهبندی کنید و یک نمونهکار بکاند با مستندات روشن تحویل دهید.
ابزار Docker محیط اجرای برنامه و وابستگیهای آن را در بستهای تکرارپذیر استاندارد میکند. سرویس بکاند، پایگاه داده و Redis را با ابزار Docker Compose در محیط محلی هماهنگ و اجرا کنید. فایلهای تنظیمات واقعی و اطلاعات محرمانه را در مخزن عمومی قرار ندهید و تنها فایلهای نمونه را منتشر سازید.
پروژه نهایی باید مسئلهای واقعی را حل کند. فایل README جامع شامل شرح مسئله، معماری ساده، روش اجرا، متغیرهای محیطی و محدودیتهای شناخته شده تهیه کنید.
مهارتها
ابزارها
مفاهیم تکمیلی
ساخت محیط اجرای تکرارپذیرمدیریت تنظیمات محیطیاتصال سرویس و پایگاه داده در محیط محلیمستندسازی روش اجرامستندسازی APIهای اصلیثبت محدودیتها و تصمیمهای فنیآمادهسازی نسخه قابل بازبینی پروژهپروژه پیشنهادی: پروژه نهایی را به سرویس مدیریت سفارش، رزرو نوبت یا کتابخانه تبدیل کنید که احراز هویت، نقش کاربر، API مستند، PostgreSQL، چند تست مهم و اجرای Docker داشته باشد.
معیار پایان گام: شخص دیگری میتواند با راهنمای پروژه، سرویس را اجرا کرده و داده نمونه ایجاد کند. همچنین میتواند API-های اصلی را آزمایش کند و تصمیمهای کلیدی شما درباره داده، دسترسی و خطا را در مستندات بخواند.
زمان تقریبی یادگیری
برآورد مجموع زمان آموزش، مطالعه و تمرین تا رسیدن به سطح کاربردی؛ بسته به پیشزمینه شما میتواند کمتر یا بیشتر باشد.
ابزارهای مسیر
برای آشنایی بهتر با این مسیر، توجه به موارد زیر میتواند مفید باشد.
خطاهای رایج مسیر
در ادامه، مهمترین موارد این بخش به تفکیک معرفی شدهاند.
-
یادگیری همزمان چند پشته بکاند
برای نخستین پروژه کامل، یک زبان و یک فریمورک اصلی انتخاب کنید. مفاهیم مشترک مانند API، SQL، تست و Git را عمیق تمرین کنید. سپس در صورت نیاز، فناوری دوم را با مقایسه همان مفاهیم یاد بگیرید.
-
ساخت API بدون فهم مدل داده
ابتدا ساختار جداول و روابط دیتابیس را طراحی کنید و سپس به سراغ کدنویسی API بروید.
-
اعتماد به اعتبارسنجی فرانتاند
هر ورودی را در سمت سرور بررسی کنید. درخواستهای نامعتبر را با Postman ارسال کنید تا مطمئن شوید API مستقل از رابط کاربری نیز داده نامعتبر یا دسترسی غیرمجاز را نمیپذیرد.
-
کپیکردن احراز هویت بدون فهم دسترسی
میان احراز هویت و مجوزدهی تفاوت بگذارید. برای هر مسیری مشخص کنید چه کسی میتواند آن را اجرا کند و با حسابهای کاربری متفاوت، این محدودیت را آزمایش کنید.
-
افزودن Redis یا Docker بدون مسئله مشخص
ابتدا مسئله را مشخص کنید. برای مثال، کدام مسیر کند است، به چه محیطی برای اجرای تکرارپذیر نیاز دارید یا چه دادههایی باید برای مدت کوتاهی ذخیره شوند؟ پس از شناسایی نیاز، ابزار مناسب را اضافه کرده و تاثیر آن را ثبت کنید.
-
نداشتن تست برای منطق حساس
با سناریوهای پرریسک شروع کنید: - مبلغ - موجودی - سطح دسترسی - و ثبت سفارش لازم نیست همه خطوط کد را تست کنید، اما باید تغییرات مهم بتوانند خطاهای قابل پیشبینی را آشکار کنند.
-
نمونهکار غیرقابل اجرا یا بدون راهنما
یک فایل README کوتاه و دقیق بنویسید و نمونهای از متغیرهای محیطی مورد نیاز پروژه را ارائه دهید. سپس، اجرای پروژه را در محیط تازهای آزمایش کنید. اطلاعات محرمانه را هرگز در مخزن عمومی ثبت نکنید.
چکلیست آمادگی شغلی
موارد زیر را یکبهیک بررسی کنید تا چیزی جا نماند:
- میتوانم با کمک پشته اصلی، API دارای مسیر، ورودی معتبر و پاسخ خطای مشخص بسازم.
- میتوانم داده مسئله را به جدولها و رابطههای پایگاه داده تبدیل کنم و SQL بنویسم.
- میتوانم احراز هویت و کنترل دسترسی پایه را برای مسیرهای خصوصی پیادهسازی و آزمایش کنم.
- میتوانم برای منطق حساس و API-های مهم، تست واحد یا یکپارچهسازی بنویسم.
- میتوانم با Git تغییرات را در شاخهای جدا مدیریت کنم و پیام ثبت قابل فهم بنویسم.
- میتوانم علت خطای API را با بازتولید درخواست، بررسی داده و ثبت خطا پیگیری کنم.
- میتوانم پروژه بکاند را با Docker و تنظیمات محیطی نمونه اجرا کنم.
- میتوانم پروژه قابل اجرایی با README، مستندات API و توضیح تصمیمهای فنی ارائه کنم.
پرسشهای پرتکرار
پرسشها و پاسخهای زیر، برخی از موضوعات مهم درباره نقشه راه شغلی توسعهدهنده بکاند را روشن میکنند.
یادگیری بکاند به طور معمول چقدر زمان میبرد؟
مجموع زمان پیشنهادی گامهای این نقشه ۳۷۰ ساعت است. اگر برای رفع خطا، تکرار تمرینها، مطالعه مستندات و بازنویسی پروژه زمان بیشتری بگذارید، این مسیر معمولاً تا حدود ۵۰۰ ساعت طول میکشد. زمان بیشتر برای افراد تازهکار در JavaScript یا کسانی لازم است که تمرینها را مستقل حل میکنند.
برای شروع بکاند Node.js یا Laravel یا ASP.NET Core یا Spring Boot را انتخاب کنم؟
این نقشه راه به طور عملی بر Node.js و JavaScript متمرکز است. اگر JavaScript را میدانید یا میخواهید زبانی را در فرانتاند و بکاند به کار ببرید، این مسیر مناسب است. برای Laravel یا ASP.NET Core یا Spring Boot باید نقشه راه اختصاصی همان پشته را دنبال کنید.
آیا برای بکاند باید فرانتاند هم یاد بگیرم؟
برای شروع خیر. دانستن مقدماتی HTTP، فرمها و نحوه مصرف API مفید است، اما تمرکز اصلی شما باید بر برنامهنویسی سمت سرور، API، پایگاه داده، تست و خطایابی باشد. همکاری بکاند با فرانتاند از طریق قرارداد API شکل میگیرد.
آیا SQL را میتوانم بعد از یادگیری فریمورک یاد بگیرم؟
خیر، درک ساختار پایگاه داده و زبان SQL پیشنیاز اصلی طراحی هر سیستم بکاند است و باید همزمان با آن یاد گرفته شود.
برای نمونهکار بکاند چند پروژه لازم است؟
داشتن دو یا سه پروژه کامل و یکپارچه همراه با مستندات و مخزن گیتهاب برای اثبات مهارتها کفایت میکند.
آیا Docker برای موقعیت جونیور ضروری است؟
همه آگهیها آن را الزام نمیدانند، اما بله، آشنایی با نحوه اجرای سرویسها در کانتینر برای توسعهدهندگان سطح مقدماتی یک مزیت رقابتی مهم محسوب میشود.
آیا باید پیش از شروع کار، معماری مایکروسرویس را یاد بگیرم؟
خیر، در شروع مسیر تمرکز خود را روی ساخت برنامههای یکپارچه (Monolith) بگذارید و پس از تسلط به سراغ معماریهای توزیع شده بروید.
آموزشهای مرتبط در فرادرس
-
آموزش مقدماتی نود جی اس Node.js + گواهینامه
-
آموزش پروژه محور React و Node.js، رجیستریشن و ساخت پنل ادمین + گواهینامه
-
آموزش ساخت API با Express.js و Node.js + گواهینامه
-
آموزش امنیت در نود جی اس Node.js + گواهینامه
-
آموزش پروژه محور Passport.js در Node.js، سیستم امنیت و احراز هویت + گواهینامه
-
REST چیست؟ | همه چیز درباره RESTful API، به زبان ساده