اگر کمی درباره برنامهنویسی خوانده یا شنیده باشید، حتما با واژه بکاند (Back-End) برخورد کردهاید. ما در این مقاله، قصد داریم به زبان ساده بگوییم بک اند چیست، چه تفاوتی با فرانت اند دارد و برای توسعه بک اند از چه زبانها و فریمورکهایی میتوان استفاده کرد. اگر شما هم میخواهید به جواب این سوالها دست پیدا کنید، حتما با ادامه این مقاله، همراه ما باشید.
بک اند چیست؟
اگر بخواهیم خیلی ساده به این سوال پاسخ دهیم که بکاند (Back-End) چیست، باید بگوییم که برنامهنویسان و توسعهدهندگان به دو دسته تقسیم میشوند. دسته اول فرانتاند (Front End) و دسته دوم بکاند (Back end) نام دارند.
اگر به عبارت Back-End توجه کنید، واژه Back را در آن مشاهده خواهید کرد. Back به معنای پشت، عقب یا کلماتی از این دست است؛ بنابراین، با توجه به این کلمه، میتوان به این مسئله پی برد که بکاند به کاری اشاره دارد که در پشت صحنه انجام میشود و قابل دیدن نیست.
در واقع، میتوانیم بگوییم که به بخشی از یک وبسایت یا نرمافزار که توسط کاربران دیده نمیشود، بکاند گفته میشود که با برنامهنویسی سمت سرور یا server side هم آن را میشناسند؛ چرا که کدهای بکاند از طریق یک سرور به مرورگر کاربران فرستاده میشوند.
برای این که بتوانید کدهای بکاند را بنویسید، به سه چیز احتیاج دارید. در مرحله اول به کدها احتیاج دارید. در مرحله بعد به سروری نیاز دارید که بتواند کدهای شما را بگیرد و آنها را پردازش و اجرا کند. مورد سوم هم یک دیتابیس است. زمانی بکاند میتواند قدرت اصلی خود را به دست آورد که بتواند با دیتابیس ارتباط برقرار کند و به آن وصل شود.
آشنایی با مفاهیم Client Side و Server Side
در قسمت قبل به عبارت سرورساید (Server Side) اشاره کردیم. قبل از این که بخواهیم بیشتر به این سوال بپردازیم که بکاند (Back-End) چیست، شاید بد نباشد این مفهوم را کمی باز کنیم.
در بسیاری از اوقات در کنار عبارت سرور ساید، شاهد عبارت کلاینتساید (Client Side) هم هستیم. به زبانهایی که در سمت کاربر کار میکنند، کلاینتساید گفته میشود. به مجموعه کارهایی که این زبانها مثل HTML، CSS، Javascript و… انجام میدهند، طراحی وب یا Front End Development گفته میشود.
از طرفی، زبانهایی که برای اجرا شدن به یک سرور احتیاج دارند، جزو دسته سرورساید قرار میگیرند و به مجموعه کارهایی که این دسته از زبانها انجام میدهند، برنامهنویسی بکاند یا Back End Development گفته میشود؛ بنابراین، برنامهنویسی بکاند، سمت سرور و سرورساید، همه به یک معنا هستند. از آن طرف هم کدنویسی فرانتاند، سمت کلاینت، کلاینتساید و سمت کاربر یک مفهوم مشترک را انتقال میدهند.
تفاوت فرانت اند با بک اند چیست؟
برای آنکه بهتر درک کنید بکاند (Back-End) چیست، اشاره به تفاوتهای فرانتاند و بکاند میتواند راهگشا باشد؛ اما شاید بهتر باشد قبل از آن، به این سوال پاسخ دهیم که فرانت اند چیست؟
به بخشهایی از یک سایت یا اپلیکیشن که توسط کاربر قابل مشاهده است، فرانتاند گفته میشود. ساخت لیستها، ساخت منوها، استایلدهی به عکسها، استایلدهی به متنها و هر چیزی که مربوط به ویژگیهای بصری میشود، به فرانتاند مربوط است؛ بنابراین، فرانتاند به ساخت هر آن چیزی گفته میشود که کاربر میتواند آن را از طریق مانیتور ببیند؛ اما عملیات پشت صحنه، منطقها و آنچه که توسط کاربر دیده نمیشود، به بکاند مربوط میشود.
شما برای این که بتوانید یک وبسایت ایجاد کنید، هم به فرانتاند و هم به بکاند احتیاج دارید. بنابر آنچه تاکنون گفتهایم، باید فهمیده باشید که با کمک فرانتاند میتوانید به زیباییهای ظاهری سایت بپردازید و با کمک بکاند، میتوانید کارهای پشت صحنه وبسایت را انجام دهید.
یک متخصص بک اند، اطلاعات را از دیتابیس دریافت میکند و به کاربر نشان میدهد، همچنین اطلاعات را از کاربر میگیرد و به دیتابیس وارد میکند. مدیریت اطلاعات دیتابیس، حذف اطلاعات، ویرایش و آپدیت آنها از کارهاییست که یک بکاندکار انجام میدهد.
کدهای بکاند را هیچکس به غیر از برنامهنویس نمیتواند ببیند. مثال صحنه تئاتر، یک مثال خوب برای روشنشدن تفاوتهای بکاند و فرانتاند است. اگرچه ممکن است این مثال را در جاهای مختلفی خوانده یا شنیده باشید، اما تکرار دوباره آن بیضرر است.
در یک صحنه تئاتر، بازیگران نقش فرانتاند را بازی میکنند؛ عوامل پشت صحنه، بکاند هستند و تماشاچیان، کاربرانی هستند که قادرند بازیگران را ببینند؛ اما از مشاهده عوامل پشت صحنه عاجزند. اگرچه عوامل پشت صحنه قابل رویت نیستند، اما تاثیر خود را در خروجی کار خواهند گذاشت.
فرض کنید شما صاحب یک کسبوکار هستید و میخواهید برای آشنا شدن مردم با کسبوکارتان، یک سایت بزنید. وقتی افراد وارد سایت شما میشوند، آنچه را که مشاهده میکنند، برای مثال متنهای نوشتهشده، عکسها و انیمیشن، حاصل کار فرانتاند است.
اما فرض کنید افراد میخواهند در سایت شما نظر خود را ثبت کنند یا کالایی را سفارش دهند. برای این کارها، شما باید از یک تکنولوژی استفاده کنید که توانایی ذخیره اطلاعاتی مثل نام کاربر، آدرس، کارت اعتباری و … را داشته باشد. اینجاست که پای بکاند به ماجرا باز میشود.
تفاوت بک اند و فرانت اند به طور خلاصه
- فرانتاند همان چیزیست که کاربر در مرورگرش میبیند؛ در حالی که کاربر قادر به مشاهده بکاند نیست.
- بهطور کلی، زبانهای برنامهنویسی که برای فرانتاند و بکاند به کار میروند با هم تفاوت دارند.
- بکاند و فرانتاند اگرچه با یکدیگر تفاوت دارند، اما مکمل یکدیگر هستند.
مهارتهای یک طراح بک اند چیست و باید چه ویژگیهایی داشته باشد؟
- یک بکاندکار باید با یکی از زبانهای سمت سرور مثل پایتون، سیشارپ و … آشنا باشد.
- یک طراح بکاند باید به یک دیتابیس تسلط داشته باشد. زبان برنامهنویسی سمت سرور زمانی معنا پیدا میکند که به یک دیتابیس وصل شود و به تبادل اطلاعات بپردازند.
- در کنار آشنا بودن با یک زبان برنامهنویسی سمت سرور، بهتر است با مباحث تخصصی آن زبان هم آشنا باشد. این کار مزایای مختلفی دارد؛ برای مثال، باعث میشود کدهای نوشتهشده سریعتر اجرا شوند، امنیت بیشتری داشته باشند و کارا تر باشند.
- یک بکاندکار باید بتواند مسائل متفاوتی را که با آنها روبهرو میشود، حل کند. برای این کار به یک ذهن منطقی و تحلیلگر نیاز دارد.
- بسیاری از بکاندکارها بهصورت دورکار و پروژهای کار میکنند. این افراد برای بهدستآوردن یک کار مناسب، باید مهارتهای مذاکره قوی داشته باشند.
وظایف یک طراح بک اند چیست؟
کسانی که بکانددولوپر (back end developer) میشوند، درگیر مباحثی مثل زیبایی سایت نیستند؛ اما سوالی که پیش میآید، این است که وظایف یک طراح بکاند چیست؟ در ادامه با بخشی از این وظایف آشنا میشوید.
- ایجاد و مدیریت پایگاه داده
- استفاده از فریمورکهای بکاند برای ساختن نرمافزار سمت سرور
- نوشتن کد با استفاده از زبانهای سمت سرور
- یکپارچهسازی API
- نظارت بر مدیریت محاسبات ابری
- راهاندازی سیستم مدیریت محتوا و نگهداری از آن
- نظارت بر تنظیمات امنیتی و جلوگیری از هک
- پشتیبانگیری و بازیابی فایلهای وبسایت و پایگاههای داده
- تجزیهوتحلیل دادههای وبسایت
زبانهای برنامهنویسی مناسب برای توسعه بک اند کدامند؟
در این قسمت از مقاله، میخواهیم شما را با چند زبان برنامهنویسی سمت سرور آشنا کنیم:
پیاچپی (PHP)
شاید بارها با این واژه برخورد کرده باشید اما ندانید که PHP چیست؟ یکی از زبانهایی که میتوان از آن در سمت سرور استفاده کرد، پیاچپی است. شما با استفاده از این زبان، میتوانید برای وردپرس برنامهنویسی کنید و برای آن قالب و افزونه بسازید.
برای استخدام برنامه نویس PHP میتوانید با فریلنسرهای همکاری داشته باشید.
جاوا (Java)
جاوا یکی از محبوبترین زبانهای دنیاست. از این زبان در حوزههای مختلف برنامهنویسی استفاده میشود؛ برای مثال، این زبان در زمینه توسعه اپلیکیشن موبایل یا دسکتاپ، برنامهنویسی تحت وب و … مورد استفاده قرار میگیرد.
این زبان از کامیونیتی و کارایی خوبی برخوردار است؛ به همین دلیل، اگر هنگام کار با این زبان به سوالی برخورد کردید، میتوانید بهراحتی سوال خود را با جامعه برنامه نویسان جاوا مطرح کرده و به جواب آن برسید.
سی شارپ (C#)
یادگیری سیشارپ بهنسبت آسان است. این زبان در ساخت نرمافزارهای دسکتاپ، برای کارکردن سمت وب، نوشتن اپلیکیشنهای موبایل، API و … مورد استفاده قرار میگیرد.
پایتون (Python)
با استفاده از این زبان، میتوان در حوزههایی مثل علوم داده (Data Science)، هوش مصنوعی، اینترنت اشیا و ساخت وباپلیکیشن کار کرد. این زبان دارای سینتکس یا ظاهر نوشتاری ساده و خوانایی است.
پرل (Prel)
این زبان در سال ۱۹۸۷ منتشر شد و در زمینههای مختلفی مثل زمینههای تحقیقاتی، هوش مصنوعی، صنعتی، ژنتیک، نظامی، اپلیکیشن و طراحی بازیها مورد استفاده قرار میگیرد.
روبی (Ruby)
روبی یک زبان برنامهنویسی کاملا شیگرا، داینامیک و متنباز Open) Source) است. از این زبان میتوان برای توسعه بازیهای موبایل، توسعه وبسایت و … استفاده کرد.
جاوا اسکریپت (JavaScript)
در گذشته از این زبان فقط در سمت کاربر استفاده میکردند؛ اما امروزه میتوان از آن در سمت سرور هم بهره برد. با کمک این زبان، میتوان به توسعه وبسایت، توسعه برنامههای دسکتاپ، ساخت بازی و … پرداخت.
چند فریمورک برای توسعه بک اند
هر فریمورک یک چهارچوب نرمافزاریست که برنامهنویسها به کمک آنها میتوانند آسانتر به کار برنامهنویسی بپردازند. در ادامه با برخی از فریمورکهای بکاند آشنا میشوید:
لاراول (Laravel)
زبان PHP فریمورکهای متفاوتی دارد. یکی از این فریمورکها، لاراول نام دارد و شاید بتوان گفت یکی از محبوبترین فریمورکهای این زبان است. همین محبوبیت، باعث میشود که این فریمورک متن باز، کامیونیتی بزرگی داشته باشد و در نتیجه، اگر سوالی برای شما ایجاد شود، میتوانید بهراحتی به پاسخ آن برسید.
اگر قصد استخدام برنامه نویس لاراول را دارید، بهراحتی میتوانید در سایت با متخصصین این حوزه ارتباط بگیرید و با یک فرد مجرب در این حوزه همکاری کنید.
جنگو (Django)
جنگو زیرمجموعهای از زبان پایتون است. این فریمورک، رایگان و اپنسورس است و در سال ۲۰۰۳ توسعه یافته است.
فونیکس (Phoenix)
یکی دیگر از فریمورکهایی که میتوان از آن برای توسعه سمت سرور استفاده کرد، فریمورک فونیکس نام دارد. فونیکس بر اساس زبان Elixir نوشته شده است. این فریمورک، جامعه کاربری بزرگی ندارد و یادگیری سینتکس آن هم نسبتا دشوار است.
اکسپرس (Express)
اکسپرس، فریمورک محبوب Node.js است. اگر با Node.js آشنا نیستید، حتما با ادامه مقاله همراه باشید؛ زیرا میخواهیم در بخش بعد، درباره آن توضیح دهیم. اکسپرس به زبان جاوا اسکریپت نوشته شده و بسیار انعطافپذیر است.
روبیآنریلز (Ruby on Rails)
فریمورک محبوب زبان روبی، روبیآنریلز است. روبی و روبیآنریلز آنقدر در کنار هم استفاده شدهاند که شاید مرز این دو، برای بعضی از افراد از بین رفته باشد و تفاوت آن دو کامل برایشان روشن نباشد.
اسپرینگ (Spring)
زبان جاوا، فریمورکهای متعددی دارد؛ اما اگر بخواهیم یک فریمورک محبوب برای زبان جاوا معرفی کنیم، شاید بتوانیم از اسپرینگ نام ببریم. این فریمورک، اپنسورس بوده و در سال ۲۰۰۳ نوشته شده است. توسعهدهندگان اسپرینگ، جامعه فعالی را تشکیل می دهند.
ارتباط node.js با بک اند چیست؟
ممکن است زمانی که درباره بکاند مطالبی خواندید، با کلمه node.js برخورد کرده باشید؛ اما node.js چیست؟
شاید شما هم تا پیش از این، جزو کسانی بودید که فکر میکردند زبان جاوااسکریپت فقط در فرانتاند کاربرد دارد؛ اما همانطور که مشاهده کردید، ما در بخشهای قبل از این زبان در کنار سایر زبانهای بکاند نام بردیم. حال سوال پیش میآید که جاوا اسکریپت چگونه از زبانی که فقط در سمت کاربر مورد استفاده قرار میگرفت، به زبانی تبدیل شد که در سمت سرور هم به کار برده میشود؟
قبلا جاوا اسکریپت در مرورگر اجرا میشد؛ اما در سال ۲۰۰۹ node.js ساخته شد. node.js یک محیط رانتایمruntime) ) است که به شما اجازه میدهد کدهای جاوا اسکریپت را خارج از مرورگر اجرا کنید. به کمک node.js، میتوان از جاوا اسکریپت در سمت سرور هم استفاده کرد.
به یاد داشته باشید که node.js یک فریمورک نیست و همانطور که گفتیم، یک محیط رانتایم است. اگر بخواهیم چند فریمورک جاوا اسکریپت را نام ببریم، میتوانیم به Vue.js، Angular و… اشاره کنیم.
جمع بندی
اگر بخواهیم بهطور خلاصه بگوییم که بکاند چیست، باید به بخشی از نرمافزار یا وبسایت اشاره کنیم که برای کاربران قابل مشاهده نیست. در واقع، بکاند کدهایی هستند که هسته و کنترل منطق سایت را بر عهده دارند؛ بهطوری که دسترسی به این کدها برای کاربران غیر ممکن است.
ما سعی کردیم در این مقاله، خیلی ساده به این سوالها پاسخ دهیم که بکاند چیست، چه تفاوتی با فرانتاند دارد، وظایف یک طراح بکاند چیست و با چه مهارتهایی باید آشنا باشد. در آخر هم شما را با چند زبان سمت سرور و فریمورکهای آن آشنا کردیم.
اگر شما بهعنوان یک کارفرما به دنبال استخدام برنامه نویس بک اند هستید، میتوانید از پونیشا کمک بگیرید. در پونیشا، متخصصین زیادی به صورت فریلنسری فعالیت دارند که میتوانند و نیازهای شما را در این زمینه برطرف کنند.