مونوریپو زمانی مفید است که اشتراک کد باعث اتصال بی‌قاعده بخش‌ها نشود. معماری تمیز کمک می‌کند منطق کسب‌وکار از فریم‌ورک، پایگاه داده و سرویس‌های بیرونی جدا بماند و هر بخش مسئولیت مشخصی داشته باشد.

بهتر است ساختار اصلی بر اساس زمینه‌های دامنه شکل بگیرد و داخل هر زمینه، لایه‌های دامنه، کاربرد و زیرساخت تفکیک شوند. هسته باید بتواند بدون اجرای فریم‌ورک یا اتصال واقعی به پایگاه داده تست شود.

پورت‌ها رابط‌های کوچک و هدفمند هستند و آداپتورها جزئیات بیرونی را پیاده‌سازی می‌کنند. برای مثال هسته فقط رابط مخزن سفارش را می‌شناسد و پیاده‌سازی واقعی می‌تواند بر اساس هر پایگاه داده‌ای باشد.

ترکیب وابستگی‌ها باید در نقطه مشخصی از هر برنامه انجام شود. این نقطه، پیاده‌سازی آداپتورها را به کاربردها تزریق می‌کند و اجازه نمی‌دهد جزئیات زیرساخت در همه فایل‌ها پراکنده شوند.

مدل انتقال داده را با موجودیت دامنه یکی نکنید. اعتبارسنجی ورودی در مرز برنامه انجام شود و سپس داده تمیز به ساختار دامنه تبدیل گردد. این کار تغییر رابط برنامه‌نویسی یا دیتابیس را کم‌هزینه‌تر می‌کند.

قواعد معماری را تا حد ممکن خودکار کنید؛ برای نمونه لینت می‌تواند واردکردن مستقیم زیرساخت به دامنه را ممنوع کند. تست‌های واحد هسته، تست‌های یکپارچه کاربردها و تعداد کمی تست سراسری پایدار، ترکیب مناسبی برای سرعت و اطمینان هستند.

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

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

از کد پراکنده تا مرزهای پایدار

  • ابتدا بر اساس زمینه دامنه سازمان‌دهی کنید و سپس لایه‌ها را جدا کنید.
  • پورت‌ها را کوچک و آداپتورها را باریک نگه دارید.
  • ورودی را در مرز اعتبارسنجی و از موجودیت دامنه جدا کنید.
  • وابستگی‌ها را در یک نقطه ترکیب و تزریق کنید.
  • هسته دامنه را با تست‌های واحد سریع پوشش دهید.
  • تراکنش را از طریق یک قرارداد در لایه کاربرد کنترل کنید.
  • قواعد واردکردن ماژول‌ها را با ابزار خودکار اجرا کنید.
  • از واردکردن فایل‌های خصوصی بسته‌ها به‌صورت مستقیم جلوگیری کنید.