بسترهای توسعه برنامه های Back-End
در این مقاله میخواهیم به برنامه نویسی و توسعه برنامه های back-end بپردازیم و پلتفرم های پر استفاده در این زمینه را به شما معرفی کنیم. در واقع برای انتخاب یک بستر یا پلتفرم مناسب جهت توسعه برنامه سمت سرور باید ابتدا سئوالات زیر را پاسخ دهیم:
با چه زبانهایی میتوان یک برنامه سمت سرور نوشت؟
پاسخ این سوال این است که تقریبا با هر زبانی که توان ایجاد برنامه های اجرایی روی یک کامپیوتر را دارد میتوان برنامه ای نوشت که از طریق پروتکل HTTP و یا سایر پروتکل ها به در خواستهای وارده از سوی کلاینت ها پاسخ دهد. یعنی تقریبا تمامی زبانهای برنامه نویسی شناخته شده مانند Java، سی پلاس پلاس و … میتوانند یک انتخاب برای نوشتن یک برنامه سرور ساید باشد و برای توسعه برنامه های Back-End استفاده شوند
پیشنهاد شگفت انگیز کدفرند، دسترسی به تمامی دوره های آموزشی کدفرند تنها با ۹۹ هزار تومان
برای نوشتن یک برنامه سرویس دهنده چه دانشی باید داشته باشیم؟
یک برنامه سرویس دهنده یعنی برنامه ای که درخواستی را از سرویس گیرنده دریافت میکند و با توجه به درخواست او تصمیم میگیرد که چه عملی را به چه صورت انجام دهد. این برنامه معمولا باید بتواند منابعی از جمله داده های خام, تصاویر, فیلم و سایر انواع فایل ها را مدیریت کند. از آنجا که بستر یا پروتکل ارتباطی در وب، بیشتر پروتکل HTTP میباشد لذا باید دانش کافی در باره آن داشته باشید. همچنین برای نوشتن منطق برنامه و کار با منابع باید قبلا یک برنامه نویس و آشنا با سیستم دستکاری منابع و دیتابیس باشید.
چه تقسیم بندیهایی را میتوان برای برنامه های سمت سرور قائل بود:
از نگاه من و با توجه به بررسی های زیاد برنامه های سمت سرور را میتوان در دسته های زیر قرار داد:
- دسته اول: وب سرویس ها یا API های کوچک برای ارائه یک سرویس ساده و کاربردی و یا تست.
- دسته دوم: API های واسط برای ارتباط سرویس دهندگان موبایل .
- دسته سوم: API های مربوط به برنامه های پیامرسان و شبکه های اجتماعی.
- دسته چهارم: وب سرویس های ویژه (مانند وب سرویس پردازش یک تصویر و یا احراز هویت).
- دسته پنجم : API ها و سرویسهای اصلی یک برنامه متوسط و بزرگ (سیستم های اینتپرایز).
چه پلتفرمها و یا کتابخانه هایی برای کدام دسته مناسب تر هستند؟
البته اجباری به استفاده از یک پلتفرم خاص برای یک دسته خاص از API ها وجود ندارد ولی به جهت تجربه برنامه نویسان و شرکتهای نرم افزاری معمولا سعی میکنند بسترهای مناسب را برای پروژه های خود و توسعه برنامه های Back-End انتخاب کنند به همین دلیل است که مثلا میبینیم شرکتی مانند گوگل از چند زبان برنامه نویسی و چندین بستر برای نوشتن سرویس های خود استفاده میکند.
اگر میخواهید برنامه ای در دسته اول بنویسید با توجه به امکاناتی که روی سرور شما وجود دارد میتوانید حتی بدون نیاز به پلتفرمی خاص و با استفاده از زبان PHP و یا Javascript روی NodeJS سرویس دهنده کوچک خود را برای مقصدی که دارید بنویسید. دوره جامع آموزش NodeJs (کامل) در این سطح مهندسی خاصی نیاز نیست و معمولا کل کار با یک فایل PHP یا جاوا اسکریپت انجام میشود. دوره آموزش پروژه محور php ، ساخت سیستم مدیریت محتوا
بیشترین برنامه های Back-End یا سمت سروری که توسعه داده میشنود در دسته دوم قرار میگیرند. بسیار اتفاق می افتد که نیاز داشته باشید خدمات یک وب سایت را روی یک APP موبایل هم پیاده کنید. برای اینکار با توجه هاستی که وب سایت شما قرار دارد میتوانید یکی از بسترهای زیر را انتخاب کنید:
- اگر هاست ویندوزی دارید بهترین گزینه ASP.Net Web APi با استفاده از زبان#C میباشد. دوره آموزش سی شارپ (مقدماتی کامل)
-
اگر هاست غیر ویندوزی دارید میتوانید از زبان برنامه نویسی PHP در یکی از بسترهای Laravel و یا Codigniter استفاده کنید. دوره آموزش لاراول (صفر تا صد) کامل
- اگر هاست اختصاصی دارید علاوه بر فریم ورک های PHP در صورت لزوم میتوانید پلتفرم Django با استفاده از زبان Python را استفاده کنید. دوره جامع آموزش پایتون (کامل)
برای API های دسته سوم قضیه کمی متفاوت هست. معماری سیستم های پیامرسان طوری است که در بخش سرور, API های مختلف و سرویس های زیادی بخش هایی مثل احراز هویت – رمز نگاری – دانلود و آپلود فایل – در یافت و ارسال پیام رو به صورت تک سروری یا به صورت خوشه ای از چند سرور انجام میدهند. البته منظور من برنامه یا ماژول چت روی وب سایتها نیست. این دسته اشاره به سرور برنامه هایی مانند telegram یا whatsapp و برنامه هایی مانند آن که در سایز کوچکتری ساخته میشوند دارد. چالشهایی مانند push notification و … معماری این سیستم ها را در سمت سرور پیچیده میکند. برای نوشتن چنین برنامه هایی شما باید جزو یک گروه باشید یا برای یک شرکت بزرگ کار کنید. امروزه بسترهایی که این نوع سیستم ها پیاده میشوند را میتوان به شرح ذیل آورد:
برخی از پروتکل ها و سرور های کارگزار پیام یا Message Broker
- Amazon Web Services (AWS) Amazon MQ
- Apache ActiveMQ
- Apache Kafka
- Eclipse Mosquitto MQTT Broker (Eclipse Foundation)
- Financial Fusion Message Broker (Sybase)
- Fuse Message Broker (enterprise ActiveMQ)
- Google Cloud Pub/Sub (Google)
- HiveMQ HiveMQ MQTT Broker
- HornetQ (Red Hat) (Now part of Apache Artemis)
- IBM MQ
- JBoss Messaging (JBoss)
- Microsoft Azure Service Bus (Microsoft)
- Microsoft BizTalk Server (Microsoft)
- Oracle Message Broker (Oracle Corporation)
- RabbitMQ (Mozilla Public License, written in Erlang)
- Redis An open source, in-memory data structure store, used as a database, cache and message broker.
اینها و شاید دهها سرور دیگر به صورت open suorce یا انحصاری برنامه هایی هستند که جهت دریافت, صف بندی و هدایت درست پیام در یک سیستم پیامرسان استفاده میشوند. اگر میخواهید بدون نیاز به این نوع سرورها و از ابتدا کل سیستم پیامرسان خود را طراحی کنید میتوانید از یکی از بستر های زیر استفاده کنید :
- کتابخانه JMS روی JAVA با استفاده از بستری مانند Spring
- ماژول Socket.IO در NodeJS
- Microsoft .Net Core
- فریم ورک Falcon با استفاده از زبان برنامه نویسی PHP
در دسته چهارم چهارچوب و معماری سیستم نرم افزار اصلی مورد توجه نیست و فقط میخواهیم یک میکرو سرویس یا وب سرویس یا یک API مستقل برای یک نرم افزار بزرگ بنویسیم. فرض کنید google میخواهد در بخشی از موتور جستجوی خود امکان جستجو بر اساس صدا را اضافه کند. از آنجا که امروزه در حوزه هوش مصنوعی و پردازش زبان طبیعی بیشتر از زبان Python استفاده میشود، میتوان پردازش را انجام داده و پاسخ سرویس گیرنده را با استفاده از یکی از بستر های زیر به استفاده کننده بازگرداند:
- پلتفرم Django – دوره آموزش صفر تا صد و پروژه محور جنگو (Django) در کدفرند
- کتابخانه Flask – دوره آموزش صفر تا صد فلسک (Flask) در کدفرند
همچنین میتوان از زبان GO برای نوشتن بخشهایی از سیستم که بار پردازش و مصرف حافظه در آنها چالش اصلی محسوب میشود استفاده کرد یا از برخی از فریم ورک های نوشته شده در زبان Java مانند Play و Strust استفاده کرد.
دسته پنجم بزرگترین و پیچیده ترین دسته برنامه های سمت سرور است که حتی نسبت به توسعه سیسم های Back-End پیام رسان هم بیشتر نیاز به مهندسی و دقت در طراحی و پیاده سازی دارد. در این دسته اعمالی مانند تراکنش های بانکی بین چند سرور و یا محاسبات ابری برای یک سرویس خاص و گزارش گیری های پیچیده و مانند آن در سطح سرویس دهنده باید پیاده سازی شوند. توسعه برنامه های Back-End سیستم های دبیر خانه – سیستم های بانکی – برنامه های CRM و سیستم های آنلاین مدیریت گردش کار و … فقط چند نمونه از این دسته محسوب میشوند. بدون شک در این اتمسفر نام دو زبان برنامه نویسی به همراه امکاناتی که ارائه میدهند بیشتر از دیگر زبانها و بستر ها دیده میشود :
- زبان برنامه نویسی Java با پلتفرمهایی Spring و Play به همراه سیستم های بانک اطلاعاتی مانند Mysql – Oracle و Postgre (دوره جامع آموزش جاوا (صفر تا صد) کامل)
- زبان برنامه نویسی #C در بستر های Net. و Net Core. به همراه SQLServer و یا Mysql
- زبان برنامه نویسی Go روی فریم ورکهایی مانند Gin و BeeGo به همراه سیستم های بانک اطلاعاتی NoSql مانند MongoDB
پیشنهاد شگفت انگیز کدفرند،دسترسی به تمامی دوره های آموزشی کدفرند تنها با ۹۹ هزار تومان
البته روشن است که این تقسیم بندیها دیدگاه نویسنده است و شاید نوعی از برنامه ها وجود داشته باشد که ترکیبی از چند نوع API در یک سیستم به همراه ساختاری مانند MVC پیاده سازی شود. لذا این تقسیم بندی و اشاره به فریم ورک ها و کتابخانه ها و زبان های برنامه نویسی با هدف روشن تر شدن ابعاد توسعه چنین برنامه هایی ارائه شده است و ممکن است بسترهای خوبی وجود داشته باشد که در این مقاله به آن اشاره نشده باشد.