توسعه بکاند چیست؟
توسعه بکاند که بهنام توسعه سمت سرور نیز شناخته میشود به نوع خاصی از کدنویسی اشاره دارد که عملیات آن روی سرور انجام میشود و بهطور معمول کاربران این پردازشها را مشاهده نمیکنند. زمانیکه کاربر به وبسایتی وارد میشود و عملی را انجام میدهد شبیه به درخواست دادهها، رابط کاربری درخواستی برای بکاند ارسال میکند و تقاضای پردازش برخی کدهای HTML، ذخیرهسازی ورودیهای کاربر در بانکاطلاعاتی، احراز هویت کاربر، ارسال ایمیل یا پردازش یک تراکنش مالی را ارائه میکند. در چنین شرایطی این کدهای بکاند هستند که درخواست کاربر را دریافت میکنند، آنرا پردازش میکنند و نتیجه را در قالب پاسخی برای رابط کاربری ارسال میکنند. در شکل زیر نموداری را مشاهده میکنید که بر مبنای یادگیری ابزارهای نشان داده شده در آن به یک توسعهدهنده بکاند متبحر تبدیل میشوید.
در شکل فوق خطوط زردرنگ نشاندهنده مباحث ساده هستند که باید حتما یاد گرفته شوند. خطوط نارنجی موارد پیشرفتهتر را نشان میدهد که امکان یادگیری آنها در آینده فراهم است. خطوط خاکستری بیانگر ابزارهایی هستند که ممکن است در برخی پروژههای خاص کاربرد داشته باشند.
زبانهای برنامهنویسی
توسعهدهندگان بکاند در مقایسه با سایر توسعهدهندگان برگ برنده بزرگی در اختیار دارند که آن هم زبان برنامهنویسی است. به بیان دقیقتر به عنوان یک توسعهدهنده بکاند این شانس را دارید تا از میان طیف گستردهای از زبانهای برنامهنویسی گزینه ایدهآل خود را انتخاب کنید. بهطور معمول، زبانهای برنامهنویسی به دو گروه زبانهای اسکریپتنویسی و کامپایل شونده تقسیم میشوند. البته این دستبهندی خیلی دقیق نیست، زیرا گاهی اوقات زبانهای اسکریپتنویسی به شکل بلادرنگ کامپایل میشوند و برخی از زبانهای کامپایلی نیز ممکن است مفسر داشته باشند. با اینحال، طبقهبندی فوق یک نقطه شروع خوب در اختیارتان قرار میدهد.
زبانهای اسکریپتنویسی
زبانهایی که قبل از اجرا به کامپایل نیازی نداشته باشند به زبانهای اسکریپتنویسی یا زبانهای تفسیرشونده معروف هستند و بر عکس زبانهای کامپایلی فایلهای اجرایی ایجاد نمیکنند. کدهای این زبانها به شکل بلادرنگ ارزیابی شده و اجرا میشود. مزیتی که زبانهای اسکریپتنویسی دارند در این است که ضرورتی ندارد در کدنویسی اولیه حتما بر مبنای دستورالعملهای کامپایلر گام برداشت. البته عیب بزرگ روش فوق این است که اگر خطایی در کدها وجود داشته باشد در زمان اجرا ظاهر میشود. از مهمترین زبانهای اسکریپتنویسی به موارد زیر میتوان اشاره کرد:
Node.js: یک محیط اجرای جاوااسکریپت سمت سرور است. این زبان برنامهنویسی قادر است از طیف گستردهای از قابلیتهای جاوااسکریپت پشتیبانی کند و علاوه بر این، دسترسی به واسطهای برنامهنویسی کاربردی برای انجام فعالیتهای بکاند نظیر کار با سیستم فایلی را ارائه میکند. یادگیری Node.Jsx باعث میشود تا برنامهنویسی این شانس را پیدا کند که روی فرانتاند و بکاند کار کند. Node.Js چهارچوبهای محبوبی دارد که از آن جمله باید به express، koa و LoopBack اشاره کرد.
پایتون: پایتون یک زبان برنامهنویسی عمومی و چندمنظوره است. ترکیب تحوی این زبان ساده و بر مبنای ساختار مشخصی عمل میکند که باعث شده یادگیری آن برای افراد مبتدی ساده شود. پایتون به شکل گستردهای برای نوشتن برنامههای کاربردی مختلف استفاده میشود، هرچند بیشتر کاربران آنرا گزینه مناسبی برای برنامهنویسی هوش مصنوعی میدانند. Flask که برای توسعه وب و Django که در ارتباط با سامانه مدیریت محتوا کاربرد دارند از کتابخانههای مطرح پایتون در ارتباط با توسعه وب هستند.
پیاچپی: PHP یکی از محبوبترین زبانهای برنامهنویسی برای توسعه برنامههای تحت وب است. یادگیری این زبان پیچیده نیست، اما زمانی که قرار باشد از قابلیتهای پیشرفته آن استفاده کنید باید مدت زمانی را صرف یادگیری بماحث مهم کنید. از مهمترین پروژههای ساخته شده با پیاچپی باید به وردپرس و دروپال اشاره کرد. علاوه بر این چهارچوبهای قدرتمندی نظیر Laravel، Symfony و CodeIngnite برای این زبان ارائه شدهاند.
روبی: Ruby نیز همانند زبانهای مذکور ترکیب نحوی سادهای دارد. محبوبترین چهارچوب ارائه شده برای این زبان Ruby on Rais است.
زبانهای کامپایل شونده
همانگونه که اشاره شد، عملکرد زبانهای کامپایل شونده اینگونه است که کدها قبل از آنکه اجرا شوند به کدهای باینری تبدیل میشوند. در شرایطی که زبانهای کامپایلری برنامهنویس را مجبور میکنند که مطابق با دستورالعمل مشخص شده گام بردارد، اما مزیت مهمی دارند که ناسازگاری در کدها را شناسایی کرده و مشکلات اولیه را به توسعهدهنده نشان میدهند. در این حالت برنامهنویس در زمان اجرا با خطاهای مختلفی احاطه نمیشود و بیشتر خطاهای منطقی را مشاهده میکند. از مهمترین زبانهای کامپایلری به موارد زیر میتوان اشاره کرد:
جاوا: یک زبان برنامهنویسی شیگرای سطح بالا است که میان زیرساختهای مختلف قابلیت جابهجایی دارد. به عبارت دیگر، کد منب به بایتکد جاوا کامپایل میشود و یان بایتکد روی ماشین مجازی جاوا اجرا میشود که به این شکل امکان اجرای کدها روی زیرساختهای مختلف فراهم میشود. جاوا یک زبان برنامهنویسی تکامل یافته است که چهارچوبهای مختلفی برای توسعه وب بر این زبان ارائه شدهاند. محبوبترین آنها Spring است. علاوه بر این، جاوا میتواند برای توسعه برنامههای اندرویدی نیز استفاده شود. درست است که این زبان نسبت به زبانهای دیگری نظیر کاتلین که قدیمیتر است، اما در ارتباط با برنامهنویسی سازمانی کاملا محبوب است.
سی شارپ: یک زبان شیگرای سطح بالای ارائه شده از سوی مایکروسافت است که ابتدا برای سیستمعامل ویندوز ارائه شده بود و اکنون امکان ساخت برنامههای چندسکویی را با استفاده از محیط اجرای .Net Core ارائه میکند. .Net Core یکی از محبوبترین چهارچوبهایی است که برای ساخت برنامههای وب استفاده از زبان ASP.Net Core استفاده میشود.
Go: زبان قدرتمند ارائه شده از سوی گوگل است که برای توسعه وب در نظر گرفته شده و در مدت زمان کوتاهی به شهرت زیادی دست پیدا کرده است. این زبان در مقایسه با جاوا و سی شارپ فشردهتر بوده و ترکیب نحوی نسبتا سادهای دارد. در زبان Go خبری از سازندهها نیست، علاوه بر این سرعت زیادی دارد و به شکل کاملا بهینه از حافظه استفاده میکند. این زبان از همزمانی نوع اول پشتیبانی میکند و به همین دلیل گزینه ایدهآلی برای پروژههایی به شما میرود که قرار است روی سامانههایی اجرا شوند که حافظه کم یا سرعت پردازشی کمی دارند. اکوسیستم کتابخانهها و ابزارهای Go بهطور دایم بهروزرسانی میشوند تا توسعهدهندگان بتوانند به شکل ساده و به دور از پیچیدگی از Go استفاده کنند.
کاتلین: زبان برنامهنویسی طراحی شده توسط JetBrains است که تقریبا رقیب جدی جاوا است. کاتلین روی ماشین مجازی جاوا اجرا میشود، اما امکان کامپایل آن به شکل جاوااسکریپت نیز فراهم است.
اسکالا: یکی دیگر از زبانهایی است که روی ماشین مجازی جاوا اجرا شده و به عنوان جایگزینی برای جاوا شناخته میشود. زبان فوق ساختار فشردهتری دارد و با ارائه قابلیتهای امنیتی اضافی به توسعهدهندگان اجازه میدهد از قابلیتهای برنامهنویسی تابعی استفاده کنند.
هسکل: زبان برنامهنویسی تابعی است که به دلیل مکانیزم نوعبندی قدرتمند و طراحی که باعث میشود کدهای خوانایی را تولید کنند شهرت دارد. این زبان گسترسشپذیری خوبی داشته و عملکرد قابل قبولی را ارائه میکند.
بانکهای اطلاعاتی
امروزه کمتر برنامه کاربردی را پیدا میکنید که اطلاعات کاربران را درون بانکهای اطلاعاتی ذخیرهسازی نکند. بهطور معمول از نرمافزارخاصی به نام سامانه مدیریت بانک اطلاعاتی برای مدیریت اطلاعات استفاده میشود. سامانه مدیریت بانک اطلاعاتی (DBS) امکان دسترسی به دادهها را فراهم میکند ک به برنامههای امکان ذخیرهسازی، بازیابی و بهروزرسانی دادهها را میدهد. امروزه انواع مختلفی از بانکهای اطلاعاتی وجود دارند که مدیریت انواع مختلفی از دادهها طراحی شدهاند. بانکهای اطلاعاتی به دو نوع رابطهای و غیر رابطهای تقسیم میشوند.
بانکهای اطلاعاتی رابطهای، دادهها را درون جدولهایی ذخیرهسازی میکنند که ردیفها توصیفکننده ورودی و ستونها توصیف کننده خصوصیات هستند. ردیفهای جداول مختلف را میتوان از طریق کلیدهای خارجی به یکدیگر مرتبط کرد تا رابطه میان ورودیهای مختلف را نشان داد. بهطور مثال، اگر در نظر دارید فروشگاه آنلاینی ایجاد کنید، شاید جدولی برای ذخیرهسزای سفارشها با ستونهایی نظیر شماره سفارش، نام مشتری و آدرس ارسال داشته باشید که در این جدول هر ردیف توصیفکننده یک سفارش مجاز است. اطلاعات، گزینههای سفارش در جدول دیگری بهنام آیتمهای سفارشی با ارجاع به جدول سفارش ذخیره میشوند. بانکهای اطلاعاتی رابطهای به توسعهدهندگان اجازه میدهند بر مبنای یک زبان محاوره ساخت یافته (SQL) برای تعامل با دادهها و انجام عملیاتی نظیر واکشی یا ویرایش دادهها استفاده کنند. از مهمترین بانکهای اطلاعاتی رابطهای محبوب به موارد زیر میتوان اشاره کرد:
اوراکل: بانک اطلاعاتی ارائه شده توسط اوراکل است که به دلیل گسترشپذیری زیاد و ارائه طیف گستردهای از قابلیتها توسط سازمانهای بزرگ استفاده میشود.
MySQL: یک بانکاطلاعاتی رایگان و متنباز است که میتواند از موتورهای ذخیرهسازی مختلفی برای هر جدول با هدف ذخیرهسازی و استفاده درست از دادهها استفاده کند. MySQL برای مقاصد مختلفی استفاده میشود، با اینحال کاربرد اصلی آن در ارتباط با برنامههای وب است.
SQL Server: این بانکاطلاعاتی که بهنام MSSQL نیز شهرت دارد توسط مایکروسافت ارائه شده است. این بانکاطلاعاتی برای مدیریت بارهای کاری و دادههایی در مقیاسهای مختلف قابل استفاده است.
PostgreSQL: یک بانکاطلاعاتی متنباز رایگان است که توسط توسعهدهندگان مختلفی در سراسر جهان پشتیبانی میشود. این بانکاطلاعاتی طیف گستردهای از قبالیتهای کاربردی را ارائه میکند و قادر است بارهای کاری بزرگ را نیز بدون مشکل مدیریت کند.
بانکهای اطلاعاتی غیر رابطهای
در بانکهای اطلاعاتی غیر رابطهای، دادهها در مدلهایی به غیر از جدول ذخیرهسازی میشوند. مدلهای مختلفی نظیر ذخیرهسازی جفتهای کلید-مقدار، اسناد، رابطهای گرافی یا سری زمانی وجود دارند که بسته به کاربردها انتخاب میشوند. بانکهای اطلاعاتی غیر رابطهای به دلیل سهولت در گسترشپذیری چند وقتی است مورد توجه قرار گرفتهاند. بانکهای اطلاعاتی غیر رابطهای بهنام NoSQL نیز معروف هستند، زیرا بیشتر آنها زبان محاورهای خاص خود را به جای اسکیوال ارائه کردهاند. امروزه به بانکاطلاعت غیر رابطهای زیر به شکل گسترده توسط توسعهدهندگان استفاده میشود.
MongoDB: یک بانکاطلاعاتی سند متنباز رایگان است که اشیایی شبیه JSON را ذخیرهسازی میکند. توسعهدهندگان میتوانند این اشیا را ذخیره و بازریابی کنند و آنها را به اشیایی در برنامه کاربردی نگاشت کنند. مانگودیبی قابلیتهای معمول محاورهزنی و تجمیع را ارائه میکن. مانگو دیبی گزینه مناسبی برای برنامههای کاربردی است، زیرا یکپارچگی دادهها را حفظ میکند.
Redis: یک بانکاطلاعاتی مقدار درون حافظهای است که در بیشتر برای ذخیرهسازی موقت دادههای کش شده و انتقال پیامها استفاده میشود. با توجه به اینکه ضرورتی ندارد دادهها ماندگار باشند، ذخیرهسازی دادهها روی دیسک را میتوان غیرفعال یا به تاخیر انداخت تا عملکرد برنامه کاربردی بهبود پیدا کند. ردیس میتواند انواع مختلفی از مقادیر نظیر رشتهها، اعداد، فهرستها، نگاشتها و موارد دیگر را ذخیرهسازی کند.
Elastic Search: یک موتور جستوجوی متنباز برای تحلیل متن است. این موتور جستوجو امکان ذخیرهسازی اسناد متنی و ساخت شاخصهای متنی قابل جستجو را ارائه میکند. بانکاطلاعاتی مذکور به شکل عمده برای تحلیل گزارشها استفاده میشود. به شکل ویژه از بانک اطلاعاتی فوق میتوان به عنوان بخشی از مجموعه ELK استفاده کرد تا امکان جستوجوی رایگان اسناد فراهم شود.
پیامرسانی
گاهی اوقات مولفههای سمت سرور باید وظایف مختلفی را آغاز کنند که نیازمند اجرا در پسزمینه هستند. بهطور مثال، درخواست یک گزارش تجاری ممکن است فرآیند زمانبری باشد که خروجی آن در قالب ساخت گزارش و ایمیل برای کاربر خواهد بود. در این حالت ضرورتی ندارد تا کاربر به انتظار بنشیند تا فرآیند فوق به اتمام برسد. برای حل این مشکل، باید بتوان پیامی را به مولفههای مختلف ارسال کرد تا اطمینان حاصل کرد که درخواستها به شکل دقیقی پردازش میشوند. اگر یک بخش از کار ناموفق باشد، فرآیند باید راهاندازی مجدد شود. نرمافزاری که چنین عملکردی را ارائه میکند کارگزار پیام نامیده میشود. از مهمترین کارگزارها در این زمینه به مواد زیر میتوان اشاره کرد:
RabbitMQ: یک کارگزار پیام نسبتا قدیمی است که از مدلهای مختلف تحویل پیام و قواعد مسیریابی پشتیبانی میکند. کارگزار مذکور تضمین میکند که پیام گیرنده دریافت و پردازش میشود. پیامهای ناموفقی نیز در صف dead-letter قرار میگیرند. کارگزار فوق از پروتکل AMPQ استاندارد استفاده میکند که توسط کارگزارهای پیام دیگر و کتابخانههای کلاینت پشتیبانی شود.
Apache Kafka: یک موتور پردازش جریانی است که میتوان از آن به عنوان یک کارگزار پیام استفاده کرد. این کارگزار پیام علاوه بر اغلب ویژگیهای استاندارد از امکانات پیشرفتهتری نظیر پردازش پیامها از روی سوابق نیز پشتیبانی میکند. این کارگزار عملکرد کاملا قابل قبولی دارد که باعث میشود برای پردازش حجم سنیگینی از پیامها گزینه مناسبی باشد.
همانگونه که مشاهده میکنید نقشه راه تبدیل شدن به یک توسعهدهند بکاند هموار و مشخص است، تنها کاری که باید انجام دهید پیادهسازی یک زمانبندی دقیق برای ایدگیری مفاهیم فوق است.
ماهنامه شبکه را از کجا تهیه کنیم؟
ماهنامه شبکه را میتوانید از کتابخانههای عمومی سراسر کشور و نیز از دکههای روزنامهفروشی تهیه نمائید.
ثبت اشتراک نسخه کاغذی ماهنامه شبکه
ثبت اشتراک نسخه آنلاین
کتاب الکترونیک +Network راهنمای شبکهها
- برای دانلود تنها کتاب کامل ترجمه فارسی +Network اینجا کلیک کنید.
کتاب الکترونیک دوره مقدماتی آموزش پایتون
- اگر قصد یادگیری برنامهنویسی را دارید ولی هیچ پیشزمینهای ندارید اینجا کلیک کنید.
نظر شما چیست؟