معماری ماژولار تکهستهای (Modular Monolith) یک رویکرد محبوب برای ساخت سیستمهای نرمافزاری بزرگ است. این معماری به تیمها اجازه میدهد تا سیستم را به ماژولهای کوچکتر و قابل مدیریتتر تقسیم کنند، در حالی که همچنان از مزایای یک برنامه تکهستهای بهرهمند میشوند. یکی از جنبههای مهم این معماری، نحوه ادغام "برشهای عمودی" (Vertical Slices) در ساختار ماژولار است.
برشهای عمودی، الگوهای پیادهسازی ویژگی هستند که درخواست، هندلر، اعتبارسنجی و دسترسی به داده را برای یک مورد استفاده واحد گروهبندی میکنند. در حالی که ماژولها مرزهای سیستم را تعریف میکنند، برشهای عمودی کد را در داخل این مرزها سازماندهی میکنند. این دو مفهوم در سطوح مختلف عمل میکنند و نباید با یکدیگر اشتباه گرفته شوند. ماژولها زمینههای محدود (Bounded Contexts) را تعریف میکنند، در حالی که برشهای عمودی الگوهای پیادهسازی هستند.
مقاله به بررسی این موضوع میپردازد که چگونه معماری تمیز (Clean Architecture) و معماری برش عمودی (Vertical Slice Architecture) با یکدیگر مرتبط هستند و چگونه میتوان از هر دو در یک معماری ماژولار تکهستهای استفاده کرد. هر دو رویکرد بر استفاده از موارد استفاده و به حداکثر رساندن انسجام تمرکز دارند. معماری تمیز یک قانون برای جهت وابستگیها اضافه میکند که اغلب منجر به انتزاع و تشریفات بیشتر میشود.
نکته کلیدی این است که معماری سطح ماکرو (Macro Architecture) نحوه تعامل ماژولها را محدود میکند، در حالی که معماری سطح میکرو (Micro Architecture) یک تصمیم محلی است که هر ماژول میتواند به طور مستقل آن را اتخاذ کند. این بدان معناست که ماژول Ticketing نیازی به پیروی از ساختار داخلی مشابه ماژول Notifications ندارد. این آزادی به تیمها اجازه میدهد تا معماری داخلی هر ماژول را متناسب با نیازهای خاص خود تنظیم کنند.
در نهایت، مقاله بر این نکته تاکید میکند که انتخاب بین معماری تمیز و برش عمودی یک انتخاب "بهتر" نیست، بلکه درک این موضوع مهم است که هر کدام در چه زمینهای بهتر عمل میکنند. با استفاده از این رویکرد، تیمها میتوانند از مزایای هر دو معماری در معماری ماژولار تکهستهای خود بهرهمند شوند.
مشاهده مطلب اصلی