بک اند چیست؟ اگر به حوزه برنامه نویسی وب علاقه داشته باشید، احتمالا تا به امروز عبارت بک اند رو شنیدید. بک اند بخش غیر قابل نمایش هر صفحه از سایت، اپلیکیشن و… هست که شامل تعداد زیادی کد و دیتا میباشد. در این مطلب به بررسی تخصصی مفاهیم و عناصر بک اند در حوزه برنامه نویسی میپردازیم.
تفاوت سایت استاتیک و داینامیک
بک اند چیست ؟ اگر شما به حوزه برنامه نویسی وب علاقه داشته باشید، مفاهیم استاتیک و داینامیک را شنیده اید. تمام وب سایت های موجود در سراسر اینترنت به دو دسته استاتیک و داینامیک تقسیم می شوند. استاتیک در لغت به معنی ثابت بوده و کلمه داینامیک به معنی پویا و غیر ثابت می باشد.
وب سایت های استاتیک وب سایت هایی هستند که محتوای آن ها ثابت بوده و برای تمام کاربران آن سایت به یک شکل نمایش داده می شود.
محتوای وب سایت های استاتیک همگی سمت کلاینت نوشته می شوند و هیچ دیتا و اطلاعاتی در سمت سرور و دیتابیس موجود نیست (در ادامه مقاله در مورد دیتابیس به طور مفصل صحبت خواهیم کرد)
اما وب سایت های داینامیک وب سایت هایی هستند که اطلاعات آن ها از سمت سرور و دیتابیس به کلاینت (فرانت اند) داده می شوند و همچنین ممکن است هر قسمت از وب سایت برای هر شخص نسبت به بقیه کاربران متفاوت باشد.
برای درک بهتر این تفاوت بهتر یگ مثال می زنیم.
یک مثال دیگر این که قسمت نوبار یک وب سایت را در نظر بگیرید.
قطعا مشاهده کرده اید زمانی که برای اولین بار وارد وب سایتی می شوید، در قسمت NavBar دکمه هایی تحت عنوان لاگین و ثبت نام وجود دارند.
اما اگر شما در سایت لاگین کرده باشید و مجددا وارد وب سایت شوید، در این قسمت از نوبار به جای دکمههای ثبت نام و لاگین دکمه ای تحت عنوان “ورود به پنل کاربری” نمایش داده می شود.
همین قسمت از وب سایت نیز به صورت داینامیک پیاده سازی شده و به بک اند مربوط می شود.
نکته بعدی این است که برای ایجاد کوچکترین تغییر در محتوای وب سایت های داینامیک، نیازی به تغییر کد های وب سایت نیست و شما به کمک CMS (پنل مدیریت) وب سایتتان می توانید تمام قسمت های وب سایتتان را کنترل مدیریت کنید.
در حالی که وب سایت های استاتیک به این شکل نیستند و شما برای ایجاد هرگونه تغییر در آن ها، باید سورس کد وب سایت را دستکاری کنید.
تفاوت بک اند و فرانت اند
همان طور که اطلاع دارید حوزه وب به دو قسمت فرانت اند و بک اند تقسیم می شود.
اگر بخواهیم معنی و مفهوم کلمات فرانت بک را مورد بررسی قرار دهیم، فرانت یعنی جلو، ظاهر و قسمت قابل مشاهده از هر چیز و کلمه بک یعنی پشت، باطن و قسمت غیر قابل مشاهده از هر چیز.
در حوزه برنامه نویسی وب نیز دقیقا همین است.
قسمتی از وب سایت که توسط کاربر قابل مشاهده بوده و کاربر می تواند آن قسمت را مشاهده کند، قسمت فرانت اند محسوب شده و قسمتی از وب سایت که توسط کاربر قابل مشاهده نیست قسمت بک اند محسوب می شود.
پیش نیاز هایی از فرانت اند برای بک اند
در ادامه مبحث بک اند چیست به بررسی پیش نیازهای فرانت اند برای بک اند میپردازیم.
اگر فکر می کنید یک برنامه نویس بک اند هیچ نیازی به یادگیری فرانت اند ندارد، سخت در اشتباه هستید.
هر برنامه نویس بک اند برای این که برنامه نویس قوی و خوبی باشد، باید تکنولوژی های اصلی فرانت اند را در حد آشنایی بلد باشد. تکنولوژی هایی مثل:
• Html
• Css
• JavaScript
• jQuery
• BootStrap
و پس از این که با این تکنولوژی ها پروژه های متعددی را به عنوان نمونه کار برای خودتان پیاده سازی کردید، می توانید زبان بک اند خودتان را انتخاب کنید.
اما ممکن است برایتان سوال باشد که بک برنامه نویس بک اند چه نیازی به یادگیری مباحث مربوط به فرانت اند دارد!
برای پاسخ به این سوال، یک شرکت یا تیم برنامه نویسی را در نظر بگیرید که در هر شرکت افراد مختلف با سِمَت ها و تخصص های مختلف وجود دارند که از این سمت ها می توان به برنامه نویس فرانت اند و برنامه نویس بک اند اشاره کرد.
در اکثر شرکت ها زمانی که پروژه ای را شروع می کنند، ابتدا برنامه نویس فرانت اند طرح پروژه را کد نویسی کرده و بعد از این که تمام شد، فرانت پروژه کد نویسی شده است را به برنامه نویس بک اند شرکت تحویل می دهد تا او (برنامه نویس بک اند) سمت سرور پروژه را نیز پیاده سازی کند.
حال اگر برنامه نویس بک اند اطلاعاتی از فرانت اند نداشته باشد و با کد های نوشته شده توسط فرانت اند آشنایی نداشته باشد، سردرگم می شود و مدام باید از برنامه نویس فرانت اند سوال کند تا بتواند راه را تشخیص دهد.
ممکن است برایتان این نیز سوال باشد که یادگیری تکنولوژی های ذکر شده، در چه حدی لازم است!
برای این سوال جواب ثابت و حد و اندازه ای وجود ندارد.
شما به هنوان یک برنامه نویس بک اند همین که بتوانید تقریبا 4 پروژه با تکنولوژی های ذکر شده پیاده سازی کنید کافی است و بعد از آن می توانید زبان بک اند خودتان را انتخاب کنید.
زبان برنامه نویسی سمت سرور چیست؟
همان طور که می دانید برنامه نویسی وب به دو قسمت فرانت اند (سمت کلاینت) و بک اند (سمت سرور) تقسیم می شود. فعالیت در هر کدام از این حوزه ها به علاقه و انتخاب شما بستگی دارد و در هر کدام از آن ها زبان های برنامه نویسی و تکنولوژی های مختلفی وجود دارد که باید فعالان و علاقمندان آن حوزه یاد بگیرند.
به زبان برنامه نویسی که به کمک آن می توانیم سمت سرور یک وب سایت را اپلیکیشن را پیاده سازی کنیم، زبان برنامه نویسی سمت سرور گفته می شود.
از زبان های برنامه نویسی که برای سمت سرور استفاده می شوند، می توان به PHP، پایتون، جاوا، سی شارپ، جاوا اسکریپت و … اشاره کرد.
در ادامه مقاله در مورد این زبان ها بیشتر صحبت خواهیم کرد.
یک برنامه نویس چه مهارت هایی باید داشته باشد؟
این سوال یکی از مهم ترین سوالاتی است که ممکن است برای شما پیش آمده باشد. شما به هر حوزه برنامه نویسی که علاقه داشته و قصد فعالیت در آن را داشته باشید، باید تخصص کافی را در ابزار ها و مفاهیم آن حوزه کسب کنید. بک اند چیست ؟
فعالیت در حوزه برنامه نویسی بک اند نیز تخصص هایی را می طلبد که از برخی از این تخصص ها می توان به موارد زیر اشاره کرد:
دانش حداقلی از فرانت اند
زبان برنامه نویسی و فریمورک مورد علاقه شما در زمینه بک اند
گیت
کار با دیتابیس
API نویسی
امنیت
سوکت نویسی
و …
البته این موارد فقط چند مهارت کلی برای یک برنامه نویس بک اند بود. برای کسب اطلاعات بیشتر در مورد مهارت های یک برنامه نویس بک اند و دریافت یک رودمپ خوب و اصولی برای بک اند، می توانید به وب سایت RoadMap.sh مراجعه کنید.
در ادامه نیز به برخی از این مهارت ها خواهیم پرداخت و در مورد آن ها صحبت می کنیم.
پایگاه داده (دیتابیس) چیست؟
کلمه پایگاه داده و دیتابیس نیز از جمله کلماتی هستند که ممکن است در حوزه برنامه نویسی وب به گوشتان خورده باشند.
دیتابیس یکی از مفاهیم و تکنولوژی هایی است که هر برنامه نویس بک اند با آن سروکار دارد.
همان طور که بالاتر تفاوت وب سایت های استاتیک با وب سایت های داینامیک را متوجه شدیم، در وب سایت های داینامیک نیاز به جایی داریم که بتوانیم اطلاعات وب سایت را در آن قسمت ذخیره سازی کنیم. اطلاعاتی مثل مشخصات کاربران، محصولات، میزان خرید و فروش، مدیران سایت و … .
همه این اطلاعات در جایی به اسم دیتابیس ذخیره و مدیریت می شوند که پیاده سازی آن بر عهده برنامه نویس بک اند است.
دیتابیس های مختلف و متنوعی وجود دارند که از معروف ترین آن ها می توان به MySql, MongoDB, Sql Server, PostgresDB و … اشاره کرد. بک اند چیست ؟
ممکن است برایتان سوال باشد که هر زبان یک دیتابیس خاص دارد یا می توان با یک زبان به دیتابیس های مختلفی وصل شد!
دیتابیس فارغ و جدا از زبان برنامه نویسی شما است و شما می توانید با هر زبانی که برای سمت سرور کار می کنید، به هر دیتابیسی وصل شده و اطلاعات وب سایتتان را در آن ذخیره سازی کنید.
ممکن است برایتان سوال باشد که اطلاعات داخل دیتابیس در چه قالبی ذخیره سازی می شوند.
جالب است بدانید که ساختار هر دیتابیس صرفا با یک دیتابیس دیگر مشابه نیست.
به عنوان مثال قالب ذخیره سازی و نگهداری اطلاعات در دیتابیس Mysql متفاوت با دیتابیس MongoDB است.
همچنین دیتابیس ها به دسته های مختلف مثل رابطه ای، شی گرا و … تقسیم می شوند. به عنوان مثال ساختار دیتابیس Mysql به صورت رابطه ای است. دیتابیس های رابطه ای به دلیل ساختار منظم و خوانایی بالایی که دارند، محبوبیت زیادی دارند.
کدام تکنولوژی های بک اند بازار کار بهتری دارند؟
بک اند چیست ؟ همانطور که میدانید در حوزه های مرتبط با برنامه نویسی تفاوتی نمی کند که با چه زبان و تکنولوژی سروکار دارید. اگر در تکنولوژی که با آن کار می کنید به سطح تخصص رسیده باشید، می توانید وارد بازار کار شده و درآمد های بسیار خوبی را کسب کنید.
اما امروزه موضوع بازار کار یکی از معیار های مهم هر شخصی است که قصد ورود به حوزه برنامه نویسی را دارد. اگر شما یک تکنولوژی را انتخاب کنید که نیاز به نیروی بیشتری در بازار کار برای آن باشد، فرصت های شغلی زیادی را در اختیار دارید و نگران سکونت در شهرستان، مهاجرت و … نیستید. همچنین اگر بعد از استخدام در یک شرکت به مشکلی برخوردید، با خیال راحت می توانید استعفا داده و در شرکت دیگری مشغول به کار شوید.
به همین دلیل در ادامه مقاله به مقایسه تکنولوژی مرتبط با بک اند از لحاظ بازار کار می پردازیم.
برای بررسی بازار کار این حوزه باید به منابعی که در حوزه بازار کار و استخدام فعالیت می کنند مراجعه کنیم. از این دسته وب سایت ها می توان به جاب ویژن، کوئرا، جابینجا، آی استخدام و … اشاره کرد.
تصاویر زیر از وب سایت جابینجا برای بازار کار تکنولوژی های برنامه نویسی PHP، پایتون، نود جی اس و ASP در کشور ایران می باشند:
مهارت های پایه برای یک برنامه نویس بک اند
بک اند چیست ؟ در قسمت های قبلی در مورد چند مورد از مهارت های اصلی یک برنامه نویس بک اند مثل زبان برنامه نویسی سمت سرور، دیتابیس و … صحبت کردیم که مهارت های فنی محسوب می شوند.
اما هر برنامه نویس بک اند علاوه بر مهارت های فنی، باید مهارت های پایه نیز داشته باشند.
همان طور که در مقاله های قبلی در مورد مهارت های پایه ای یک برنامه نویس فرانت اند صحبت کردیم، متوجه شدیم که یک برنامه نویس فرانت اند باید مهارت خلاقیت بالایی را داشته باشد.
به همین ترتیب یک برنامه نویس بک اند نیز باید قوه حل مسئله بالایی داشته و ذهن تحلیلگر داشته باشد.
اما شاید برایتان سوال باشد که این قوه حل مسئله از کجا به دست می آید!
شاید قبلا این جمله را شنیده باشید که “برای برنامه نویس شدن باید علم ریاضی را به خوبی بلد باشید”. این جمله دقیقا برای همین بحث قوه حل مسئله و ذهن تحلیلگر می باشد.
بلد بودن علم ریاضی و کار کردن با آن، قوه حل مسئله شما را تقویت می کند و در حوزه برنامه نویسی می توانید سریع تر و بهتر بحث یادگیری را پیش برده و سریع تر به مقصد برسید.
البته نگران نباشید. قرار نیست شما در حوزه برنامه نویسی بک اند از مباحث مربوط به ریاضی مثل مشتق، اتحاد، انتگرال و … استفاده کنید. فقط و فقط همان قوه حل مسئله و ذهن تحلیلگری که از حل مسائل مربوط به ریاضی به دست آورده اید، در یادگیری برنامه نویسی و فعالیت در این حوزه به شما کمک می کنند تا سریع تر به هدف برسید.
اما ممکن است برایتان سوال باشد که با این توصیفات برای ورود به حوزه برنامه نویسی حتما باید ریاضی بلد باشیم یا نه؟
جواب این سوال منفی است. برای ورود به حوزه برنامه نویسی هیچ گونه اجباری بر بلد بودن تخصصی ریاضی نیست. همان طور که بالاتر گفته شد، فقط به قوه حل مسئله نیاز دارید که این موضوع از راه ریاضی به راحتی کسب می شود.
اما اگر به ریاضی علاقه ای نداشته و آن را به خوبی بلد نیستید، نگران نباشید. خیلی از برنامه نویسان هستند که حتی نسبت به ریاضی حس منفی دارند.
چون که ریاضی فقط شما را سریع تر به مسیر می رساند و اجباری بر آن نیست.
اگر بخواهیم مثالی برای این موضوع بزنیم، فرض کنید که قصد دارید از شهر تهران به شهر تبریز مسافرت کنید. شما هم می توانید با هواپیما و هم با اتوبوس مسافرت خود را انجام دهید. پس برای این مسافرت اجباری بر وجود هواپیما نیست و هواپیما فقط شما را سریع تر به مقصد می رساند.
در بحث برنامه نویسی نیز ریاضی همان هواپیما است. اجباری بر آن نیست ولی وجودش شما را سریع تر به هدف رسانده و سرعت یادگیری شما را افزایش می دهد.
در کل اگر شما علاقه ای به علم ریاضیات ندارید، میتوانید با حل کردن مسائل الگوریتمیک و مطالعه سوالات مسابقات ACM، قوه حل مسئله خود را تقویت کرده و در حوزه برنامه نویسی مشکلی نداشته باشید.
مفهوم API و Api نویسی برای برنامه نویس بک اند
در ادامه مبحث بک اند چیست، مفهوم API و APi رو بررسی میکنیم. اگر در حوزه برنامه نویسی وب فعالیت داشته باشید، قطعا کلمه API را شنیده اید و احتمالا مبحث سختی به نظر بیاید.
اما جالب است بدانید که مفهوم API و کار کردن با آن بسیار آسان بوده و هیچ گونه سختی ندارد.
شما زمانی که قدص دارید از اطلاعات یک سرور و وب سایت استفاده کنید، به اطلاعات آن دسترسی ندارید و مدیر آن وب سایت اطلاعات سرور خود را به طور کامل در اختیار شما قرار نمی دهد.
برای همین منظور یک API نوشته می شود تا برنامه نویسان بتوانند به اطلاعات مجاز آن وب سایت دسترسی داشته باشند.
به عنوان مثال وب سایت دیجی کالا را در نظر بگیرید. شما به اطلاعات محصولات، کاربران و … دیجی کالا دسترسی ندارید.
حال ممکن است قصد داشته باشید که از اطلاعات محصولات دیجی کالا استفاده کنید. برنامه نویس های بک اند دیجی کالا یک API نوشته و در اختیار شما قرار می دهند تا شما به کمک API به اطلاعات هر محصول مثل عنوان، قیمت، تعداد فروش و … دسترسی داشته باشید.
در کل API برای دسترسی به اطلاعاتی که خارج از سرور ما قرار دارند استفاده می شوند.
همان طور که متوجه شدید، Api توسط برنامه نویس بک اند نوشته می شود. اطلاعات در دیتابیس ذخیره می شوند و برای این که برنامه نویس فرانت اند به آن ها دسترسی داشته باشد، یک Api توسط برنامه نویس بک اند نوشته شده و در اختیار برنامه نویس فرانت اند قرار می گیرد و به این ترتیب برنامه نویس فرانت اند اطلاعات بک اند را از API گرفته و در وب سایت آن ها را نمایش می دهد.
نکته قابل توجه این است که علاوه بر برنامه نویس های بک اند، برنامه نویس های فرانت اند نیز باید نحوه کار با API را یاد بگیرند. چون دریافت اطلاعات از API در فرانت اند بر عهده آنها است و فقط نوشتن API بر عهده برنامه نویس بک اند می باشد.
پس در این قسمت مفهوم API را یاد گرفتیم و متوجه شدیم که یکی از مهارت های ضروری که هر برنامه نویس بک اند باید آن را بلد باشد، Api نویسی است.
در چه مدت زمانی می توان به بک اند مسلط شد؟
یکی از پر تکرار ترین سوالاتی که در حوزه برنامه نویسی پرسیده می شود، مدت زمان یادگیری است. خیلی از دوستانی که به تازگی وارد این حوزه می شوند، برایشان این سوال پیش می آید که “در چه مدت زمانی می توانم فلان تکنولوژی را یاد بگیرم و وارد بازار کار شوم؟”.
اگر صادقانه به موضوع نگاه کنیم، هیچ جواب دقیق و ثابتی برای این سوال وجود ندارد.
به عنوان مثال ممکن است یک شخص زبان برنامه نویسی جاوا اسکریپت را در 5 ماه در حد قابل قبول برای بازار کار یاد بگیرد و همچنین شخص دیگری در مدت زمان 10 ماه نتواند به طرح شخص اول برسد.
در اصل مدت زمان یادگیری هر شخص به پارامتر های مختلفی بستگی دارد.
از پارامتر هایی که در مدت زمان یادگیری شما تاثیر دارد، می توان به تایم روزانه شما برای تمرین، سطح تسلط شما در پیش نیاز ها، سطح تسلط شما در زبان انگلیسی، سطح علاقه شما، میزان تایمی که برای مطالعه رفرنس و داکیومنت اختصاص می دهید و … اشاره کرد.
پس به هیچ وجه در مورد مدت زمان یادگیریتان سوالی نپرسید و ذهن خود را مشغول نکنید. به جای پرسیدن این سوال، سعی کنید پارامتر های ذکر شده را تقویت کرده و رعایت کنید.
برنامه نویس بک اند باید امنیت هم کار کند؟
بک اند چیست ؟ میزان تسلط بر موضوع امنیت نیز یکی از پر تکرار ترین سوالاتی است که توسط دوستانی که به تازگی وارد این حوزه می شوند پرسیده می شود.
امنیت و تست نفوذ یکی از حوزه های مرتبط با برنامه نویسی است و نمی توان گفت یک برنامه نویس بک اند حتما باید یک امنیت کار هم باشد. اما به صورت کلی یک برنامه نویس بک اند باید حداقل مهارت های حوزه امنیت را بلد بوده و در پروژه های خود پیاده سازی کند.
به عنوان مثال یک برنامه نویس بک اند باید در در زمینه باگ های Xss، CSRF، Sql Injection و … Validation های مختلف اطلاعات کافی را داشته باشد.
سخن پایانی
بک اند چیست ؟ در این مقاله سعی کردم در مورد بک اند صحبت کرده و به سوالات پرتکراری که در این حوزه پرسیده می شوند پاسخ دهم.برای درک بهتر و عمیق مباحث گفته شده ;i بک اند چیست ؟، پیشنهاد می کنم ویدئوی مقاله را نیز مشاهده کنید و در صورت وجود هرگونه سوال، انتقاد و پیشنهاد در قسمت کامنت های مقاله مطرح کنید. امیدوارم این مقاله برایتان مفید واقع شده باشد.
منبع:
https://sabzlearn.ir/back-end/