این الگو در ۴ لایهی زیر تعریف میشود:
۱- Presentation Layer
۲- Business Layer
۳- Persistence Layer
۴-Database Layer
جداسازی این لایهها در علاوه بر جدا شدن مسئولیتهای هربخش، این امکان را می دهد که لایهها بتوانند به راحتی و بدون ایجاد مزاحمت با سایر لایهها تغییر کنند.
یکی از نمونههای این معماری MPV (Model-View-Presenter) هست.
در این الگو تولیدکنندههای رویداد و مصرفکنندههای رویداد قرار دارند و سیستم را به دو بخش مجزا تقسیم میکند.
یکی از مثالهای خوب در این بخش CQRS (Command Query Responsibility Segregation) است. در CQRS بخش Command و بخش Query به صورت مجزا کار میکنند و تغییرات بیشتر اوقات توسط رویدادها مخابره میشود.
در این الگو، کارکرد هسته مرکزی سیستم، به بخشهای میکروکرنلها تقسیم شده که به صورت پلاگین قابلیت اتصال به هسته مرکزی را دارند. برای مثال در سیستم عامل، سیستم با تمرکززدایی برخی وظایف (مثل مدیریت حافظه یا ارتباط با دستگاهها) و واگذاری آنها به کامپوننتهای خارجی کارایی و انعطافپذیری را افزایش میدهد.
از ویژگیهای این الگو، توسعهپذیری، نگهداری آسان و ایزوله بودن نسبت به خطا است. چرا که هر بخش جدید به صورت پلاگین اضافه شده و هسته مرکزی در صورت بروز خطا در هر یک از پلاگینها، دچار خطا نخواهد شد.
در این معماری، سیستم به سرویسهای کوچک با حداقل وابستگی به یکدیگر شکسته شده است. هر سرویس شامل بیزینس و دیتا مدل مجزا بوده و توسط اندپوینتها با یکدیگر تعامل هستند. بنابراین می توانند توسعه، دیپلوی و اسکیل مجزای داشته باشند. از این الگو برای رشد سریع و ایده پردازی مدل مناسبی است. با این حال، هرچقدر سرویسهای بیشتری داشته باشیم، پیچیدگی ارتباط بین سرویسها و همچنین ناسازگاری بین داده بیشتر خواهد بود. برای مثال نتفیلیکس برای سرویس پیشنهاد دهنده و پرداخت خود از این معماری استفاده کرده است.
در این الگو، همهی بخشهای یک سیستم، از رابط کاربری، منطق بیزینسی و دسترسی به داده همراه با هم در یک کدبیس پیاده سازی شده و در یک واحد اجرا میشود. در این الگو توسعه و دیپلوی آسان است و از آن در استارتها آپها و اپلیکیشنهای کوچک استفاده میشود.
یکپارچگی ماژولار بر حفظ واحدهای قابل استقرار تاکید میکند و با قرار دادن مرز برای بخشهای مختلف کدبیس، کمک میکند که در زمانی که اپلیکیشن ما بزرگتر شد، بتوانیم به راحتی به سمت معماریهایی نظیر میکروسرویس برویم.
منبع:
https://www.youtube.com/watch?v=f6zXyq4VPP8<br/>