
تفاوت Backend سنتی با Serverless در دنیای مدرن
در سالهای اخیر برنامه نویسی بکاند وارد یک دوران کاملاً متفاوت شده و خیلی از چیزهایی که تا چند سال پیش استاندارد بودند، الان دارن کمکم کنار میرن یا حداقل جایگزینهای جدید پیدا کردهاند. یکی از بزرگترین تغییرات همین «مدل سرورلس» است که خیلیها فکر میکنند فقط یک اسم خفن برای هاست ابری است، اما درواقع یک معماری کاملاً متفاوت و آیندهدار محسوب میشود. برای همین اگر بکاند کار میکنی یا قصد داری وارد این مسیر شوی، باید دقیق بدانی بکاند سنتی دقیقاً چه بوده و سرورلس چه چیزهایی را بهتر یا بدتر میکند.
Backend سنتی چیست؟
بکاند سنتی سیستمی است که در آن شما یک سرور مشخص دارید، معمولاً یک ماشین ثابت یا یک VPS، که همیشه در حال اجراست. روی این سرور وبسرور، دیتابیس، فایلها، APIها و تمام سرویسهای مورد نیاز پروژه نصب شده و شما باید همیشه خودتان مراقب همه چیز باشید. یعنی از امنیت گرفته تا مقیاسپذیری، آپدیتها، پیکربندیها و حتی منابع سختافزاری، همه و همه روی دوش شماست. اگر ترافیک بالا برود، باید سرور قویتر بخرید. اگر چیزی کند شود، باز هم خودتان باید مشکل را پیدا کنید. خلاصه این مدل بکاند کنترل کامل میدهد اما مسئولیت هم خیلی زیاد است.
در بکاند سنتی، توسعهدهنده معمولاً یک چرخه ثابت دارد: سرور راهاندازی میکند، کدها را دیپلوی میکند، لاگها را بررسی میکند، مشکلات را رفع میکند و دائماً حواسش به لود سرور و مصرف منابع است. این مدل هنوز برای خیلی از پروژهها منطقی است، مخصوصاً پروژههایی که نیاز به اجرای مداوم، ارتباط دائمی، یا مدیریت خیلی دقیق منابع دارند.
Serverless چیست؟
سرورلس برخلاف اسمش سرور ندارد نیست؛ بلکه شما فقط مدیریت سرور را انجام نمیدهید. یعنی سرورها وجود دارند، اما نیازی نیست آنها را بخرید، راهاندازی کنید یا پیکربندی کنید. همه اینها را سرویسدهنده انجام میدهد و شما فقط «تابع» یا «منطق کد» مینویسید. هر بار کاربر به API شما درخواست بدهد، آن تابع اجرا میشود و وقتی هیچ درخواست فعالی نباشد، هزینهای هم پرداخت نمیکنید. همین باعث شده مدل سرورلس از نظر اقتصادی برای خیلی از پروژهها فوقالعاده جذاب باشد.
در سرورلس اضافه کردن قابلیتها خیلی سریع انجام میشود، چون لازم نیست به فکر نصب ابزارها، سختافزار یا تنظیمات خستهکننده باشید. تنها کاری که باید انجام دهید نوشتن کد است. از باقی ماجرا مثل مقیاسپذیری، امنیت سطح زیرساخت، تقسیم منابع و پایداری، سرویسدهندههایی مثل AWS و Google Cloud مراقبت میکنند.
تفاوت اصلی این دو مدل از نظر مقیاسپذیری
در بکاند سنتی اگر یک دفعه ترافیک سایت بالا برود، سرور شما کم میآورد. باید سرورت را ارتقا بدهی یا Load Balancer اضافه کنی یا حتی یک ساختار چند سروره بسازی. این کارها معمولاً هزینه و دردسر زیادی دارند و برای یک تیم کوچک اصلاً ساده نیست.
اما سرورلس دقیقاً برای همین لحظهها ساخته شده است. مدل سرورلس بر اساس Event کار میکند؛ یعنی هرچه درخواست بیشتر باشد، اتوماتیک منابع بیشتری اجرا میشود. وقتی درخواست کم باشد، منابع هم کم میشود. این انعطافپذیری باعث شده برای پروژههایی با نوسان ترافیک یا اپلیکیشنهایی که گاهی زیاد و گاهی کم کاربر دارند، سرورلس بهترین گزینه باشد.
تفاوت در هزینهها
در بکاند سنتی حتی اگر سایتت هیچ کاربری نداشته باشد، باید هزینه کامل سرور را بدهی. یعنی یک VPS یا حتی یک داکر سرور همیشه روشن است و ماهیانه هزینه دارد. اما در سرورلس بدون درخواست، هزینه هم صفر است. فقط برای اجرای واقعی کدها پول میدهی.
این مدل باعث شده سرورلس برای استارتاپها و پروژههای کوچک فوقالعاده باشد، اما برای پروژههای خیلی بزرگ هم میتواند بهصرفه باشد، مگر اینکه پردازشها بیش از حد سنگین شوند و هزینه اجرا از هزینه ثابت یک سرور اختصاصی بیشتر شود.
تفاوت در کنترل و انعطافپذیری
در بکاند سنتی کنترل کامل دست خودتان است. میتوانید هر نسخهای از هر نرمافزاری را نصب کنید، پیکربندی دلخواه داشته باشید و حتی سرویسهایی بنویسید که نیاز به اجرای دائمی دارند. اما سرورلس محدودیتهایی دارد. مثلاً زمان اجرای تابع محدود است، یا ممکن است امکان دسترسی کامل به CPU، حافظه یا سختافزار خاص وجود نداشته باشد.
از طرفی در سرورلس Cold Start وجود دارد، یعنی اگر مدتی تابع شما اجرا نشود، بار اول کمی کند اجرا میشود. برای برخی پروژهها این تأخیر کوچک مشکلی ایجاد نمیکند، اما بعضی سیستمها نمیتوانند حتی چند صد میلیثانیه تأخیر داشته باشند.
فرق در نگهداری و مدیریت زیرساخت
در بکاند سنتی شما باید همه چیز را مدیریت کنید؛ از سیستمعامل تا امنیت و بکاپ دیتابیس. همین باعث میشود قسمت زیادی از زمان برنامهنویس یا DevOps صرف تعمیر و نگهداری شود. اما در سرورلس تقریباً هیچکدام از این کارها وجود ندارد. نه آپدیت سرور مهم است، نه پیکربندی و نه نگرانیهای امنیت سطح پایین.
این باعث میشود تیمهای کوچک بدون نیاز به متخصص DevOps بتوانند یک بکاند حرفهای و مدرن بسازند.
کدام بهتر است؟
هیچکدام مطلقاً بهترین نیستند. انتخاب کاملاً بستگی به نوع پروژه دارد. اگر پروژهای داری که نیاز به اجرای دائمی دارد یا باید کنترل کامل روی سرور داشته باشی، بکاند سنتی همچنان بهترین گزینه است. اما اگر پروژهای داری که Event-Based است، ترافیک نوسانی دارد یا میخواهی سریع بسازی و درگیر زیرساخت نشوی، سرورلس بهترین انتخاب است.




