نحوه مقیاس‌بندی برنامه‌های NestJS: مطالعه موردی یک Backend تجزیه و تحلیل وب با بار بالا

مشکل

سرویس تجزیه و تحلیل با یک مشکل منحصر به فرد روبرو شد – باید میلیون ها درخواست در روز را با کمترین هزینه ممکن پردازش و ذخیره کند.

در ابتدا روی یک سرور تک نود ساده میزبانی می شد که در شروع پروژه ایده خوبی بود، اما اکنون نیاز به مقیاس پذیری داشت. سوال این بود که چگونه می توان تا حد امکان به یک معماری انعطاف پذیرتر رفت.

راه حل های امکان پذیر

اولین چیزی که فکر کردم این بود که “فقط قدرت بیشتری به دستگاه اضافه کنید.” به آن “مقیاس بندی عمودی” می گویند. افزودن منابع بیشتر به سرور ممکن است در کوتاه مدت کمک کند و حتی ممکن است مقرون به صرفه باشد، اما اخطارهای خاص خود را دارد. همچنین ممکن است توسعه و مدیریت آن کمی ساده تر باشد زیرا فقط به یک سرور متکی است.

اما یک سرور، حتی یک سرور قدرتمند، تنها نقطه شکست خواهد بود. این بدان معناست که اگر به هر دلیلی از کار بیفتد، کل سیستم غیر قابل دسترس خواهد بود که برای یک سرویس پر تقاضا قابل قبول نیست.

راه حل ممکن دیگر این است که برنامه را به چندین سرویس تقسیم کنید که هر کدام مسئول نوع کار اختصاصی خود هستند. این می تواند بار روی هر سرویس را کاهش دهد، اما مشکل این است که آنها همچنان به مقیاس عمودی به تنهایی تکیه می کنند. حفظ چنین معماری نیز دشوار خواهد بود، زیرا اکنون همه چیز فردی است…

Source link