مونولیت‌های ماژولار جای میکروسرویس‌ها را برای تیم‌های مهندسی متوسط می‌گیرند

اشتراک‌گذاری:
مونولیت‌های ماژولار جای میکروسرویس‌ها را برای تیم‌های مهندسی متوسط می‌گیرند

در بیشتر دهه‌ی گذشته، تقسیم یک برنامه به میکروسرویس‌ها به‌عنوان رویکرد مسئولانه در نظر گرفته می‌شد؛ کاری که وقتی مقیاس‌پذیری برایتان اهمیت پیدا می‌کرد، انجام می‌دادید. در سال ۲۰۲۶، تعداد رو به رشدی از تیم‌های مهندسی به‌آرامی این تصمیم را بازمی‌گردانند، نه با کنار گذاشتن مرزهای سرویس، بلکه با ادغام دوباره‌ی آن‌ها در یک واحد قابل‌استقرار واحد با جداسازی داخلی سخت‌گیرانه: مونولیت ماژولار.

واضح‌ترین نمونه‌ی عمومی همچنان تیم Prime Video در آمازون است که در سال ۲۰۲۳ سرویس تحلیل کیفیت ویدیو خود را از یک خط‌لوله‌ی توزیع‌شده‌ی مبتنی بر Lambda و میکروسرویس‌ها به یک فرآیند مونولیتی واحد منتقل کرد. این تیم گزارش داد که هزینه‌ی زیرساخت این سرویس خاص حدود ۹۰ درصد کاهش یافته و اشکال‌زدایی نیز بسیار ساده‌تر شده است؛ دیگر نیازی نیست لاگ‌ها را از میان ده‌ها سرویس برای ردیابی یک درخواست به هم بدوزید.

چرا این آونگ بازگشت

میکروسرویس‌ها یک مسئله‌ی خاص را حل می‌کنند: استقرار و مقیاس‌پذیری مستقل برای تیم‌هایی که به اندازه‌ی کافی بزرگ هستند که یک پایگاه‌کد مشترک به یک گره‌گاه هماهنگی تبدیل شود. برای یک سازمان مهندسی با ۲۰۰ نفر که به ده‌ها تیم مستقل تقسیم شده، این مبادله منطقی است. اما برای یک تیم پانزده‌نفره که ۴۰ میکروسرویس را اجرا می‌کند — الگویی که در دهه‌ی گذشته به‌طور نگران‌کننده‌ای رایج شد — سربار عملیاتی، مزیت ادعایی را می‌بلعد.

Basecamp و Shopify هر دو به‌طور علنی از ماندن در، یا بازگشت به، مدل «مونولیت باشکوه» به‌جای تقسیم به ده‌ها سرویس سخن گفته‌اند، با همین استدلال: بیشتر مسیرهای درخواست آن‌ها نیازی به مقیاس‌پذیری مستقل ندارند.

یک مونولیت ماژولار واقعاً چگونه است

مونولیت ماژولار به‌معنای «نوشتن کد درهم‌تنیده در یک فایل» نیست. این یک برنامه‌ی قابل‌استقرار واحد است که در داخل به بسته‌ها یا ماژول‌هایی با مرزهای صریح و اجرایی سازمان‌دهی شده است — معمولاً یک ماژول برای هر حوزه‌ی کسب‌وکار (صورت‌حساب، موجودی، اعلان‌ها). هر ماژول لایه‌ی دسترسی داده‌ی خود را در اختیار دارد و یک رابط داخلی محدود به ماژول‌های دیگر ارائه می‌دهد.

این رویکرد بیشتر مزایایی را که مردم در ابتدا از میکروسرویس‌ها می‌خواستند فراهم می‌کند — مالکیت شفاف، شعاع انفجار محدود برای تغییرات — بدون مالیات سیستم‌های توزیع‌شده: بدون تأخیر شبکه‌ای بین ماژول‌ها، بدون مدیریت خرابی جزئی برای تماس‌هایی که قبلاً فراخوانی تابع بودند.

زمانی که میکروسرویس‌ها هنوز هزینه‌ی خود را توجیه می‌کنند

دلیل صادقانه برای میکروسرویس‌ها همچنان وجود دارد. اگر یک قطعه نیاز داشته باشد به‌طور مستقل ۵۰ برابر نسبت به بقیه‌ی سیستم مقیاس شود، جداسازی آن تصمیم درستی است. اگر بخش‌های مختلف سیستم واقعاً به زبان‌ها یا محیط‌های اجرایی متفاوتی نیاز داشته باشند، این نیز دلیلی مشروع است. قاعده‌ی عملی که در سال ۲۰۲۶ میان تیم‌ها شکل گرفته: به‌طور پیش‌فرض به سمت مونولیت ماژولار بروید و یک سرویس را فقط زمانی استخراج کنید که بتوانید نیاز مشخص مقیاس‌پذیری، زبان یا خودمختاری تیم را که آن را توجیه می‌کند نام ببرید.

نتیجه‌گیری برای تیم‌هایی که در حال بازنگری معماری خود هستند

اگر تیم شما حدود ۵۰ مهندس یا کمتر دارد و بیش از چند سرویس اجرا می‌کند، بررسی کنید کدام سرویس‌ها واقعاً به مقیاس‌پذیری مستقل نیاز دارند در مقابل کدام‌ها به دلایل سازمانی که دیگر صدق نمی‌کنند تقسیم شده‌اند. مرزهای ماژول را حفظ کنید؛ پرش‌های شبکه‌ای را حذف کنید.

اشتراک‌گذاری:
مونولیت‌های ماژولار جای میکروسرویس‌ها را برای تیم‌های مهندسی متوسط می‌گیرند | AIO APEX